Jeg har en admin login funktion og jeg skal til at lave en bruger login funktion på min side. Derfor skal det jo altså defineres om man er logget ind som admin eller bruger, men hvordan gøres dette?
Efter man er logget ind, skal man altså (som admin) kunne se en menu, som man kun kan se/benytte hvis man er logget ind som admin... Håber det er til at forstå, min login.php ser således ud:
$row = mysql_query("SELECT * FROM admin WHERE username = '$username' AND password = '$password'") or die (mysql_error());
if(mysql_num_rows($row) == 1) { echo "Du er nu logget ind<br>"; } else { echo "Brugernavn eller kodeordet var forkert"; } include("closecon.php"); ?>
Hvis jeg så efter <br> i "Du er nu logget ind" lavede et link til en side f.eks. kaldet "admin_sendbesked.php" så skulle den gerne vide i admin_sendbesked.php at det er en admin.
Du kan gemme en værdi i tabellen, som f.eks. er 0 eller 1, og hvis det er admin, så har den værdien 1. Ved udtræk kan du så tjekke værdien, og sætte en session som fortæller det er admin.
For det første burde du nok validere dine bruger input, for at sikre mod mysql injection attacks. Dette kan fx gøres simpelt med mysql_real_escape_string funktionen.
For det andet burde du overveje at hashe dine passwords for øget sikkerhed.
Mht til dit spørgsmål kan du sætte en session variabel der er lig med fx 1 hvis du har at gøre med en admin og 0 hvis du har at gøre med en alm. bruger.
Simpelt eksempel i session variable: Login side: <?php session_start(); if($user == "admin"){ $_SESSION['user_rights'] = 1; } ?>
Hjemmeside: <?php session_start(); if($_SESSION['user_rights'] == 1){ // Vis admin indhold } else{ // Vis alm. bruger indhold } ?>
hmm, lad os sige du har et felt i db med brugernavn kaldet "username" og et felt kaldet "adminstatus" ( Jeg mener at "status" er et reserveret ord i mysql, så lad endelig være med at bruge det som navn på et felt. "by" er et andet ex. på reserveret ord )
"adminstatus" er et felt af typen INT ( et tal ), og standardværdi er 0 Det row som er admin, er feltet "adminstatus" sat til 1
$row = mysql_query("SELECT username, adminstatus FROM admin WHERE username = '$username' AND password = '$password'") or die (mysql_error());
Jeg må ærligt sige at jeg kun kan følge med på nogle af tingene :(
Kan en af jer skrive en lille guide til hvad jeg skal gøre, eller hvordan min login.php skal se ud? Og hvordan gør jeg det med databasen? Ville være super
Som showsource skrev: "Og ja, sikring af query er et must.". Netop derfor bør du glemme alt om gamle, dårlige 'hacks' som mysql_real_escape_string og i stedet bruge mysqli med prepared statements: http://dk2.php.net/manual/en/book.mysqli.php
Det er dagens og morgendagens måde at bruge MySQL-databaser på under PHP - og du behøver ikke længere tænke på SQL-injections ;o)
/mvh </bole>
Synes godt om
Ny brugerNybegynder
Din løsning...
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.