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