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...)

<?
class user {
   FUNCTION user() {
      global $logout;
      IF (isset($logout)) {
         $this->logout();
         exit();
      }
   }
   FUNCTION login() {
      global $uLogin, $name, $pass;
      IF ($uLogin) {
         $query="SELECT * FROM users WHERE name='$name' AND pass='$pass'";
         $data=mysql_query($query);
         $details=mysql_fetch_object($data);
         IF ($details==FALSE) { 
            Echo "Hibás felhasználónév || jelszó";
         } else {
            global $loginName;
            $loginName=$name;
            session_register("loginName");
            Echo "belépve ";
         }
      }
      IF (($_SESSION[loginName]) && (!$uLogin)) {
         Echo "már beléptél - <a href='index.php?insider=users&logout=1'>Kilépek</a>";
      }
      IF ((!$uLogin) && (!$_SESSION[loginName])) {
         $this->loginpage();
         exit();
      }
   }
   FUNCTION loginpage() {
      ?>
      <form action="index.php" method="GET">
      Login név: <input type="text" name="name"><br>
      Jelszó: <input type="text" name="pass"><p>
      <input type="hidden" name="insider" value="users">
      <input type="submit" name="uLogin" value="Belép">
      </form>
      <?
   }
   FUNCTION logout() {
      session_unregister("loginName");
      Echo "kilépve";
   }
}
$temp = new user();
$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.