ugrás a tartalomhoz

Php session - változó nem regisztrálódik

Atya · 2004. Már. 4. (Cs), 20.11
Szevasztok. Csak azért nyitottam új témát, mert azért van a fórum, hogy keressünk benne. Ez lehetetlen, ha mindent egy témába sűrítünk. Tehát a problémám. Itt ez a kód:(a kód asszem nem lesz formázva...)
  1. <?  
  2. class user {  
  3.    FUNCTION user() {  
  4.       global $logout;  
  5.       IF (isset($logout)) {  
  6.          $this->logout();  
  7.          exit();  
  8.       }  
  9.    }  
  10.    FUNCTION login() {  
  11.       global $uLogin$name$pass;  
  12.       IF ($uLogin) {  
  13.          $query="SELECT * FROM users WHERE name='$name' AND pass='$pass'";  
  14.          $data=mysql_query($query);  
  15.          $details=mysql_fetch_object($data);  
  16.          IF ($details==FALSE) {   
  17.             Echo "Hibás felhasználónév || jelszó";  
  18.          } else {  
  19.             global $loginName;  
  20.             $loginName=$name;  
  21.             session_register("loginName");  
  22.             Echo "belépve ";  
  23.          }  
  24.       }  
  25.       IF (($_SESSION[loginName]) && (!$uLogin)) {  
  26.          Echo "már beléptél - <a href='index.php?insider=users&logout=1'>Kilépek</a>";  
  27.       }  
  28.       IF ((!$uLogin) && (!$_SESSION[loginName])) {  
  29.          $this->loginpage();  
  30.          exit();  
  31.       }  
  32.    }  
  33.    FUNCTION loginpage() {  
  34.       ?>  
  35.       <form action="index.php" method="GET">  
  36.       Login név: <input type="text" name="name"><br>  
  37.       Jelszó: <input type="text" name="pass"><p>  
  38.       <input type="hidden" name="insider" value="users">  
  39.       <input type="submit" name="uLogin" value="Belép">  
  40.       </form>  
  41.       <?  
  42.    }  
  43.    FUNCTION logout() {  
  44.       session_unregister("loginName");  
  45.       Echo "kilépve";  
  46.    }  
  47. }  
  48. $temp = new user();  
  49. $temp->login();  
A probléma:
Ez a kód elméletileg működik. Működött is szombaton. Kikapcsoltam a gépet. Reggel indítom, mondom na még egy próbát. Azt hittem, leesek a szélről, mikor nem ment. Egész nap szenvedtem vele, mikor megint ment. Kiléptem az összes szerkesztőből, majd újra megcsináltam a belépést. Ment is. Kiléptem az operából, újraindítottam, és megint nem ment. Azóta nem tudtam életre csalni. De a kódon nem változtattam. Elképzelésem sincs, mi a probléma.

JA: session_start() a main.php-ban van.
index.php:
require_once("main.php");

main.php:
session_start();

Ezek itt a fájlok első sora
:D
 
1

Re: Php session - változó nem regisztrálódik

pappi · 2004. Már. 11. (Cs), 12.53
megnézem a kódodat, de ha ez egy authentikációs objektum akkor sírva kérdezem miért nem használsz egy már megírtat?
(http://pear.php.net/manual/hu/package.authentication.php)
2

Re: Php session - változó nem regisztrálódik

pappi · 2004. Már. 11. (Cs), 13.29
A jó hír, hogy nálam megy a kódod ... :))
Ezen amúgy nagyon csodálkozom, mert borzalmasan gyenge a kód ... ezt most nem bántásnak szánom, nem tudom mit akarsz ezzel authentikálni, vagy csak gyakorlásból csinálod, de éles helyre ebben a formában ne tedd ki ...
post-olt, get-elt változókat superglobals tömbökön keresztül használd sokkal biztonságosabb (_POST, _GET, _REQUEST, _SESSION) ... a függvényeknek, metódusoknak lehet megadni paramétert, ettől csak használhatóbbak lesznek, a global kulcsszót felejtsd el csak érthetetlenné teszi a kódot, a GLOBALS tömbön keresztül minden globális változó elérhető ... ha az error_reporting-ban az E_NOTICE be lenne nálad is kapcsolva látnád az összes olyan szintaktikai hibát is, amit a php parser automatikusan felold (csak éppen kérdés, hogy minek terheljük vele a parsert, ha ki lehet ezt javítani a kódban is?) ilyen pl: az asszociatív tömb kulcsát idézőjelbe kell tenni, hiszen az egy string ... idézőjel nélkül a parser azt hiszi konstans ... de mivel ilyen nevű konstans nincs ezért stringnek veszi ...
szerintem logikailag is fel lehetne jobban (átláthatóbban) építeni a kódot ...

remélem tényleg nem veszed bántásnak, elsősorban tanácsokat próbáltam adni.
üdv.: imr.