mit bud er at bede om username og password i en form, og derefter $result = mysql_query("select * from `tabel_navn` where `username`='".$_POST["username"]."' and `password`='".$_POST["password"]."'");
if (mysql_num_rows($result) != 1) die("Forkert brugernavn eller adgangskode");
du skal huske session_start(); øverst på siden, altså før der er kommet noget output fra dit dokument. det skal stå i toppen på alle de sider du bruger sessions.
ellers virker sessions som et normalt array. $_SESSION["admin_level"] får altså den værdi som bliver hentet fra databasen. og den husker den så.
så sessions bruges bare som normale variabler: if ($_SESSION["admin_level"] == 10) { ... } else { die("Du har ikke adgang!"); }
<?php $conn = mysql_connect("xxxxx", "xxxxx", "xxxxx") or die(mysql_error()); $db = mysql_select_db("xxxxx") or die(mysql_error()); ?> <?php $result = mysql_query("select * from `admins` where `username`='".$_POST["username"]."' and `password`='".$_POST["password"]."'");
if (mysql_num_rows($result) != 1) die("Forkert brugernavn eller adgangskode");
<?php session_start(); ////// <------- VIGTIGT for at sessions virker $conn = mysql_connect("xxxxx", "xxxxx", "xxxxx") or die(mysql_error()); $db = mysql_select_db("xxxxx") or die(mysql_error()); ?> <?php $result = mysql_query("select * from `admins` where `username`='".$_POST["username"]."' and `password`='".$_POST["password"]."'");
if (mysql_num_rows($result) != 1) die("Forkert brugernavn eller adgangskode");
men når du så kommer videre til den side hvor der skal administreres noget, kan du hente det der er gemt i din session.
altså når du først er logget ind, kan du gå videre til administrationssiden:
admin.php
<?php session_start(); if ($_SESSION["admin_level"] != 10) // eller hvad der nu står i admin_level { die("Du har ikke adgang til denne del!"); } else { // form til at rette det man nu skal rette }
med hensyn til at se om du er logget på, kan du i login.php tilføje $_SESSION["username"] = $row["username"];
og når du så skal se om man er logget på: if (isset($_SESSION["username"])) { echo "du er logget på som ".$_SESSION["username"]; } else { echo "Du er ikke loget på!"; }
<?php session_start(); if ($_SESSION["admin_level"] != 10) { die("Du har ikke adgang til denne del!"); }
hvis det her står i toppen af alle de sider hvor man skal være logget ind for at se dem eller rette dem, bliver de kun vist til dem der har admin_level på 10.
du han ændre != 10 til hvad det skal være. fx if ($_SESSION["admin_level"] < 10)
så kan siden kun ses af dem der har 10 eller der over
<?php session_start(); if ($_SESSION["admin_level"] > 10) // eller hvad der nu står i admin_level { die("Du har ikke adgang til denne del!"); } else { // form til at rette det man nu skal rette }
// med hensyn til at se om du er logget på, kan du i login.php tilføje $_SESSION["username"] = $row["username"];
// og når du så skal se om man er logget på: if (isset($_SESSION["username"])) { echo "du er logget på som ".$_SESSION["username"]; } else { echo "Du er ikke logget på!"; } ?>
Men uanset om jeg er logget på eller ej, så står der "Du er ikke logget på!"! Skal man stadig konnekte til databasen? For at få username udskrevet?
Jeg tror at du misforstår mig! Jeg har f.eks. et par sider, som kun administration må se, når jeg skriver følgende på disse sider:
<?php session_start(); if ($_SESSION["admin_level"] > 10 && isset($_SESSION["admin_level"])) { die("<a href=\"loginform.php\">Du har ikke adgang til denne del!</a>"); }
if (isset($_SESSION["username"])) { echo "du er logget på som ".$_SESSION["username"]; } else { echo "Du er ikke logget på!"; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> fortroligt <body> </body> </html>
så kan man stadig se "fortroligt"-teksten, hvis man ikke er logget på, der må være en fejl, ikke?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.