[php] sessie leeg na require

Pagina: 1
Acties:

  • MadMurdock
  • Registratie: Oktober 2000
  • Niet online
hoi,
ik ben bezig met een inlogsysteempje, wat gaat controleren of de ingebrachte gegevens kloppen via een ander php script.

In de login.php staat o.a. dit:
PHP:
1
2
3
4
5
6
<?
session_start();
session_register("username", "password");
require "functions.php";
list($username,$login)=getuser();
?>

en in de functions.php dit:
PHP:
1
2
3
4
5
6
7
<?
session_start();
function getuser() {
  echo "Functions.php wordt uitgevoerd. Username = $username en password = $password";
return array($username,$login);
}
?>

Het probleem treedt echter gelijk al op. De $username en $password in de echo zijn nl gelijk al leeg.
Hier kan ik dus verder ook niks geen vergelijkingen mee uitvoeren. Heeft iemand enig idee hoe dat komt?

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 05 februari 2002 17:18 schreef MadMurdock het volgende:
Het probleem treedt echter gelijk al op. De $username en $password in de echo zijn nl gelijk al leeg.
Hier kan ik dus verder ook niks geen vergelijkingen mee uitvoeren. Heeft iemand enig idee hoe dat komt?
De functies hebben een eigen variabele scope. Dat wil zeggen dat ze alleen variabelen binnen die functie kunnen gebruiken. Om variabelen te importeren moet je ze meegeven als functie-argument (en geen global gebruiken!)

  • MadMurdock
  • Registratie: Oktober 2000
  • Niet online
ik heb van :
list($login)=getuser();

nu dit gemaakt:
list($login)=getuser("$username","$password");

alleen hij blijft hetzelfde (niet) doen. Kan de function getuser() wel zo blijven?

  • Grum
  • Registratie: Juni 2001
  • Niet online
session_start() creates a session (or resumes the current one based on the session id being passed via a GET variable or a cookie).

dat jij 2x session_start() doet kan dus een probleem opleveren

andere mogelijkheid .. je hebt de variabelen niet geset dus dan zijn ze der ook niet

en nog een mogelijkheid is dat als jij de variabelen nog niet geset hebt (en ook nog niet van page geswitched bent (dus dat ze ook echt als session vars worden geladen)) dat ze dan niet global zijn (zijn ze dat uberhaubt wel?) en dan mag je ze fijn met global $username, $password; in je functie 'global' maken voor je ze gebruikt :P

[edit: en liever zelfs gewoon meegeven met de functie call :P [/edit]

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 05 februari 2002 17:27 schreef MadMurdock het volgende:
ik heb van :
list($login)=getuser();

nu dit gemaakt:
list($login)=getuser("$username","$password");

alleen hij blijft hetzelfde (niet) doen. Kan de function getuser() wel zo blijven?
De definitie van getuser() moet wel veranderd worden! dus het wordt iets als:
PHP:
1
2
3
4
5
6
<?
function getuser($username, ...)
{
    ...
}
?>

  • MadMurdock
  • Registratie: Oktober 2000
  • Niet online
Op dinsdag 05 februari 2002 17:30 schreef elnino het volgende:
De definitie van getuser() moet wel veranderd worden! dus het wordt iets als:

[...]
Dat was het inderdaad! Bedankt hè!

  • BaggerDeBagger
  • Registratie: Februari 2002
  • Laatst online: 18:54
Als je in include files voor sessie-variabelen gewoon session_start(); en $_SESSION['naam'] gebruikt, dan doet ie het gewoon. ;)

Voor PHP-documentatie kun je beter kijken op www.zend.com, www.php.net is een beetje traag met documentatie :(
Pagina: 1