|
| SESSIONS og brugen af dem! shady har modtaget -10 point for dette tip Fra : shady | Vist : 746 gange
Dato : 23-04-03 13:50 |
|
Tit og mange gange stiller man spørgsmål vedrørende sessions og efter PHP version 4.1.x har fået nye standarder inden for sessions og fordefinerede variabler er det pludselig blevet meget lettere!
Sessions er serverside cookies, forstået på den måde at dataen i cookieerne bliver gemt på serveren istedet for hos klienten/brugeren hvilket gør det både sikrere og bedre at benytte sig af cookiebaserede sites. Andre fordele kan være hvis klienten/brugeren nægter at modtage cookies på sin computer, så kan man bare bruges sessions. Hvis altså serveren er sat op til at bruge det! (spørg udbyderen eller brug phpinfo)
Jeg vil gennemgå nogle basale eksempler på brugen af sessions.
session_start() er en header, og ligesom alle andre headere skriver man dem før alt andet output er til stede (HTML, Tekst og lign.), det vil sige at det er det første du skriver! Så et eksempel på at starte sessions i et php script kunne være:
<?php
session_start();
?>
Nu er vi klar til at sætte og bruge sessions.
Jeg vil nu sætte en session med navnet 'kage'.
(kage.php)
<?php
session_start();
$_SESSION['kage'] = "Chokoladekage";
?>
Derefter går jeg til en anden side hvor jeg kalder min session igen og skriver indholdet af sessionen ud.
(viskagen.php)
<?php
session_start();
echo 'Du har lavet en '.$_SESSION['kage']; // Dette vil skrive: Du har lavet en chokoladekage
?>
Hvis man så ikke skal bruge sessionen længere skal man bruge kommandoen unset();
(sletsession.php)
<?php
session_start();
unset($_SESSION['kage']);
echo 'Sessionen er tom.';
?>
Det er rimelig nemt at bruge sessions!
Der er mange der gerne vil bruge det til brugersystemer sammen med mysql databaser og så'n, men problemet er heller ikke større end vist foroven!
Vi forestiller os du har lavet en loginside der sender variablerne username og password:
<input type=tekst name=username>
<input type=password name=password>
til en side der hedder enter.php og at du har en database med et brugerid, brugernavn og kodeord
| userid | username | password |
(enter.php)
<?php
session_start();
$query("SELECT * FROM users WHERE username='$_POST[username]' AND password='$_POST[password]");
if(mysql_num_rows($query) > 0) {
$userid = mysq_result($query, 0, "userid");
$username = mysq_result($query, 0, "username");
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
echo 'Du er logget ind med brugerid <b>'.$_SESSION['brugerid'].'</b> og brugernavnet <b>'.$_SESSION['username'].'</b>';
}
elseif(mysql_num_rows($query) < 1) {
echo 'Brugeren kan ikke genkendes!';
}
?>
Så er brugeren logget ind og du har to session variabler (userid og username) der hver indeholder dataen fra din mysql database.
Så kan du hente brugernavnet frem på alle sider når du skal bruge det ved hjælp af $_SESSION['username']
Hvis du nu vil bruge userid sessionen til at hente noget fra en tabel i din database skal du huske at tegnet ' ikke skal være i din session variabel, altså du skal nøjes med at skrive $_SESSION[userid], men eller skal du huske at bruge dem ($_SESSION['userid']).
For derefter at teste om brugeren er logget ind kan man jo bruge en if sætning!
Nedenunder bruger jeg sessionen userid og ser om den er defineret med isset() funktionen.
Nedenstående er en grov måde at gøre det på, men det virker og giver dig et indtryk af funktionerne!
(index.php)
<?php
session_start();
if(isset($_SESSION['userid'])) {
echo 'Hej <b>'.$_SESSION['username'].'</b><br>Du er logget ind';
//her står alt det brugeren må se når han er logget ind!
}else{
echo 'Hej <b>Gæst</b><br>Tryk på linket til login for at logge på sitet';
//her står så det brugeren ser hvis han ikke er logget på
}
?>
Og tilsidst skal vi jo huske at slette sessionerne når brugeren vælge at logge ud!
(logout.php)
<?php
session_start();
unset($_SESSION['userid']);
unset($_SESSION['username']);
echo 'Du er logget ud';
?>
Så let er det...
| |
| Bedømmelse
Fra : Franksp |
Dato : 23-04-03 15:58 |
| | |
| Bedømmelse
Fra : senta |
Dato : 23-04-03 16:27 |
| | |
| Bedømmelse
Fra : Nakita |
Dato : 23-04-03 16:34 |
| | |
| Bedømmelse
Fra : vrigsted |
Dato : 23-04-03 17:01 |
| | |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke lave en bedømmelse til dette tip.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|