/ 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
session variable inde fra funktioner
Fra : Bo Jakobsen


Dato : 28-03-01 15:16

Hej

Jeg har fået sessions til at virke, når jeg lægger det hele i hoved
dokumentet, men da jeg er ved at udvikle et størrer ting, vil jeg
gerne arbejde objektorienteret, og derfor har jeg behov for at
manipulere sessions variable inde fra en funktion.

Følgende lille program viser hvad det er jeg gerne vil

<?

function login(){
session_start();
$locked_in = "no";
session_register("locked_in");
echo "nu er du logget ind";
}



session_start();

if (! isset($HTTP_SESSION_VARS["locked_in"])) {
         
login();


} else {

echo "Waking up session $PHPSESSID<br>";
echo("$locked_in <br>");
echo("stor:".$HTTP_SESSION_VARS["locked_in"]);
?>

Mit gæt er at jeg skal have en stak globle variable med ind i
funktionen, men dem jeg har prøvet med hjalp ikke.

Bo


--
------------------------------------------------
Bo Jakobsen, Linux administrator, Imfufa, RUC

e.mail            boj@ruc.dk
Hjemmeside (NYT Indhold) http://dirac.ruc.dk/~boj
ICQ          36930610

 
 
Jonas Delfs (28-03-2001)
Kommentar
Fra : Jonas Delfs


Dato : 28-03-01 19:47

"Bo Jakobsen" <boj@dirac.ruc.dk> skrev i en meddelelse
news:81ae662d37.fsf@carid.ruc.dk...
> Hej
>
> Jeg har fået sessions til at virke, når jeg lægger det hele i hoved
> dokumentet, men da jeg er ved at udvikle et størrer ting, vil jeg
> gerne arbejde objektorienteret, og derfor har jeg behov for at
> manipulere sessions variable inde fra en funktion.
>
> Følgende lille program viser hvad det er jeg gerne vil
>
> <?
>
> function login(){
> session_start();
> $locked_in = "no";
> session_register("locked_in");
> echo "nu er du logget ind";
> }
>
>
>
> session_start();
>
> if (! isset($HTTP_SESSION_VARS["locked_in"])) {
>
> login();
>
>
> } else {
>
> echo "Waking up session $PHPSESSID<br>";
> echo("$locked_in <br>");
> echo("stor:".$HTTP_SESSION_VARS["locked_in"]);
> ?>
>
> Mit gæt er at jeg skal have en stak globle variable med ind i
> funktionen, men dem jeg har prøvet med hjalp ikke.

Hvad med at du lader være med at sende headers (session_start()) inden i
funktioner, men derimod sætter session_start() aller øverst i filen, og så
global $PHPSESSID; i din funktion ?

> Bo


- Jonas

> --
> ------------------------------------------------
> Bo Jakobsen, Linux administrator, Imfufa, RUC
>
> e.mail boj@ruc.dk
> Hjemmeside (NYT Indhold) http://dirac.ruc.dk/~boj
> ICQ 36930610



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


Dato : 29-03-01 00:58

In article <81ae662d37.fsf@carid.ruc.dk>, Bo Jakobsen wrote:
>
>Jeg har fået sessions til at virke, når jeg lægger det hele i hoved
>dokumentet, men da jeg er ved at udvikle et størrer ting, vil jeg
>gerne arbejde objektorienteret, og derfor har jeg behov for at
>manipulere sessions variable inde fra en funktion.

Sessionsvariable er ikke anderledes end almindelige variable når det
drejer sig om at tilgå dem fra en funktion. Jeg foreslår du laver et
'container-objekt' og gemmer det i sessionen, istedet for at gemme x
antal variable i sessionen. Så skal man blot manipulere objektets
variable og ikke tænke mere over session_register() osv.


Tilføj en linie til dit kodeeksempel og det virker:

><?
>
>function login(){

global $locked_in;

>session_start();
>$locked_in = "no";
>session_register("locked_in");
>echo "nu er du logget ind";
>}

....


/tlk

Bo Jakobsen (29-03-2001)
Kommentar
Fra : Bo Jakobsen


Dato : 29-03-01 14:44

tlk@tigerdyr.lyngbol.dk (Thomas L. Kjeldsen) writes:

> Sessionsvariable er ikke anderledes end almindelige variable når det
> drejer sig om at tilgå dem fra en funktion. Jeg foreslår du laver et
> 'container-objekt' og gemmer det i sessionen, istedet for at gemme x
> antal variable i sessionen. Så skal man blot manipulere objektets
> variable og ikke tænke mere over session_register() osv.

Det stod faktisk også i manualen at variablen skal være global, jeg
havde bare overset det.

Men der er en anden underlighed, nemlig at manuale foreskriver at
følgende er den rigtige måde at håndtere sessions variable på

session_register("count");
$HTTP_SESSION_VARS["count"]++;

altså at man skal bruge HTTP_SESSION_VARS som container variabel, hvis
jeg forsøge at gøre som manualen foreskriver kan jeg godt tilgå
variabelen
$HTTP_SESSION_VARS["count"]
og se hvad der står i count, men jeg kan ikke manipulere den ved
f.eks. at sige

$HTTP_SESSION_VARS["count"]=23

der skal jeg bruge
count=23

jeg tror problemet findes hvis man både har
track_vars og register_globals sat til true.
manualen foreskriver godt nok

\quote
If both track_vars and register_globals are enabled, then the globals
variables and the $HTTP_SESSION_VARS
entries will reference the same value.
\end quote

men det ser ikke ud til at virke helt efter hensigten, er der nogen
som ved om dette er et kendt problem, for jeg syntes at det er smart
at bruge $HTTP_SESSION_VARS som container i stedet for at opfinde sin
eget.

Bo



--
------------------------------------------------
Bo Jakobsen, Linux administrator, Imfufa, RUC

e.mail            boj@ruc.dk
Hjemmeside (NYT Indhold) http://dirac.ruc.dk/~boj
ICQ          36930610

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


Dato : 29-03-01 20:13


"Bo Jakobsen" <boj@dirac.ruc.dk> skrev i en meddelelse
news:81r8zgheqt.fsf@i103.ruc.dk...
> men det ser ikke ud til at virke helt efter hensigten, er der nogen
> som ved om dette er et kendt problem, for jeg syntes at det er smart
> at bruge $HTTP_SESSION_VARS som container i stedet for at opfinde sin
> eget.

Jeg kan heller ikke få det til at spille som det skal. se
news:99bcit$651$1@sunsite.dk

jeg kan slet ikke hente værdien

Hilsen Michael




Søg
Reklame
Statistik
Spørgsmål : 177523
Tips : 31968
Nyheder : 719565
Indlæg : 6408676
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste