[php] sessie in een functie *

Pagina: 1
Acties:

  • Intru
  • Registratie: November 2001
  • Laatst online: 25-08 20:50
Ik heb nu deze functie gemaakt om iemand met sessies te laten inloggen:
PHP:
1
<?function login($username, $password) {session_start();$check = mysql_query("SELECT * FROM user WHERE username = '$username' AND password = '$password'");$userdata = mysql_fetch_array($check);if (IsSet($userdata[username]))  {  echo "ingelogd<br>";  session_register("userdata");  return($userdata);  echo "$userdata[username] $userdata[lvl] $userdata[email] <br>";  }else  {  die("username en password kloppen niet!");  }}?>

als ik nou deze functie aanroep met een goede username + password, echo'd hij wel "ingelogdM<br>" maar niet "$userdata[username] $userdata[lvl] $userdata[email] <br>"

iemand die weet hoe dit komt?

  • Grum
  • Registratie: Juni 2001
  • Niet online
misschien zou et iets te maken kunnen hebben met de return statement >:)

  • Intru
  • Registratie: November 2001
  • Laatst online: 25-08 20:50
mjah, maar, ik wil deze gegevens ook buiten de functie kunnen gebruiken, dus nadat ik die login(); heb gedaan, dat ik dan $userdata[username] kan echo'en

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 11:02
Je kunt op deze manier trouwens geen sessievariabele registreren. Zie de manual over session_register.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 11:02
Op woensdag 08 mei 2002 13:55 schreef Intru het volgende:
mjah, maar, ik wil deze gegevens ook buiten de functie kunnen gebruiken, dus nadat ik die login(); heb gedaan, dat ik dan $userdata[username] kan echo'en
http://www.php.net/manual/en/function.return.php

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

sessie vars moeten globale vars zijn.
Of je kan de $_SESSION/$HTTP_SESSION_VARS gebruiken, wat Soultaker dus al noemde.

Overigens moet je natuurlijk niet sessies gebruiken om binnen een enkele php-page variabelen door te geven ;)

  • Intru
  • Registratie: November 2001
  • Laatst online: 25-08 20:50
Nu heb ik weer een nieuw probleempje:)

ik heb nu een functie om te kijken of iemand is ingelogd, en of het niet gefaked is:
PHP:
1
<?function check() {session_start();if (IsSet($_SESSION['userdata[username]']))  {  echo "Er is een username<br>";  $username = $_SESSION['userdata[username]'];  $password = $_SESSION['userdata[password]'];  $check = mysql_query("SELECT * FROM user WHERE username = '$username' AND password = '$password'");  if (mysql_num_rows($check) != 1)    {    die("boefje!");    }  else    {    echo "Ingelogd!!<br>";    }  }else   {  session_destroy();  }}?>

maar bij if (IsSet($_SESSION['userdata[username]'])) komt er altijd false uit, terwijl ik als ik buiten deze functie om doe:
PHP:
1
<?session_start();echo $userdata[username];?>

dan doet ie het wel

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

wat levert echo "$_SESSION['userdata[username]'"; dan op??.......

Doet iets met Cloud (MS/IBM)


  • Grum
  • Registratie: Juni 2001
  • Niet online
et goede antwoord ;)

  • Intru
  • Registratie: November 2001
  • Laatst online: 25-08 20:50
Op woensdag 08 mei 2002 17:15 schreef D2k het volgende:
wat levert echo "$_SESSION['userdata[username]'"; dan op??.......
denk dat je $_SESSION['userdata[username]'] bedoelt.

als ik dat doe in de functie, echo'd hij gewoon nix...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ik wil niet flauw doen...
maar $_SESSION['userdata'] = $userdata
levert imho op:
$_SESSION['userdata']['username'] == $userdata['username'] ...

En niet dat wat jij probeert.

[edit]
Maar ik denk niet dat dat jouw probleem is

  • Intru
  • Registratie: November 2001
  • Laatst online: 25-08 20:50
mjah, dat maakt nix uit, maar weet je dan hoe het WEL moet?

  • Hydra
  • Registratie: September 2000
  • Laatst online: 26-04 10:16
Op woensdag 08 mei 2002 17:20 schreef Intru het volgende:

[..]

denk dat je $_SESSION['userdata[username]'] bedoelt.

als ik dat doe in de functie, echo'd hij gewoon nix...
Is $_SESSION global?

https://niels.nu


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op woensdag 08 mei 2002 17:23 schreef Intru het volgende:
mjah, dat maakt nix uit, maar weet je dan hoe het WEL moet?
Ik denk dat dat wel degelijk uitmaakt.

Doe voor de grap es: print_r($_SESSION);
Op woensdag 08 mei 2002 17:23 schreef Hydra het volgende:
Is $_SESSION global?
Natuurlijk is die global!!
Als er iig gebruik wordt gemaakt van php >= php-4.1.0

  • Hydra
  • Registratie: September 2000
  • Laatst online: 26-04 10:16
Op woensdag 08 mei 2002 17:28 schreef ACM het volgende:
Natuurlijk is die global!!
En natuurlijk bedoel ik of die global gemaakt is binnen de functie, zie namelijk geen global statement.

https://niels.nu


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op woensdag 08 mei 2002 17:29 schreef Hydra het volgende:
En natuurlijk bedoel ik of die global gemaakt is binnen de functie, zie namelijk geen global statement.
En dat bedoel ik ook ;)

DAT is iig de bedoeling van die $_SESSION volgens php's manual/changelog/etc.
Daar is geen global statement voor nodig.

  • Intru
  • Registratie: November 2001
  • Laatst online: 25-08 20:50
Array ( [userdata] => Array ( [0] => 5 [id] => 5 [1] => test [username] => test [2] => blaat [password] => blaat [3] => test@test [email] => test@test [4] => 10 [lvl] => 10 [5] => 2d41b60214b2fc6f2e2647e8d6816cac [md5pass] => 2d41b60214b2fc6f2e2647e8d6816cac ) )

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Boven versie 4.1 zijn er een aantal variablen SUPER Global

$_SESSION
$_GET
$_POST
$_SERVER
$_ENV
$_COOKIE
$_FILES

Deze variablen hoeven niet globaal gedefineerd te worden

Programmer - an organism that turns coffee into software.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op woensdag 08 mei 2002 17:32 schreef Intru het volgende:
Array ( [userdata] => Array ( [0] => 5 [id] => 5 [1] => test [username] => test [2] => blaat [password] => blaat [3] => test@test [email] => test@test [4] => 10 [lvl] => 10 [5] => 2d41b60214b2fc6f2e2647e8d6816cac [md5pass] => 2d41b60214b2fc6f2e2647e8d6816cac ) )
Nou, wat zei ik, een paar regels omhoog??

  • Hydra
  • Registratie: September 2000
  • Laatst online: 26-04 10:16
Op woensdag 08 mei 2002 17:33 schreef LuCarD het volgende:
Boven versie 4.1 zijn er een aantal variablen SUPER Global
Ah, dat wist ik niet. Thanks.

https://niels.nu


  • Intru
  • Registratie: November 2001
  • Laatst online: 25-08 20:50
Op woensdag 08 mei 2002 17:34 schreef ACM het volgende:

[..]

Nou, wat zei ik, een paar regels omhoog??
mjah, maar ik snap nog niet hoe ik het nou moet fixen |:(
Pagina: 1