/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
En lille bunke spørgsmål om sessions.
Fra : Michael Jensen


Dato : 21-03-01 20:58

Hejsa

Jeg er ved at bikse en lille klasse sammen som udnytter php's sessions. På
en ganske normal side (uden for funktioner og classer) kan jeg ved hjælp af
funktionen session_id() få fat i brugerens PHPSESSID hvorfor kan jeg ikke
det inde i en klasse.

$id = session_id(); // her virker det
class session{
function session(){
$id = session_id(); // her virker det ikke
}
}

http://www.dk.php.net/manual/en/html/ref.session.html refererer de til et
array $HTTP_SESSION_VARS som skulle indeholde sessionvariablerne. Men hvis
jeg f.eks. har kørt

session_start();
session_register("sess_name");

og prøver at bruge $HTTP_SESSION_VARS["sess_name"] så finder den ingenting
hvorimod jeg bare kan nøjes med $sess_name. Burde den ikke også være i
arrayet så??? (Så man f.x. kunne kalde dem derigennem fra en funktion)

http://www.ogj.dk/class.session.phps kan I se en simpel udgave af
klassen.

På hver side bliver der kaldt $session = new session; og det går fint nok
med at den husker session variablerne som bliver sat i starten. Hvis jeg så
f.x. på en side gerne vil logge ind bliver indholdet sendt til en side som
kalder $session->login("username","password"); Her får jeg så returneret en
sand funktion, hvilket også må betyde at den har sat $sess_uid =1 og
$sess_level = 8 hvor de før begge var 0, og da jeg inde fra funktionen har
gjort den globale. Men ude på siden er de stadig 0;
Hvis man ikke tidligere har sat værdien kan man godt skrive til den. (se
koden)

Hvor når kan man ændre på sine session variable ? før/ efter
session_register(); ???
--
Hilsen Michael



 
 
Thomas L. Kjeldsen (21-03-2001)
Kommentar
Fra : Thomas L. Kjeldsen


Dato : 21-03-01 22:59

In article <99b12a$mgu$1@sunsite.dk>, Michael Jensen wrote:
>
>Jeg er ved at bikse en lille klasse sammen som udnytter php's sessions. På
>en ganske normal side (uden for funktioner og classer) kan jeg ved hjælp af
>funktionen session_id() få fat i brugerens PHPSESSID hvorfor kan jeg ikke
>det inde i en klasse.

(snip)

>på http://www.ogj.dk/class.session.phps kan I se en simpel udgave af
>klassen.

Din login-metode er defekt.

function login($user,$pass) {
global $sess_uid,$sess_level,$sess_login;
if ($this->checkUserPass($user,$pass)) {
$sess_uid == 1; // Denne bliver ikke ændret
$sess_level == 8; // denne bliver heller ikke ændret
$sess_login = "Juhu"; // denne bliver ændret og den eneste forskel er
// at denne variable har ikke tidlige haft nogen
// værdi. Hvor kan man ikke ændre de andre ???
session_register("sess_uid","sess_level");
return true;
}
return false;
}

I de to linier med $sess_uid og $sess_level variablerne laver du en
sammenligning istedet for en værdi-tildeling.


>Hvor når kan man ændre på sine session variable ? før/ efter
>session_register(); ???

Det kan man både før og efter er min erfaring.


/tlk

Michael Jensen (22-03-2001)
Kommentar
Fra : Michael Jensen


Dato : 22-03-01 00:14


"Thomas L. Kjeldsen" <tlk@tigerdyr.lyngbol.dk> skrev i en meddelelse
news:slrn9bi91g.281v.tlk@tigerdyr.lyngbol.dk...
> Din login-metode er defekt.
> I de to linier med $sess_uid og $sess_level variablerne laver du en
> sammenligning istedet for en værdi-tildeling.

Man kan godt blive lidt tosset på sig selv når man ikke finder sådan en
fejl.

> >Hvor når kan man ændre på sine session variable ? før/ efter
> >session_register(); ???
>
> Det kan man både før og efter er min erfaring.

Det er også min tanke, da det jo kun er sessionid'et der skal sendes som
cookie.

Ved du noget om hvorfor jeg ikke kan finde $HTTP_SESSION_VARS noget sted,
når nu det står på http://www.dk.php.net/manual/en/html/ref.session.html ???

Hvorfor er det ikke muligt at kalde session_id() inden i klassen? Nu bruger
jeg $HTTP_COOKIE_VARS["PHPSESSID"] men når nu session_id() virker udenfor
burde den vel også virke i klassen???

Hilsen Michael



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste