[PHP] Session variabelen via url

Pagina: 1
Acties:

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Ik heb 2 pagina's waarin ik PHP gebruik. In de eerste staat er iets versimpeld dit:
code:
1
2
3
4
5
<?
session_start();
$_SESSION['id'];
echo "<a href='./pagina2.php?id=$row[message_id]'>pagina2</a>";
?>

En in de tweede wil ik dus gebruik maken van die variabele id:
code:
1
2
3
4
<?
session_start();
echo "$_SESSION[id]";
?>

Als ik echter op pagina2 kom, is de output altijd 0. Het heeft niets met quootjes te maken, die heb ik overal al tussen gehad. Ook het punt waarop ik id opgeef als sessievariabele maakt niet uit in deze.

Als ik het goed gelezen heb op php.net hoef ik verder niets te doen om het werkende te krijgen, zoals bij eerdere versies register globals aanzetten. Dat is niet nodig. Mijn vraag is dus: kan ik op deze manier (via de URL) variabelen een waarde geven... en uiteraard of deze code zo dan wel een beetje klopt :)

Ik vind het wazig dat ik bij het opgeven van een sessievariabele WEL 'id' moet gebruiken (anders error) en bij het opvragen niet (anders ook error). Ook moet er geen $ voor, ook dat levert een foutmelding :?

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Verwijderd

PHP:
1
2
3
4
5
6
7
<?
session_start();
echo "$_SESSION[id]";
// nee zo doen we dat niet, dit is beter:
session_start();
echo $_SESSION['id'];
?>


Kijk maar even op php.net, daar staat een artikel hierover (quotjes).

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 19:27
wat je met

PHP:
1
2
3
4
<?
session_start();
$_SESSION['id'];
?>


wil doen weet ik niet, maar erg veel bijzonders gebeurt er niet mee...
omdat je die ID geen warade geeft, zal hij dus ook 0 return geven

Sometimes you need to plan for coincidence


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Ik heb zo veel mogelijk op php.net doorgelezen, maar daar hebben ze het in veel gevallen over $HTTP_SESSION_VARS, waarvoor je register globals nodig hebt... en die wil ik nu juist uit hebben.

met $_SESSION['id'] wil ik opgeven dat de variabele id een sessievariabele is. Ook als ik deze onder het statement ./pagina2.php?id=$row[message_id] neerzet blijft hij 0 returnen, ook al geef ik met de url een waarde aan id.

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Verwijderd

Haal je niet QueryString- en Sessie-variabelen door elkaar :?

Verwijderd

Als je een sessie variabele wil setten (dus voor de eerste keer) zal je de functie session_register moeten gebruiken.
PHP:
1
2
3
session_start(); 
$_SESSION['id'];
// nu is je sessie var uiteraard leeg

maar ik denk dat je je sessie variabele helemaal niet registreerd!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 19:27
oftewel: try
PHP:
1
session_register('id');


en je kan hem overal gebruiken waar je wil

Sometimes you need to plan for coincidence


Verwijderd

Groentenboer schreef op 30 oktober 2002 @ 21:19:
oftewel: try
PHP:
1
session_register('id');


en je kan hem overal gebruiken waar je wil
voordat je :
PHP:
1
session_register('id');

doet moet je $id wel vullen!!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 19:27
uiteraard... maar ik ging ervanuit dat dat al gebeurde :)

oeps dus :)

Sometimes you need to plan for coincidence


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Als je op php.net het stuk over sessies openslaat staat er dat je session_register() e.d. niet meer hoeft te gebruiken als je $_SESSION gebruikt. Dit omdat je daar register globals voor nodig hebt, welke een veligheidsrisico met zich meebrengen. Ik wil dus alles op de 'nieuwe' manier doen...

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 19:27
ik heb het even nagelezen, maar je mag even lekker zelf opnieuw gaan lezen.

kan je wel even helpen: http://nl.php.net/manual/nl/ref.session.php , en dan vooral het stukje net onder voorbeeld 3:
Since PHP must know which global variables are registered as session variables, users need to register variables with session_register() function. You can avoid this by simply setting entries in $_SESSION.

If you are using $_SESSION and disable register_globals, do not use session_register(), session_is_registered() and session_unregister(), if your scripts shall work in PHP 4.2 and earlier. You can use these functions in 4.3 and later.

Sometimes you need to plan for coincidence


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
oww :) heh ik had er inderdaad overheen gelezen.. laatste zin: 'You can use these functions in 4.3 and later.' Dat gaan we dan maar eens proberen... bedankt voor de boekenlegger :P

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Jammergenoeg maakt het niet uit... werkt nog steeds niet... blijft vrolijk 0.
Ik heb ook $id=0; toegevoegd om er in ieder geval een waarde aan te geven. Ook ipv id=x heb ik $id=x neergezet in de URL, ook dat mocht niet baten, aangezien hij dan begint over een onbekende variabele ook al staat $id=0; bovenaan.

Als ik het goed begrepen heb hoef ik alleen na de session_start(); een session_register(id); te geven, waarna ik $id kan gebruiken in alle pagina's waar ik session_start(); geef... dat wil dus niet.

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Het is inmiddels gelukt, maar niet via een sessie. Ik gebruik id nu gewoon als POST variabele, die ik op de tweede pagina met $_GET['id'] kan ophalen. Dat werkt tot zover helemaal goed, al denk ik dat ik wat verder in het coden wel sessies nodig ga hebben :)

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
Kaastosti schreef op 31 oktober 2002 @ 02:34:
Het is inmiddels gelukt, maar niet via een sessie. Ik gebruik id nu gewoon als POST variabele, die ik op de tweede pagina met $_GET['id'] kan ophalen. Dat werkt tot zover helemaal goed, al denk ik dat ik wat verder in het coden wel sessies nodig ga hebben :)
als je het kan ophalen met $_GET['id'] is het een get-variabele, geen POST.
verder is het verschil tussen sessies en get-variabelen: bij get worden de waarden gewoon met de url meegegeven; bij sessies worden waarden op de server opgeslagen (standaard in een tijdelijk bestand, maar kan ook in een database) en geeft de client alleen zijn sessie-id mee (in een cookie of een get-variabele).
welke je nodig hebt hangt van de situatie af.

Pas de replâtrage, la structure est pourrie.


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
Ik wilde het eigenlijk allemaal met sessies doen, aangezien het een stuk makkelijker is en uiteindelijk mooiere coding opleverd. Maar zoals je in bovenstaande posts ziet werkte het niet echt vrolijk... daarom nu maar op deze manier.

Alles werkt nu, alleen moet ik nog erg veel php gebruiken waar ik html zou willen hebben. Op een of andere manier onthoudt ie die GET maar 1 stukje en op het moment dat ik een stukje php met ?> afsluit, kan ik 'm in een volgende stukje niet meer gebruiken. Undefined variable id on line blahdiblah..

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Verwijderd

naja, ik snap er helemaal niets van.

Sessies:
PHP:
1
2
3
4
5
6
7
8
9
10
11
// we gaan de sessie var 'id' maken:
session_start();
$id = 15;
session_register( 'id' );

// vanaf nu kun je hem in alle pagina's binnen die browser opvragen
$id = $_SESSION[ 'id' ];
// of
$id = $HTTP_SESSION_VARS[ 'id' ]; // voor oudere php versies

echo $id; // zal 15 weergeven

En dat GET probleem is me helemaal een raadsel.

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 22-08 10:27

Kaastosti

Vrolijkheid alom!

Topicstarter
ik zal het allemaal eens proberen :)
bedankt voor de hulp!

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.

Pagina: 1