/ 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
Setcookies
Fra : Peter S


Dato : 17-09-04 10:22

Hej alle

Jeg sidder med et ret banalt problem. Jeg vil gerne styre adgangen til mine
sider med cookies, men hvordan får jeg min cookie til at fungere på samme
side som jeg logger ind på?

Jeg kan se, at cookien bliver sat helt som jeg vil, men på grund af den måde
en html-side bliver parset på, så kan jeg ikke tjekke for cookies - ikke før
siden genindlæses.

Er der nogen der har en god ide til hvordan jeg klarer den? Jeg har forsøgt
med at sætte et flag (normal variabel) - eks.; $login_er_tjekket_og_godkendt
= "Yes"; og så bruge denne til at styre første læsning af siden (altså inden
jeg lader min cookie virke). Jeg kan bare ikke få det til at virke i alle
tilfælde.

På forhånd tak
Peter S



 
 
Michael Foged (18-09-2004)
Kommentar
Fra : Michael Foged


Dato : 18-09-04 10:25

On Fri, 17 Sep 2004 11:21:45 +0200, Peter S wrote:

> Er der nogen der har en god ide til hvordan jeg klarer den? Jeg har forsøgt
> med at sætte et flag (normal variabel) - eks.; $login_er_tjekket_og_godkendt
> = "Yes"; og så bruge denne til at styre første læsning af siden (altså inden
> jeg lader min cookie virke). Jeg kan bare ikke få det til at virke i alle
> tilfælde.
>
> På forhånd tak
> Peter S

Hvis $login_er_tjekket_og_godkendt bliver sat der hvor du sættter
cookien, burde det virke.

--
mvh
Michael Foged

Michael Foged (18-09-2004)
Kommentar
Fra : Michael Foged


Dato : 18-09-04 10:27

On Fri, 17 Sep 2004 11:21:45 +0200, Peter S wrote:

Men hvorfor ikke lave det med sessions?

--
mvh
Michael Foged

Peter S (17-09-2004)
Kommentar
Fra : Peter S


Dato : 17-09-04 10:55

> Men hvorfor ikke lave det med sessions?

Jeg har det faktisk til at fungere med sessions lige nu, men jeg bryder ikke
om at andre skal styre hvorlænge brugeren er logget på.

Ja, det burde fungere, men jeg har problemer med if og else if - det er nok
dette, jeg skal have styr på!



Michael Foged (18-09-2004)
Kommentar
Fra : Michael Foged


Dato : 18-09-04 11:49

On Fri, 17 Sep 2004 11:54:39 +0200, Peter S wrote:

>> Men hvorfor ikke lave det med sessions?
>
> Jeg har det faktisk til at fungere med sessions lige nu, men jeg bryder ikke
> om at andre skal styre hvorlænge brugeren er logget på.

Hvem andre kan styre det? Du kan jo selv bestemme hvor længe en SESSION
cookie skal leve (mener jeg bestemt).

>
> Ja, det burde fungere, men jeg har problemer med if og else if - det er nok
> dette, jeg skal have styr på!

Prøv at kigge på switch(), den er et godt alternativ til nogle if else
konstruktioner.

--
mvh
Michael Foged

Peter S (17-09-2004)
Kommentar
Fra : Peter S


Dato : 17-09-04 12:04

> Hvem andre kan styre det? Du kan jo selv bestemme hvor længe en SESSION
> cookie skal leve (mener jeg bestemt).

Jeg kan vel ikke trumfe php.ini? den angiver noget med session.cache_expire
på 180 sek. eller hvordan?

mvh Peter S



Michael Foged (18-09-2004)
Kommentar
Fra : Michael Foged


Dato : 18-09-04 12:19

On Fri, 17 Sep 2004 13:04:15 +0200, Peter S wrote:

>> Hvem andre kan styre det? Du kan jo selv bestemme hvor længe en SESSION
>> cookie skal leve (mener jeg bestemt).
>
> Jeg kan vel ikke trumfe php.ini? den angiver noget med session.cache_expire
> på 180 sek. eller hvordan?
>
> mvh Peter S

Jo

http://www.zend.com/manual/ref.session.php

--
mvh
Michael Foged

Peter S (17-09-2004)
Kommentar
Fra : Peter S


Dato : 17-09-04 12:00

Jeg har forsøgt med:

if($_GET["act"]=='login'){
if ([tjekker login]) {
setcookie("access", $r['access'], time()+3600,'/',$homepage);
$pass = $r['access'];
}
}
}
if($_GET["act"]=='logout'){
setcookie("access", "");
unset($_cookie['access']);
}?>

og senere på siden:

if($_COOKIE['access']>=[access_level] || $pass >=[access_level] ){
----------- indhold efter login ----------------
}

Problemet er at $_COOKIE['access'] ikke bliver slettet! ved logout



Michael Foged (18-09-2004)
Kommentar
Fra : Michael Foged


Dato : 18-09-04 12:08

On Fri, 17 Sep 2004 13:00:17 +0200, Peter S wrote:

> Jeg har forsøgt med:
>
> if($_GET["act"]=='login'){
> if ([tjekker login]) {
> setcookie("access", $r['access'], time()+3600,'/',$homepage);
> $pass = $r['access'];
> }
> }
> }

Her er et "}" for mange, men det må være sket da du skrev her, ellers
skulle det give fejl når php parsede.

> if($_GET["act"]=='logout'){
> setcookie("access", "");
> unset($_cookie['access']);
> }?>

Skal Cookien ikke være nøjagtig ens, for at den bliver slettet, det vil
sige du bruger den nøjagtig ens setcookie()? :/

--
mvh
Michael Foged

Michael Foged (18-09-2004)
Kommentar
Fra : Michael Foged


Dato : 18-09-04 12:43

On Fri, 17 Sep 2004 13:00:17 +0200, Peter S wrote:

> Jeg har forsøgt med:
>
> if($_GET["act"]=='login'){
> if ([tjekker login]) {
> setcookie("access", $r['access'], time()+3600,'/',$homepage);
> $pass = $r['access'];

   $jeg_er_ok=[$_COOKIE['access']]; //Ikke variblen

> }

   else{
   unset($jeg_er_ok);
   }

> }

> if($_GET["act"]=='logout'){
> setcookie("access", "");
> unset($_cookie['access']);

   unset($jeg_er_ok);

> }?>
>
> og senere på siden:
>

if(isset($jeg_er_ok){
if($jeg_er_ok=[access_level] || $pass >=[access_level] ){
----------- indhold efter login ----------------
}
}

Jeg har tilrettet dit script og anvendt en ekstra variabel til bruge
istedet for $_COOKIE[]. Nu skal den så bare initialiseres hver gang siden
reloades.

--
mvh
Michael Foged

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

Månedens bedste
Årets bedste
Sidste års bedste