/ 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
lidt session (globalitet) problemer
Fra : Thomas Schulz


Dato : 02-03-02 20:06

Her er min kode:
* Funktionerne stammer fra samme klasse (CmsUserAccounts).
* Alle funktioner sætter først "global $HTTP_SESSION_VARS;"
* Jeg har php 4.06 (register_globals = off, track_vars = on)


det starter her (første funktion):

function PageLoadsStartSessionCheckInit() {
global $HTTP_SESSION_VARS;
session_start();
if (CmsUserAccounts::HasUserSessionInited() == false) {
// initialize the variables first time session is started
//session_register('SESSION_INITED');
//session_register('user_db_account_id');
$HTTP_SESSION_VARS['SESSION_INITED'] = true;
$HTTP_SESSION_VARS['user_db_account_id'] = -1;
}
}


hvis jeg så prøver at kalde (længere nede i funktionen):

if (CmsUserAccounts::IsUserLoggedIn()) {
//
}


opstår der en fejl i: :IsUserLoggedIn
som ser sådan her ud:


function IsUserLoggedIn() {

global $HTTP_SESSION_VARS;
return ($HTTP_SESSION_VARS['user_db_account_id'] > -1);
}



Alt burde (som jeg ser det :) være fryd og gammen.... Men nej, jeg får fejl:

Warning: Undefined index: user_db_account_id in ... on line ...



Og det fatter jeg ikke...





1 side-spørgsmål:
* Jeg fandt en dag en php indbygget funktion der kunne outputte den rå data
af arrays, men kan ikke huske den (har søgt på php.net + google.com)?

1 side-note:
* Siden her: http://www.php.net/manual/en/ref.session.php#AEN63965 fortæller
man ikke længere skal bruge "session_register" hvis man bruger
$HTTP_SESSION_VARS.




Håber nogen kan hjælpe
mvh
-Thomas



 
 
Christian Joergensen (02-03-2002)
Kommentar
Fra : Christian Joergensen


Dato : 02-03-02 21:21

On Sat, 02 Mar 2002 20:06:14 +0100, Thomas Schulz wrote:

> Warning: Undefined index: user_db_account_id in ... on line ...

Står der ikke noget andet istedet for "..." ?

> 1 side-spørgsmål:
> * Jeg fandt en dag en php indbygget funktion der kunne outputte den rå
> data af arrays, men kan ikke huske den (har søgt på php.net +
> google.com)?

print_r eller var_dump.

> 1 side-note:
> * Siden her: http://www.php.net/manual/en/ref.session.php#AEN63965
> fortæller man ikke længere skal bruge "session_register" hvis man bruger
> $HTTP_SESSION_VARS.

Hvis du bruger $_SESSION["foo"] = "bar" uden at have kørt en
session_register på "foo" vil den automagisk blive registreret som
session-variabel.

--
Christian Jørgensen | In order to understand recursion
http://www.razor.dk | one must understand recursion.

Thomas Schulz (02-03-2002)
Kommentar
Fra : Thomas Schulz


Dato : 02-03-02 21:43

> Står der ikke noget andet istedet for "..." ?

Jo, ok, der står:
"
Warning: Undefined index: user_db_account_id in
d:\webserve\apache\htdocs\site\serve\lib_site\ls_user_accounts.php on line
186
"
:)



> print_r eller var_dump.

Tak, vil bruge det til at finde ud af lidt mere (vil poste her igen hvis jeg
finder ud af noget mere omkring det igennem overstående).



> Hvis du bruger $_SESSION["foo"] = "bar" uden at have kørt en
> session_register på "foo" vil den automagisk blive registreret som
> session-variabel.

vel også hvis jeg bruger
$HTTP_SESSION_VARS["foo"] = "bar" ?
- sådan læste jeg det i hvert fald?



mvh
Thomas



Christian Joergensen (02-03-2002)
Kommentar
Fra : Christian Joergensen


Dato : 02-03-02 22:01

On Sat, 02 Mar 2002 21:42:56 +0100, Thomas Schulz wrote:

> Warning: Undefined index: user_db_account_id in
> d:\webserve\apache\htdocs\site\serve\lib_site\ls_user_accounts.php on
> line 186

Det kan også være at din error-level er sat forkert. Husk på at en
warning ikke er det samme som en fejl.

--
Christian Jørgensen | In order to understand recursion
http://www.razor.dk | one must understand recursion.

Thomas Schulz (02-03-2002)
Kommentar
Fra : Thomas Schulz


Dato : 02-03-02 23:08

> Det kan også være at din error-level er sat forkert. Husk på at en
> warning ikke er det samme som en fejl.

Men min kode har set værdierne inden fejlen kommer (første post).
Og hvis ikke min kode har sat værdierne, så er det en fejl! :)

Thomas




Thomas Schulz (02-03-2002)
Kommentar
Fra : Thomas Schulz


Dato : 02-03-02 23:15

> Og det fatter jeg ikke...

Jeg har (gennem brug af var_dump) lidt mere info...


Jeg har (summere bare alle væsentligt ting inkl. det nye):
* Valideret at *PageLoadsStartSessionCheckInit* kalder *IsUserLoggedIn*
* var_dump lavet i *PageLoadsStartSessionCheckInit* afslører det ikke er det
samme array som var_dump i *IsUserLoggedIn*
* det selvom det begg 2 bruger "global $HTTP_SESSION_VARS";



Håber der er nogen der kan hjælpe?
Gør det nogen forskel at de her funktioner er erklæret i en klasse (totalt
skyd i tågen fra min side)?


Thomas




Thomas Schulz (03-03-2002)
Kommentar
Fra : Thomas Schulz


Dato : 03-03-02 13:13

> Jeg har (gennem brug af var_dump) lidt mere info...


Lidt mere endnu:

I roden (som ikke er i nogen funktion eller noget andet) af mit php main
site script chekkede jeg om hvorvidt
$HTTP_SESSION_VARS var sat, og det var den ikke!?!
Den er altså ikke globalt sat af min php?!?!?


Det kunne jo i hvert fald forklare hvorfor det andet giver problemer.

Jeg får helt præcist fejl besked:
Warning: Undefined variable: HTTP_SESSION_VARS in
d:\webserve\apache\htdocs\site\serve\main.php on

Thomas



Thomas Schulz (03-03-2002)
Kommentar
Fra : Thomas Schulz


Dato : 03-03-02 13:20

> Jeg får helt præcist fejl besked:
> Warning: Undefined variable: HTTP_SESSION_VARS in
> d:\webserve\apache\htdocs\site\serve\main.php on

og her er forklaringen..
session_start skal kaldes i roden og ikke i en funktion
hvis den kaldes i en funktion virker det ikke


Thomas



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

Månedens bedste
Årets bedste
Sidste års bedste