[PHP] Session-vars werken niet correct

Pagina: 1
Acties:

  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Ik heb een probleem met mijn PHP-script, het is een cms- annex ledensysteem, waarmee het dus mogelijk is een webpagina online te wijzigen d.m.v. een db.

Nu doet het probleem zich voor dat ik de session-variabelen niet meer kan benaderen in de rest van het script. In het begin geeft ie gewoon netjes een pagina weer en als ik op F5/vernieuwen druk doet ie niets meer.

Hier volgt de programmacode:

index.php (hoofdscript)
PHP:
1
<?/*commentaar onzin*/session_start();$acms_sess=session_id();session_register('sUserid');session_register('sUsername');session_register('sPassword');session_register('sUserrank');session_register('sRealname');session_register('sLoggedIn');// Includesrequire("../sources/db.php");// Main scriptif(!$cmd &amp;&amp; !$pg &amp;&amp; !$page &amp;&amp; !$sLoggedIn) {    if($sLoggedIn &amp;&amp; $acms_sess &amp;&amp; $acms_sess==$sLoggedIn) {        echo("<script>window.location=\"index.php?cmd=admindex\"</script>");    }    if(!$sLoggedIn) {        //header("Location: ../index.php");    }}if($cmd=="login") {    if($sLoggedIn &amp;&amp; $acms_sess &amp;&amp; $sLoggedIn==$acms_sess) {        echo("<script>window.location=\"index.php?cmd=admindex\"</script>");    }    if(!$username &amp;&amp; !$password &amp;&amp; !$sLoggedIn) {        // Insert login page        require("./sources/forms/login.frm.php");    }    if($username &amp;&amp; $password &amp;&amp; !$sLoggedIn) {        // Verify login information        $username=$username;        $passenc=md5($password);        $link=db_connect();        $sql="select * from auth_users where user_name='$username'";        $resultaat=db_query($sql,$link);        while(($obj_usr=mysql_fetch_object($resultaat))) {            // Process results            if($obj_usr->user_pwd==$passenc) {                $sUserid=$obj_usr->user_id;                $sUsername=$obj_usr->user_name;                $sPassword=$obj_usr->user_pwd;                $sUserrank=$obj_usr->user_rank;                $sRealname=$obj_usr->user_rlname;                $sLoggedIn=$acms_sess;                echo("<script>window.location=\"index.php?cmd=admindex\"</script>");            }        }    }}if($acms_sess==$sLoggedIn) {    if($cmd=="admindex") {        // Display main site        ?>        <html>        ...        <html>        <?php    }    if($cmd=="admwelcome") {        echo("Welcome page");    }    if($cmd=="admmenu") {        echo("Admin menu");    }}?>

Ik hoop dat iemand mij hiermee kan helpen en dat ik voldoende informatie heb gegeven.

Bij voorbaat dank.

edit by chem: dan doe ik het wel even voor je.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

kan je ff die shitload aan code weghalen en samenvatten tot waar het om gaat?

Klaar voor een nieuwe uitdaging.


  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Dit is het gedeelte waar het om gaat, aangezien het hier gaat om de totale werking van de code.

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Op dinsdag 23 april 2002 18:24 schreef snoopy het volgende:
Dit is het gedeelte waar het om gaat, aangezien het hier gaat om de totale werking van de code.
Klets geen onzin...

Rustacean


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Begin ns met leuke var_dump()jes van je sessie vars op achttien plaatsen, dan zie je vanzelf waar het fout gaat.

Rustacean


  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Var dumpjes heb ik al uitgevoerd, hij onthoudt het netjes wanneer die de pagina voor de 1e keer laadt, maar als ik op refresh druk geeft ie geen resultaat meer.

Maar als ik aan het begin een var dump maak dan geeft ie de frameset niet weer maar dan blijft bij refresh de waarde wel behouden. Het gaat dus fout bij die frameset ergens, maar hoe?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Kijk maar eens naar de werking van sessions in de manual..

Daarnaast raad ik je aan om NIET met globals en trackvars aan te werken, maar gewoon gebruik te maken van $HTTP_SESSION_VARS / $_SESSION. Dat zal waarschijnlijk al veel problemen oplossen. session_register doet niet altijd wat je verwacht dat het zou doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 09-09 13:30
Wij hebben hier ook problemen gehad met sessies. 4.0.6 deed het prima met $HTTP_SESSION_VARS maar dus geheel niet met de session_register(''). 4.1.x doet het dus weer uitstekend met $_SESSION, maar dat werkt natuurlijk voor geen meter bij 4.0.6 of lager. $HTTP_SESSION_VARS werkte redelijk bij 4.1.x zolang we geen $_SESSION gebruikte of session_register('').

Moraal van het verhaal: welke versie php?

  • Grum
  • Registratie: Juni 2001
  • Niet online
Het is ook niet de bedoeling dat je elke week je php versie omgooit :)

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 09-09 13:30
Op woensdag 24 april 2002 10:46 schreef Grum het volgende:
Het is ook niet de bedoeling dat je elke week je php versie omgooit :)
LOL! Nee, dat was ook niet de bedoeling, maar we zitten hier met een testserver, productie server en de gewone desktops waarop we development doen. En als al die versies niet lekker met elkaar overeen komen krijg je dit soort dingen... :9

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

code:
1
2
3
4
5
6
session_register('sUserid');
session_register('sUsername');
session_register('sPassword');
session_register('sUserrank');
session_register('sRealname');
session_register('sLoggedIn');

Waar komen die variabelen vandaan dan? Misschien dat het daar gewoon mis gaat?

  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Hoe bedoel je, waar komen ze vandaan? Ik snap het niet helemaal :'(

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Op woensdag 24 april 2002 17:23 schreef snoopy het volgende:
Hoe bedoel je, waar komen ze vandaan? Ik snap het niet helemaal :'(
Dat is het punt waarvan ik ook denk dat het eventueel mis gaat...
Als je geen gebruik wenst te maken van de verschillende session arrays (zoals eerder vermeld) moet je je vars eigenlijk alleen registreren op het moment dat je ze set (bv bij het inloggen zelf)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
Op woensdag 24 april 2002 11:44 schreef Banpei het volgende:
LOL! Nee, dat was ook niet de bedoeling, maar we zitten hier met een testserver, productie server en de gewone desktops waarop we development doen. En als al die versies niet lekker met elkaar overeen komen krijg je dit soort dingen... :9
Er zat een bug in 4.1.2 waardoor sessionvars assignen met $_SESSION niet lukte. Het beste is 4.2.0 gebruiken :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
code:
1
2
3
4
5
6
session_register('sUserid');
session_register('sUsername');
session_register('sPassword');
session_register('sUserrank');
session_register('sRealname');
session_register('sLoggedIn');

Dit werkt alleen als de betreffende vars (bv $sUserId) al bestaan ... best logisch .. en bovendien gedocumenteerd ;)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op dinsdag 23 april 2002 18:24 schreef snoopy het volgende:
Dit is het gedeelte waar het om gaat, aangezien het hier gaat om de totale werking van de code.
ok, dan doe je het niet en doe ik het wel voor je.

Klaar voor een nieuwe uitdaging.


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
Op woensdag 24 april 2002 17:39 schreef chem het volgende:
ok, dan doe je het niet en doe ik het wel voor je.
:D
Pagina: 1