Cookies og levels

Tags:    php

jeg har et login system som ser sådan her ud:

<?php

$connection = mysql_connect("localhost","iknogether","tpd");
mysql_select_db("hihi", $connection);

$cok_time = 3600;

$result = mysql_query("select brugernavn from interior_users where brugernavn = '$brugernavn', level = '$level' and password = '$password'") or die (mysql_error());
$row = mysql_fetch_array($result);
$number = mysql_num_rows($result);

if ($number > 0) {
setcookie ("cok_bruger", "$brugernavn",time()+$cok_time);
setcookie ("cok_pass", "$password",time()+$cok_time);
setcookie ("cok_level", "$level",time()+$cok_time);

echo ("<META HTTP-EQUIV=\\"refresh\\" CONTENT=\\"0;url=admin.php\\">");

} else {
echo ("Du har intasted forkert brugernavn/password! Prøv igen");
}
?>

så er mit spørgsmål:

1: hvordan henter jeg info fra cookie og hvis han fx er level hvis den den menu med level 1 og hvis så man er i level 2 giver den flere muligheder?

hvordan hulen går man det? jeg kan bare ikke regne den ud?



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hvorfor bruger du overhovedet cookie?

Hver eneste gang en bruger beder om en side, sendes alle cookie informationer til "hosten" gennem HTTP headeren... enhver kan altså aflæse brugernavn og password ved, at kigge på HTTP headeren. Brug i stedet for sessions, så er det kun brugerens session id som transmitteres via HTTP headeren.

Men hvis du insisterer på at bruge cookies kan du læse cookie variablene således,

(PHP VERSION > 4.1)

$level = (isset($_COOKIE["cok_level"]))? $_COOKIE["cok_level"] : 0;

(PHP VERSION < 4.1)

$level = (isset($HTTP_COOKIE_VARS["cok_level"]))? $HTTP_COOKIE_VARS["cok_level"] : 0;

Så er det bare et spørgsmål om, at kontrollere brugerens "level" på de enkelte sider og skjule de funktioner, som man ikke har adgang til.

Ex.

<HTML>

lidt html kode


<?PHP if ($level == 1) { ?>

html kode som brugere med "level" 1 har adgang til


<?PHP } elseif ($level == 2){ ?>

html kode som brugere med "level" 2 har adgang til


osv...

<?PHP } else { ?>

Lidt redirect kode eller andet til de brugere som ikke er logget på


<?PHP }; ?>


En anden ting... i stedet for dette

echo ("<META HTTP-EQUIV=\\"refresh\\" CONTENT=\\"0;url=admin.php\\">");
;

...gør dette

header("Location: admin.php"); exit;


(Skal stå før første echo-command og begyndelsen på html-koden, eg. <html>-tagget)[Redigeret d. 30/10-02 22:00:13 af Erik K. Aarslew-Jensen]



For at følge op på det første svar, så kig under php/mysql artikler her på sitet. Der er adskillige der behandler netop hvad du spørger efter! :)

Mvh,

Thomas Nielsen



t