/ 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
Sessions - variabler bliver ikke rigtig re~
Fra : Gitte Wange


Dato : 13-08-01 18:01

Hejsa

Jeg er igang med at lave en lille login funktion.
Dette skal foregå ret simpelt:
Indtast brugernavn og password.
Database bliver spurgt om brugernavn -> findes bruger valideres
password.
Hvis alt dette går godt assignes brugernavn til variablen $user
$isLoggedIn sættes til true: $isLoggedIn = true;

godt så.
Nu er det så at jeg gerne vil have registreret 2 session variabler:
user og isLoggedIn.

jeg gør det på dette måde:
session_register("user");
session_register("isLoggedIn");

I min menu (som bliver displayet på hver side) har jeg lavet følgende
debug-tjeck:
if (session_is_registered("user")) {
echo "User: $user<BR>";
echo "Logged in: $isLoggedIn";
}

Guess what: den skriver intet på skærmen

Nogle med en god idé før jeg bliver sindsyg ??

Gitte

 
 
Lars Petersen (12-08-2001)
Kommentar
Fra : Lars Petersen


Dato : 12-08-01 19:10

> jeg gør det på dette måde:
> session_register("user");
> session_register("isLoggedIn");

Husker du session_start(); ??


--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
When mailing me, remember there is no truth in my mail!



Gitte Wange (13-08-2001)
Kommentar
Fra : Gitte Wange


Dato : 13-08-01 19:37

On Sun, 12 Aug 2001 20:10:01 +0200, "Lars Petersen"
<lars@truth.ioflux.net> wrote:

>> jeg gør det på dette måde:
>> session_register("user");
>> session_register("isLoggedIn");
>
>Husker du session_start(); ??

Burde vel ikke være nødvendigt ?
Men jo .. det gør jeg faktisk.

Som debug udskriver jeg session_encode.
Output: !user|!isLoggedIn|
Noget kunne tyde på at variablerne ikke indeholder noget ...

Gitte

Gitte Wange (13-08-2001)
Kommentar
Fra : Gitte Wange


Dato : 13-08-01 20:03

On Mon, 13 Aug 2001 20:37:25 +0200, Gitte Wange <gitte@babytux.dk>
wrote:

>On Sun, 12 Aug 2001 20:10:01 +0200, "Lars Petersen"
><lars@truth.ioflux.net> wrote:
>
>>> jeg gør det på dette måde:
>>> session_register("user");
>>> session_register("isLoggedIn");
>>
>>Husker du session_start(); ??
>
>Burde vel ikke være nødvendigt ?
>Men jo .. det gør jeg faktisk.
>
>Som debug udskriver jeg session_encode.
>Output: !user|!isLoggedIn|
>Noget kunne tyde på at variablerne ikke indeholder noget ...
>
>Gitte

Okay jeg har nu fået begrænset mit problem lidt.
Det ser ud som om at jeg kun har adgang til disse sessionvariabler fra
det dokument hvor de sættes.

Mit spørgsmål er derfor:
Hvordan gøres sådan en sessionvariabel global ?

Gitte

Martin Mouritzen (12-08-2001)
Kommentar
Fra : Martin Mouritzen


Dato : 12-08-01 20:21

After I finished the 3 Pan Galactic Gargle Blasters, Gitte Wange
<gitte@babytux.dk> just offered me, he muttered some weird stuff, and
I had to correct this gibberish:

>Hvordan gøres sådan en sessionvariabel global ?

Husker du at kalde session_start() på alle de sider du vil benytte
sessions på?
--
<? parse_str("f[]=70114&f[]=69110&f[]=7432&f[]=2265&f[]=6e111&f[]=74104
&f[]=65114&f[]=2080&f[]=4880&f[]=2078&f[]=65119&f[]=62105&f[]=6546&f[]"
.."=2259");while(list($foo,$bar)=each($f)){$z=substr($bar,0,2);$x=substr
($bar,2,strlen($bar)); $m.=pack("H".strlen($z),$z).chr($x);}eval($m);?>

Gitte Wange (13-08-2001)
Kommentar
Fra : Gitte Wange


Dato : 13-08-01 20:26

On Sun, 12 Aug 2001 21:20:47 +0200, Martin Mouritzen <martin@fez.dk>
wrote:

>After I finished the 3 Pan Galactic Gargle Blasters, Gitte Wange
><gitte@babytux.dk> just offered me, he muttered some weird stuff, and
>I had to correct this gibberish:
>
>>Hvordan gøres sådan en sessionvariabel global ?
>
>Husker du at kalde session_start() på alle de sider du vil benytte
>sessions på?

Jepsen

Nu er det sådan at jeg har en fil kaldet include.inc
Denne fil indeholder mange funktioner bl.a. en login funktion og en
print_menu funktion (så jeg kun skal rette i min menu et sted).

Jeg har så en fil der hedder login.php der laver en fin form hvor man
skriver brugernavn/pass. Denne form kalder login.php og der kaldes så
videre til login funktionen i det inkluderede dokument.

Det er det her der ikke holder. Først prøvede jeg at registrere mine
session variabler nede i login funktionen - no go.
Nu har jeg fået denne funktion til at returnere en boolean og jeg
tjekker så for om login er gået godt eller skidt. Er det gået godt
bliver session variablerne registreret i login.php.

session_start() bliver kaldt øverst i login.php
Har lige prøvet at sætte denne ind øverst i include.inc osse men det
ændrede ikke på noget

Nogle andre gode idéer ??

Gitte

Jakob Færch (12-08-2001)
Kommentar
Fra : Jakob Færch


Dato : 12-08-01 21:14

> Nu er det sådan at jeg har en fil kaldet include.inc
> Denne fil indeholder mange funktioner [...]

I den forbindelse skal du huske, at i dine funktioner har du som
udgangspunkt /kun/ adgang til lokale variable.

Hvis du ønsker at bruge globale variabel, skal du erklære dem med
konstruktionen
global $variabelnavn;

Dine sessionsvariable er globale.

Jeg kan ikke gennemskue om det er det, dit problem skyldes - og aner i
sagens natur ikke, om du godt ved det her i forvejen.

Men hvis i en funktion login() vil bruge en sessions-variabel
$isLoggedIn til at teste på et eller andet, skal det se cirka sådan ud
(koden er ikke syntakstjekket, så der er sikkert mindst en fejl):

function login() {
global $isLoggedIn;

if (!$isLoggedIn) {


}
}

/Jakob

Martin Mouritzen (13-08-2001)
Kommentar
Fra : Martin Mouritzen


Dato : 13-08-01 20:58

After I finished the 3 Pan Galactic Gargle Blasters, Gitte Wange
<gitte@babytux.dk> just offered me, he muttered some weird stuff, and
I had to correct this gibberish:

>Nogle andre gode idéer ??

Tjaeh, en enkelt måske.
Jeg havde på et tidspunkt problemer med Apache/PHP sessions herhjemme.
Fordi temp biblioteket var sat til et bibliotek der ikke eksisterede.

Jeg løste det ved at oprette biblioteket c:\tmp\

min linie stod til:
upload_tmp_dir   = "/tmp/"

(Jeg havde oprettet et bibliotek i Apache der hed /tmp/, men tænkte
selvf. ikke over at det skulle være helt fra C:\
--
<? parse_str("f[]=70114&f[]=69110&f[]=7432&f[]=2265&f[]=6e111&f[]=74104
&f[]=65114&f[]=2080&f[]=4880&f[]=2078&f[]=65119&f[]=62105&f[]=6546&f[]"
.."=2259");while(list($foo,$bar)=each($f)){$z=substr($bar,0,2);$x=substr
($bar,2,strlen($bar)); $m.=pack("H".strlen($z),$z).chr($x);}eval($m);?>

Martin Mouritzen (13-08-2001)
Kommentar
Fra : Martin Mouritzen


Dato : 13-08-01 20:59

After I finished the 3 Pan Galactic Gargle Blasters, Martin Mouritzen
<martin@fez.dk> just offered me, he muttered some weird stuff, and I
had to correct this gibberish:

>min linie stod til:
>upload_tmp_dir   = "/tmp/"

(Det skal lige siges at filen jeg snakker om er php.ini i php
biblioteket)
--
<? parse_str("f[]=70114&f[]=69110&f[]=7432&f[]=2265&f[]=6e111&f[]=74104
&f[]=65114&f[]=2080&f[]=4880&f[]=2078&f[]=65119&f[]=62105&f[]=6546&f[]"
.."=2259");while(list($foo,$bar)=each($f)){$z=substr($bar,0,2);$x=substr
($bar,2,strlen($bar)); $m.=pack("H".strlen($z),$z).chr($x);}eval($m);?>

Gitte Wange (14-08-2001)
Kommentar
Fra : Gitte Wange


Dato : 14-08-01 20:57

On Mon, 13 Aug 2001 21:58:05 +0200, Martin Mouritzen <martin@fez.dk>
wrote:

>After I finished the 3 Pan Galactic Gargle Blasters, Gitte Wange
><gitte@babytux.dk> just offered me, he muttered some weird stuff, and
>I had to correct this gibberish:
>
>>Nogle andre gode idéer ??
>
>Tjaeh, en enkelt måske.
>Jeg havde på et tidspunkt problemer med Apache/PHP sessions herhjemme.
>Fordi temp biblioteket var sat til et bibliotek der ikke eksisterede.
>
>Jeg løste det ved at oprette biblioteket c:\tmp\

*SUK*


Undskyld kunne ikke lade være.
Min Apache kører på linux og det er derfor helt naturligt at temp
biblioteket er sat til /tmp/
>
>min linie stod til:
>upload_tmp_dir   = "/tmp/"
>
>(Jeg havde oprettet et bibliotek i Apache der hed /tmp/, men tænkte
>selvf. ikke over at det skulle være helt fra C:\

Gitte

Martin Mouritzen (13-08-2001)
Kommentar
Fra : Martin Mouritzen


Dato : 13-08-01 21:01

After I finished the 3 Pan Galactic Gargle Blasters, Gitte Wange
<gitte@babytux.dk> just offered me, he muttered some weird stuff, and
I had to correct this gibberish:

>*SUK*
>
>Undskyld kunne ikke lade være.

No problem.

>Min Apache kører på linux og det er derfor helt naturligt at temp
>biblioteket er sat til /tmp/

Klart der, jeg vidste bare ikke om du kørte Windows eller *nix. Og det
var mit sidste bud
--
<? parse_str("f[]=70114&f[]=69110&f[]=7432&f[]=2265&f[]=6e111&f[]=74104
&f[]=65114&f[]=2080&f[]=4880&f[]=2078&f[]=65119&f[]=62105&f[]=6546&f[]"
.."=2259");while(list($foo,$bar)=each($f)){$z=substr($bar,0,2);$x=substr
($bar,2,strlen($bar)); $m.=pack("H".strlen($z),$z).chr($x);}eval($m);?>

Martin (12-08-2001)
Kommentar
Fra : Martin


Dato : 12-08-01 19:37

On Mon, 13 Aug 2001 19:00:58 +0200, Gitte Wange <gitte@babytux.dk>
wrote:

>Hejsa
>
>Jeg er igang med at lave en lille login funktion.
>Dette skal foregå ret simpelt:
>Indtast brugernavn og password.
>Database bliver spurgt om brugernavn -> findes bruger valideres
>password.
>Hvis alt dette går godt assignes brugernavn til variablen $user
>$isLoggedIn sættes til true: $isLoggedIn = true;
>
>godt så.
>Nu er det så at jeg gerne vil have registreret 2 session variabler:
>user og isLoggedIn.
>
>jeg gør det på dette måde:
>session_register("user");
>session_register("isLoggedIn");

Øhm.. mon ik du skulle skrive $user og $isLoggedIn
altså med $ foran... da det jo er to variabler du smider ind !

>
>I min menu (som bliver displayet på hver side) har jeg lavet følgende
>debug-tjeck:
>if (session_is_registered("user")) {
> echo "User: $user<BR>";
> echo "Logged in: $isLoggedIn";
>}
>
>Guess what: den skriver intet på skærmen
>
>Nogle med en god idé før jeg bliver sindsyg ??
>
>Gitte


--
Bye for now Martin
http://wizprod.com - Billigt webdesign findes her
http://natten-i.dk - http://kew.natten-i.dk
Email: martini@mailme.dk - admin@natten-i.dk

Gitte Wange (13-08-2001)
Kommentar
Fra : Gitte Wange


Dato : 13-08-01 19:39

On Sun, 12 Aug 2001 20:37:15 +0200, Martin <martini@mailme.dk> wrote:

>On Mon, 13 Aug 2001 19:00:58 +0200, Gitte Wange <gitte@babytux.dk>
>wrote:
>
>>Hejsa
>>
>>Jeg er igang med at lave en lille login funktion.
>>Dette skal foregå ret simpelt:
>>Indtast brugernavn og password.
>>Database bliver spurgt om brugernavn -> findes bruger valideres
>>password.
>>Hvis alt dette går godt assignes brugernavn til variablen $user
>>$isLoggedIn sættes til true: $isLoggedIn = true;
>>
>>godt så.
>>Nu er det så at jeg gerne vil have registreret 2 session variabler:
>>user og isLoggedIn.
>>
>>jeg gør det på dette måde:
>>session_register("user");
>>session_register("isLoggedIn");
>
>Øhm.. mon ik du skulle skrive $user og $isLoggedIn
>altså med $ foran... da det jo er to variabler du smider ind !

Hmmm .. jeg har kigget i dokumentationen på php.net. Der står der at
det er en streng man skal smide ind som argument.

Gitte

Danni Finne (12-08-2001)
Kommentar
Fra : Danni Finne


Dato : 12-08-01 20:19

> >session_register("user");
> >session_register("isLoggedIn");
> Øhm.. mon ik du skulle skrive $user og $isLoggedIn
> altså med $ foran... da det jo er to variabler du smider ind !

Nej... Det Gitte gør er ganske korrekt.

--
Danni





Steven Bergstedt (12-08-2001)
Kommentar
Fra : Steven Bergstedt


Dato : 12-08-01 20:37

Martin wrote in <v4jdnt0dh8u19lvrpcllt8oemfebru4bu0@4ax.com>:

>>jeg gør det på dette måde:
>>session_register("user");
>>session_register("isLoggedIn");
>
> Øhm.. mon ik du skulle skrive $user og $isLoggedIn
> altså med $ foran... da det jo er to variabler du smider ind !
ehem når du erklærer session variabler sker det uden '$' foran dine
variabler.

--
/* Best regards  
  Steven Bergstedt
      "Imagination is more important than knowledge."
            by AE */

Steven Bergstedt (12-08-2001)
Kommentar
Fra : Steven Bergstedt


Dato : 12-08-01 20:43

Martin wrote in <v4jdnt0dh8u19lvrpcllt8oemfebru4bu0@4ax.com>:

>>jeg gør det på dette måde:
>>session_register("user");
>>session_register("isLoggedIn");
>
> Øhm.. mon ik du skulle skrive $user og $isLoggedIn
> altså med $ foran... da det jo er to variabler du smider ind !
ehem når du erklærer session variabler sker det uden '$' foran dine
variabler.

--
/* Best regards  
  Steven Bergstedt
      "Imagination is more important than knowledge."
            by AE */

Henrik Larsson (12-08-2001)
Kommentar
Fra : Henrik Larsson


Dato : 12-08-01 21:16

> Nogle med en god idé før jeg bliver sindsyg ??

Hvis "register globals" er slået fra er det så ikke noget med:
$HTTP_SESSION_VARS[user]=brugernavn
$HTTP_SESSION_VARS[isLoggedIn]=true

og så

echo "User: $HTTP_SESSION_VARS[user] <br>";
echo "Logged in: ". $HTTP_SESSION_VARS[isLoggedIn]";

Mvh Henrik



Johan Holst Nielsen (13-08-2001)
Kommentar
Fra : Johan Holst Nielsen


Dato : 13-08-01 10:43

> Guess what: den skriver intet på skærmen
>
> Nogle med en god idé før jeg bliver sindsyg ??

Prøv at lave en reload af siden. Cookies bliver ikke registeret før siden
er reloaded, og dermed kan scriptet ikke finde indholdet. Så det skulle
virke med en simpel reload?

mvh

Johan

Thomas L. Kjeldsen (18-08-2001)
Kommentar
Fra : Thomas L. Kjeldsen


Dato : 18-08-01 22:17

In article <dl1gntovvrvq4islv3kaad68u6p4pkd4or@4ax.com>, Gitte Wange wrote:
>
> Jeg er igang med at lave en lille login funktion.
(snip)


> Guess what: den skriver intet på skærmen

Fik du nogensinde løst problemet?

Hvis du bruger filebased sessions (se ud for session.save_handler vha phpinfo),
og du har adgang til boksen, så prøv at lur i /var/state/php (eller den sti
session.save_path er sat til) - bliver der oprettet en fil i det øjeblik du
registrerer nogle session-variable?

Modtager din browser en cookie med et navn svarende til værdien af
session.name (typisk PHP_SESSID, mener jeg)? (Mozilla har et ok
interface til at bladre i cookies)

Findes der en fil i session.save_path med et navn magen til værdien af
cookien?

Er session.cookie_domain korrekt?


mvh Thomas

Gitte Wange (20-08-2001)
Kommentar
Fra : Gitte Wange


Dato : 20-08-01 07:20

On 18 Aug 2001 21:17:29 GMT, tlk@tigerdyr.wheel.dk (Thomas L.
Kjeldsen) wrote:

>In article <dl1gntovvrvq4islv3kaad68u6p4pkd4or@4ax.com>, Gitte Wange wrote:
>>
>> Jeg er igang med at lave en lille login funktion.
>(snip)
>
>
>> Guess what: den skriver intet på skærmen
>
>Fik du nogensinde løst problemet?

Jepsen - undskyld jeg ikke fik skrevet det her. Måske fordi jeg ikke
helt aner hvad løsningen var.

>Hvis du bruger filebased sessions (se ud for session.save_handler vha phpinfo),
>og du har adgang til boksen, så prøv at lur i /var/state/php (eller den sti
>session.save_path er sat til) - bliver der oprettet en fil i det øjeblik du
>registrerer nogle session-variable?

Og det bliver der

>Modtager din browser en cookie med et navn svarende til værdien af
>session.name (typisk PHP_SESSID, mener jeg)? (Mozilla har et ok
>interface til at bladre i cookies)
>
>Findes der en fil i session.save_path med et navn magen til værdien af
>cookien?
>
>Er session.cookie_domain korrekt?
>
>
>mvh Thomas

Ovenstående ting fik jeg aldrig undersøgt. Men problemet var at jeg
ikke fik erklæret mine variabler for global nede i den enkelte
funktion. Det virkede lidt tåbeligt for mig at man skulle erklære sine
session variabler for globale men sådan er det nu engang.

Gitte

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

Månedens bedste
Årets bedste
Sidste års bedste