|
| Problem med Session-adgangskontrol Fra : Jakob Munck |
Dato : 05-03-07 22:30 |
|
Jeg har nogle medlemmer, som skal kunne få adgang til et område, hvis de har
tegnet abonnement på et tidsskrift. Ellers skal de ikke kunne få adgang. Når
man er abonnement sættes værdien ens session "abonnemt" til 1 og ellers er
den 0. Min adgangskontrol ser derfor sådan ud, men der er noget galt, for
den virker ikke. Jeg har startet "Sessions" på siden, så jeg tror at fejlen
har noget med min måde at sammenligne den pågældende Session med et tal. Men
jeg ved det ikke. Det virker bare ikke rigtigt.
<?
if ($_SESSION["abonnent"] < '1') { //fejlen ligger i denne linie, men hvor?
header("Location: fejlside.php");
exit();
}
?>
Nogen som kan give input til hvor fejlen ligger?
v.h.
Jakob
| |
Bertel Lund Hansen (05-03-2007)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 05-03-07 22:43 |
|
Jakob Munck skrev:
> man er abonnement sættes værdien ens session "abonnemt" til 1 og ellers er
> den 0.
> <?
> if ($_SESSION["abonnent"] < '1') { //fejlen ligger i denne linie, men hvor?
> header("Location: fejlside.php");
> exit();
> }
> ?>
Du kan prøve med
if (!$_SESSION["abonnent"]) header("Location: fejlside.php");
// Bemærk udråbstegnet.
fordi 0 kan bruges som false - og jeg går ud fra at du ikke
bruger negative værdier til false.
Exit() er ikke nødvendigt fordi man er dampet af til en anden
side inden man når dertil.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Martin Mouritzen (06-03-2007)
| Kommentar Fra : Martin Mouritzen |
Dato : 06-03-07 00:19 |
|
On Mon, 5 Mar 2007 22:42:49 +0100, Bertel Lund Hansen
<unospamo@lundhansen.dk> wrote:
>Exit() er ikke nødvendigt fordi man er dampet af til en anden
>side inden man når dertil.
Det er faktisk ikke helt rigtigt. - Uden exit så fortsætter scriptet -
Browseren vil selvf. stadig blive redirectet, men alt afhængig af hvad
man har på resten af siden, vil jeg sige det er udemærket at kalde
exit lige efter man har redirectet.
| |
Jakob Munck (06-03-2007)
| Kommentar Fra : Jakob Munck |
Dato : 06-03-07 09:30 |
|
> Du kan prøve med
>
> if (!$_SESSION["abonnent"]) header("Location: fejlside.php");
> // Bemærk udråbstegnet.
>
> fordi 0 kan bruges som false - og jeg går ud fra at du ikke
> bruger negative værdier til false.
>
Tak for forslaget, men jeg fandt jeg en fejl i variablens navn (pinligt!).
Men også før jeg lavede denne fejl var der problemer, så jeg har nu ændredt
måden at teste session på, så 0 undgås. Og nu virker det og ser ud sådan:
if ($_SESSION["abonnement"] < '1') {
header("Location: fejlside");
exit();
}
Mange tak for hjælpen.
v.h.
Jakob
| |
|
|