16. oktober 2007 - 11:14
Der er
10 kommentarer og 1 løsning
Tildeling af rettigheder i et brugersystem.
Hej. Jeg har et brugersystem hvor jeg har tildelt forskellige brugere hver sin rank. Den almindelige bruger har rank 3, en moderator har rank 2 og admin har rank 1. Kan jeg lave en session eller lignende så ranken bliver gemt når en bruger logger ind, så der kan tildeles forskellige rettigheder. Jeg håber i kan hjælpe. jeg har følgende felter i min tabel: id username password rank #adduser_confirm.php# <?php require("config.php"); $adduser = $_POST['adduser']; if(empty($adduser)) { print "Felterne i oprettelses formularen skal udfyldes" ?> <br><a href="adduser.php">Klik her for at oprette en bruger</a> <?php } else { $username = $_POST['username']; $password = $_POST['password']; if(empty($username) OR empty($password)) { echo 'Alle felterne skal udfyldes!';} else { mysql_connect($mysql_host, $mysql_user, $mysql_pw); mysql_select_db($mysql_db); $result = mysql_query("select username from usersystem where username = '$username'") or die (mysql_error()); $number = mysql_num_rows($result); if ($number > 0) { print 'Desværre, brugernavnet er optaget.'; } else { mysql_query("insert into usersystem (username, password, rank) values ('$username', '$password', '3')") or die(mysql_error()); print "Brugernavn $username er oprettet!"; ?> <a href="login.php">Klik her for at logge ind</a> <?php } } } ?> #Login_confirm.php# <?php session_start(); require("config.php"); $login = $_POST['login']; if(empty($login)) { echo 'Denne side kræver login adgang'; } else { $username = $_POST['username']; $password = $_POST['password']; if(empty($username) || empty($password)) { echo 'Felterne "Brugernavn" og "Password" skal udfyldes!'; } else { mysql_connect($mysql_host, $mysql_user, $mysql_pw); mysql_select_db($mysql_db); $tael = mysql_query("SELECT COUNT(*) FROM usersystem WHERE username = '$username' AND password = '$password'")or die (mysql_error()); $antal = mysql_result($tael, 0); if($antal == 1) { $_SESSION[login] = true; header("location: test_side.php"); exit; } else { echo 'Forkerte login oplysninger!'; } } } ?> #test_side.php# <? session_start(); ?> <html> <head></head> <body> <?php if($_SESSION[login] == true){ echo 'du er logget ind.!'; } else { echo 'Forkerte login oplysninger!'; } ?> </body> </html> - Frederik
Annonceindlæg tema
16. oktober 2007 - 11:40
#1
Sådan? #Login_confirm.php# <?php session_start(); require("config.php"); $login = $_POST['login']; if(empty($login)) { echo 'Denne side kræver login adgang'; } else { $username = $_POST['username']; $password = $_POST['password']; if(empty($username) || empty($password)) { echo 'Felterne "Brugernavn" og "Password" skal udfyldes!'; } else { mysql_connect($mysql_host, $mysql_user, $mysql_pw); mysql_select_db($mysql_db); $tael = mysql_query("SELECT rank FROM usersystem WHERE username = '$username' AND password = '$password'")or die (mysql_error()); if(mysql_num_rows($tael) == 1) { $_SESSION['login'] = true; $row = mysql_fetch_assoc($tael); $_SESSION['rank'] = $row['rank']; header("location: test_side.php"); exit; } else { echo 'Forkerte login oplysninger!'; } } } ?>
16. oktober 2007 - 11:57
#2
Hvis jeg så på siden hvor funktionen skal være, skal have vist fx et link for brugere med rank 2. skal det så se sådan her ud? <? session_start(); ?> <html> <head></head> <body> <?php if($_SESSION[login] == true){ echo 'du er logget ind.!'; } else { echo 'Forkerte login oplysninger!'; } ?> <?php if($_SESSION[rank] == 2){ ?> <a href="link.dk">Link</a> <?php } else {} ?> </body> </html>
16. oktober 2007 - 12:07
#3
Ja, det ser meget fornuftigt ud. Dog vil jeg råde dig til at ændre: $_SESSION[rank] til: $_SESSION['rank']
16. oktober 2007 - 12:26
#4
Hmm.. det ser ikke ud til at virke... mine filer ser således ud: login_confirm.php <?php session_start(); require("config.php"); $login = $_POST['login']; if(empty($login)) { echo 'Denne side kræver login adgang'; } else { $username = $_POST['username']; $password = $_POST['password']; if(empty($username) || empty($password)) { echo 'Felterne "Brugernavn" og "Password" skal udfyldes!'; } else { mysql_connect($mysql_host, $mysql_user, $mysql_pw); mysql_select_db($mysql_db); $tael = mysql_query("SELECT COUNT(*) FROM usersystem WHERE username = '$username' AND password = '$password'")or die (mysql_error()); $antal = mysql_result($tael, 0); if($antal == 1) { $_SESSION[login] = true; $row = mysql_fetch_assoc($tael); $_SESSION['rank'] = $row['rank']; header("location: test_side.php"); exit; } else { echo 'Forkerte login oplysninger!'; } } } ?> test_side.php <? session_start(); ?> <html> <head></head> <body> <?php if($_SESSION['login'] == true){ echo 'du er logget ind.!'; } else { echo 'Forkerte login oplysninger!'; } ?> <?php if($_SESSION['rank'] == 2){ ?> <a href="link.dk">Link</a> <?php } else {} ?> </body> </html>
16. oktober 2007 - 12:36
#5
Du skal lige ændre lidt: $tael = mysql_query("SELECT rank FROM usersystem WHERE username = '$username' AND password = '$password'")or die (mysql_error()); $antal = mysql_num_rows( $tael );
16. oktober 2007 - 12:49
#6
Hmm.. jamen ødelægger det så ikke det, at den går ind og tjekker, at værdien kun skal være 1 ved et login?
16. oktober 2007 - 12:50
#7
Nej, det tjek er nemlig lagt over i brugen af mysql_num_rows()
16. oktober 2007 - 13:00
#8
Okay. Tak for hjælpen, det virker nu :) Hmm.. med hvad med point? er det muligt at dele forskelligt? for nielle's indsats ser ud til at have været størst? I hvert fald, smid nogle svar, så får i point ;)
16. oktober 2007 - 13:02
#9
Svar :^) Og ja, du kan godt fordele point forskelligt.
16. oktober 2007 - 13:24
#10
Giv du bare nielle point, han havde skrevet løsningen første gang.
16. oktober 2007 - 13:53
#11
dkfire--> Dejligt med storsindede brugere.! Tak for hjælpen til jer begge!
Vi tilbyder markedets bedste kurser inden for webudvikling