[php] sessie variabelen willen niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een login bestandje, dit is hoe het was (werkte perfect):

session_register("name");
session_register("firstname");
$HTTP_SESSION_VARS["name"]= $name;
$HTTP_SESSION_VARS["firstname"]= $firstname;


met deze controle erop:


if (count($HTTP_SESSION_VARS) <= 0)
{session_unset();
session_destroy();
}

waarbij $name en $firstname uit een mysql tabel gehaald worden.


Nu kwam ik in de problemen wat later in de code (sessie variabelen werden automatisch verandert wanneer ik gegevens uit een tabel wou halen) en wou mijn sessie variabelen anders gaan noemen, dus veranderde ik het zo:

session_register("ses_name");
session_register("ses_firstname");
$HTTP_SESSION_VARS["ses_name"]= $name;
$HTTP_SESSION_VARS["ses_firstname"]= $firstname;


Maar nu bij die controle zegt hij dat er geen sessie variabelen opgeslaan zijn. Ik raak er niet aan waarom ze niet opgeslaan worden.

Acties:
  • 0 Henk 'm!

Verwijderd

Je zegt voordat je de sessie registreert wel dat $ses_name de naam bevat?
dus zoiets?
PHP:
1
2
$ses_name="bla";
session_register("ses_name");

Ik weet niet welke PHP je gebruikt, maar tegenwoordig heb je de variabele $_SESSION[], in plaats v an $HTTP_SESSION_VARS[].

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 17 februari 2003 @ 17:36:
Je zegt voordat je de sessie registreert wel dat $ses_name de naam bevat?
dus zoiets?
PHP:
1
2
$ses_name="bla";
session_register("ses_name");

Ik weet niet welke PHP je gebruikt, maar tegenwoordig heb je de variabele $_SESSION[], in plaats v an $HTTP_SESSION_VARS[].
De site staat voorlopig (om te testen) bij een gratis provider en die ondersteund de $_SESSION[] niet dus is het werken met de oude versie.

De $name en $firstname komen uit een tabel.


Moet de variabele $ses_name reeds bestaan voordat je een session_register("ses_name"); doet?
(Kan misschien een domme vraag zijn maar ik ben nog maar net begonnen met php)

Acties:
  • 0 Henk 'm!

Verwijderd

gebruik sowieso $_SESSION ipv $HTTP_SESSION_VARS
Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for improved security and code readablity
Ik vind je check ook vreemd, als er het aantal elementen in $HTTP_SESSION_VARS kleiner of gelijk aan is, dan delete je de session.

Op jouw manier zijn geloof ik de waarden pas bekend bij een refresh.
Gebruik $_SESSION! :)
PHP:
1
2
    $_SESSION["zim"] = "An invader from another planet.";
    print_r($_SESSION);


ok, die laatste post had ik nog niet gelezen, maar inderdaad zijn de waarden na session_register pas bekend op een volgende pagina (refresh).

[ Voor 19% gewijzigd door Verwijderd op 17-02-2003 17:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 17 februari 2003 @ 17:45:
gebruik sowieso $_SESSION ipv $HTTP_SESSION_VARS

[...]

Ik vind je check ook vreemd, als er het aantal elementen in $HTTP_SESSION_VARS kleiner of gelijk aan is, dan delete je de session.

Op jouw manier zijn geloof ik de waarden pas bekend bij een refresh.
Gebruik $_SESSION! :)
PHP:
1
2
    $_SESSION["zim"] = "An invader from another planet.";
    print_r($_SESSION);
Ik kan $_SESSION niet gebruiken, die server ondersteund dat niet.


Die controle wordt geladen op de andere pagina's.
De sessie variabelen worden meegestuurd en op de volgende pagina's wordt die controle dan ingeladen.

Acties:
  • 0 Henk 'm!

Verwijderd

En als je nou zoiets probeert:
PHP:
1
2
3
4
session_register("ses_name");
session_register("ses_firstname");
$ses_name = $name;
$ses_firstname = $firstname;


Weet je trouwens zeker dat $name en $firstname een valid value hebben?
En gebruik je session_start ook in de pagina waar je het uitleest?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 17 February 2003 @ 17:54:
En als je nou zoiets probeert:
PHP:
1
2
3
4
session_register("ses_name");
session_register("ses_firstname");
$ses_name = $name;
$ses_firstname = $firstname;


Weet je trouwens zeker dat $name en $firstname een valid value hebben?
En gebruik je session_start ook in de pagina waar je het uitleest?
Dit staat bovenaan iedere pagina die binnen de sessie gebruikt wordt:

session_name(sessie);
session_start();

De waarden in $name en $firstname zijn geldig, die worden gecontroleerd bij het inlezen uit de tabel

PHP:
1
2
3
4
$ses_name = $name;
$ses_firstname = $firstname;
session_register("ses_name");
session_register("ses_firstname");


Ik heb hetgeen uit je post even omgedraaid en het werkt correct. Het probleem was dus gewoon dat de variabelen die ik wou registreren in de sessie nog niet bestonden.

Bedankt iedereen voor de snelle reacties!
Pagina: 1