[php] Session_register werkt niet goed?

Pagina: 1
Acties:

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Alweer een sessie probleem?

jup... ;)

track_vars staat aan, en mijn sessie word goed opgestart, alleen lijkt het erop dat de variabele die ik in mijn sessie zet niets opslaat of retouneert.
PHP:
1
2
3
4
5
6
7
<?
        session_start();
        session_register("userid");
        print($HTTP_SESSION_VARS);
        print(session_id());
        print("$userid");
?>

Geeft bij de HTTP_SESSION_VARS alleen "array" terug als tekst, terwijl ie ie toch true (dus een 1?) zou moeten geven als goed geregistreerd is (ze zijn nog ongeboden, maar wel geregistreerd voor zover ik weet) :?

De sessie id kan ik wel goed uitlezen, en geeft ook het sessie id terug.

wat ik uiteindelijk wil bereiken is iets als
PHP:
1
2
3
4
5
6
7
<?
        session_start();
        session_register("userid");
        $sql2 = mysql_query("select bedrijfsnummer from klant where NOT (STRCMP(usernaam,'$PHP_AUTH_USER') OR STRCMP(password,'$controle1'))");
        $resultaat = mysql_fetch_array($sql2);
        $userid = $resultaat[0];
?>

om op deze manier het bedrijfsnummer uit mysql te halen en die in $userid zetten zodat ik die in de rest van de site kan gebruiken.

Wat zie ik over het hoofd/doe ik fout?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • Grum
  • Registratie: Juni 2001
  • Niet online
in $HTTP_SESSION_VARS staat (in PHP 4.0.7 en eerder) zit een array van waardes die in je sessie zitten. (dus niet een '1'/true als je sessie gestart is)

je kan mbv session_id() controleren of je sessie is gestart deze returned nl een session-id als je sessie gestart is.

Maar imho is het niet nodig om het uberhaubt te controleren, je kan gewoon session_start() aan roepen (of session_register (die roept zelf _start() aan als er nog geen session is) maar dat is niet zo elegant :) )

Vergeet btw niet om ELKE pagina waar jij sessions wil session_start() aan te roepen anders gaat het niet zo goed werken :)

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Op donderdag 10 januari 2002 11:23 schreef Grum_ het volgende:
in $HTTP_SESSION_VARS staat (in PHP 4.0.7 en eerder) zit een array van waardes die in je sessie zitten. (dus niet een '1'/true als je sessie gestart is)
print($HTTP_SESSION_VARS[0]); geeft echter geen waarde terug.
je kan mbv session_id() controleren of je sessie is gestart deze returned nl een session-id als je sessie gestart is.
Zoals je kon lezen retouneerde die de sessie id, dus de sessie wordt goed gestart. ;)
Maar imho is het niet nodig om het uberhaubt te controleren, je kan gewoon session_start() aan roepen (of session_register (die roept zelf _start() aan als er nog geen session is) maar dat is niet zo elegant :) )

Vergeet btw niet om ELKE pagina waar jij sessions wil session_start() aan te roepen anders gaat het niet zo goed werken :)
Ok, iig bedankt zo ver, maar hij slaat dus nog steeds geen waarde op (tenzij ik hem verkeerd uitlees :P)

edit:
[quote]
PHP Version 4.0.4pl1
[/quote]

:'(

Trouwens, zit ik me net te bedenken, jij zegt dat ik op elke pagina waar ik een sessie wil gebruiken een session_start moet geven, maar kan ik niet gewoon het bestaan van de sessie controleren met:

if ($HTTP_SESSION_VARS["userid"])

of moet ik voor ik dit ga doen eerst de sessie opnieuw starten met een session_start?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • Grum
  • Registratie: Juni 2001
  • Niet online
je weet neem ik aan dat een array niet perse 'numbered' moet zijn ? :)

je kan als 'keys' ook namen hebben
PHP:
1
2
3
<?
print '<pre>$HTTP_SESSION_VARS = '; print_r($HTTP_SESSION_VARS); print '</pre>';
?>

gebruik de bovenstaande code maar eens om te laten zien wat er precies inzit.

daarnaast hebben sessies de ranzige neiging (nooit goed getest dus kan het niet met zekerheid zeggen) om niet 'goed' te werken op dezelfde pagina .. dus je kan soms wel eens wat erin zetten mbv session_register en dan de var vullen en dan later op de page die var opvragen en dan blijkt dat het nog niet 'geupdate' is .. terwijl als je naar de volgende pagina springt (en je sessie netjes st art) dat het dan wel werkt, maaaaar dat is iets wat ik niet zeker weet :P (alleen wel eens heb ervaren)

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Op donderdag 10 januari 2002 11:35 schreef Grum_ iets wat Renegade straal vergeten was:
je weet neem ik aan dat een array niet perse 'numbered' moet zijn ? :)
|:( werk het meerendeel avn de tijd met genummerde arrays, straal vergeten.
$HTTP_SESSION_VARS = Array
(
[userid] => 57
)

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • Grum
  • Registratie: Juni 2001
  • Niet online
Op donderdag 10 januari 2002 11:29 schreef Renegade het volgende:

edit:

:'(

Trouwens, zit ik me net te bedenken, jij zegt dat ik op elke pagina waar ik een sessie wil gebruiken een session_start moet geven, maar kan ik niet gewoon het bestaan van de sessie controleren met:

if ($HTTP_SESSION_VARS["userid"])

of moet ik voor ik dit ga doen eerst de sessie opnieuw starten met een session_start?
tis gebruikelijk om een soort 'session.inc.php' oid te maken en daar bovenaan gewoon session_start() aan te roepen

de variabelen in $HTTP_SESSION_VARS bestaan als het goed is nog niet voor jij session_start() hebt aangeroepen. (test het zou ik zeggen :P )

maar nogmaals je MOET altijd session_start() doen .. je kan wel controleren of een variabele in de sessie zit met session_is_registered('variablenaam') .. die functie returned true als ie bestaat en false als ... :P ... :P

edit:

4.0.4pl1 is een goede php hoor :)
als het kan zou ik overstappen naar 4.0.6 of 4.1.1 als het kan :)

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Op donderdag 10 januari 2002 11:38 schreef Grum_ het volgende:

[..]

tis gebruikelijk om een soort 'session.inc.php' oid te maken en daar bovenaan gewoon session_start() aan te roepen

de variabelen in $HTTP_SESSION_VARS bestaan als het goed is nog niet voor jij session_start() hebt aangeroepen. (test het zou ik zeggen :P )
:)
edit:

4.0.4pl1 is een goede php hoor :)
als het kan zou ik overstappen naar 4.0.6 of 4.1.1 als het kan :)
hmmm, back to the compiler it is then :P ;)

Maar kan ik nu zoiets doen als:

$HTTP_SESSION_VARS["userid[0]"] = $resultaat[0];

:?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • Grum
  • Registratie: Juni 2001
  • Niet online
dat kan .. maar WEL eerst session_start() doen he ! :P

daarnaast kan je als je trackvars/gpc_order aanhebt/goedstaat gewoon de non-HTTP_SESSION_VARS variabele gebruiken

  • Renegade
  • Registratie: December 2000
  • Laatst online: 14-10-2020
Op donderdag 10 januari 2002 11:50 schreef Grum_ het volgende:
dat kan .. maar WEL eerst session_start() doen he ! :P
Ja, dat zit er nu wel redelijk in ;)
daarnaast kan je als je trackvars/gpc_order aanhebt/goedstaat gewoon de non-HTTP_SESSION_VARS variabele gebruiken
euh :?

iig het werkt nu :D

ik heb de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
<?
        session_start();
        session_register("userid");
        $select = mysql_query("select bedrijfsnummer from klant where NOT (STRCMP(usernaam,'$PHP_AUTH_USER') OR STRCMP(password,'$controle1'))");
        $resultaat = mysql_fetch_array($select);
        $HTTP_SESSION_VARS["userid[0]"] = $resultaat[0];
        header("Location: user_gedeelte.php");
        exit;
?>

en op andere pagina's kijk ik nu met
PHP:
1
2
3
4
5
<?
session_start();
  if (!$HTTP_SESSION_VARS["userid"]) {
  etc...
?>

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
@BasRaayman op twitter


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Renegade:
Maar kan ik nu zoiets doen als:

$HTTP_SESSION_VARS["userid[0]"] = $resultaat[0];

:?
Dat zou ik je afraden. $HTTP_SESSION_VARS is een array om uit te lezen, en verder niet om mee te werken.

gebruik gewoon $userid als array, want als je hem eenmaal geregistreerd hebt, kan je die var veranderen wat je wilt, en dan verandert $HTTP_SESSION_VARS automagisch mee ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1