09. december 2006 - 11:16Der er
35 kommentarer og 1 løsning
Adgang til side med adgangs nr.
Jeg har i min database oprettet 5 brugere med brugernavn, password og adgangs nr. Hver bruger har ikke samme adgangs nr.
På en side har jeg indsat dette stykke kode som kræver et adgangs nr. for at man kan logge sig ind på side.
<?php session_start();
require_once('../Connections/cms.php');
$user = $_SESSION['MM_Username']; $query = mysql_query("select * from brugere WHERE brugernavn = '$user'") or die (mysql_error()); $row=mysql_fetch_array($query);
if ($row['adgang'] != "1") { echo "<p style=\"color: #ff0000; margin: 0px; font-weight: bold;\">Du har ikke adgang hertil</p>"; exit; }else{ } ?>
Denne side vil jeg gerne give de 5 brugere tilladelse til.
Mit problem er at jeg ikke kan indsætte mere end et angangs nr. i dette felt her.: if ($row['adgang'] != "1") Har prøvet dette her: if ($row['adgang'] != "1-2-3-4-5") Har prøvet dette her: if ($row['adgang'] != "1.2.3.4.5") Har prøvet dette her: if ($row['adgang'] != "1_2_3_4_5")
I databasen er adgang under datatype sat til varchar
tror jeg er med nu. Du vil gerne gi' alle brugere adgang til en bestemt side, mens andre sider er det kun hvad der står i adgang, de har lov til at se?
På den side hvor alle kan kikke, behøver du jo ikke lave noget tjek på hvad adgang indeholder.
Nemt nok, det min kode gør er det omvendte. Den tjekker om der _ikke_ står noget i feltet adgang.. hvis ikke der gør det, jamen så har man ikke adgang (dermed er man almindelig bruger) og hvis der står noget så har man adgang..
Men som jeg siger så skal jeg vide hvad der står i feltet adgang ud for almindelige brugere.
Ja det kan jeg godt se, men man kan jo til enhver tid gå bagom og åbne siden direkte uden at skulle igennem et login, derfor vil jeg havde dette stykke kode indsat på siden så man derved låser siden total og skal igennem login.
Så har du ikke helt forstået koden.. Den søger jo gennem ens session.. dvs at hvis man ikke er logget ind, så finder den heller intet adgangsnummer.. dermed har man ikke adgang til siden.. så simpelt er det.. men hvis du nu så gerne vil have vist en tekst hvor man får at vide at man ikke har adgang, jamen så værsgod:
<?php session_start();
$username = $_SESSION['brugernavn'];
if ($username == "") { echo "Du er ikke logget ind, og har derfor ikke adgang til denne side!"; }else{
$sql = mysql_query("select * from brugere WHERE brugernavn = '$username'") or die(mysql_error()); $row=mysql_fetch_array($sql); $adgang = $row[adgang];
if ($adgang == "") { //ikke adgang }else{ //adgang }
} ?>
Og får 3. gang spørger jeg dig: hvad står der i feltet adgang for almindelige brugere?
simplus: jo det er kun admins som er oprettet. Måske du bedre forstår når jeg fortæller at programmet er et CMS program som jeg har lavet, hvor der er oprettet 5 admin som administrator selv kan bestemme hvad de skal havde adgang til.
Aha, perfekt.. Har du prøvet mit eksempel? Hvis du ændre navnene til dine navne så burde det virke.. ellers så kopier lige min kode som du bruger herind!
$user = $_SESSION['MM_Username']; $query = mysql_query("select * from brugere WHERE brugernavn = '$user'") or die (mysql_error()); $row=mysql_fetch_array($query);
if ($row['adgang'] != "1") { echo "<p style=\"color: #ff0000; margin: 0px; font-weight: bold;\">Du har ikke adgang hertil</p>"; exit; }else{ } ?>
Ja, det er næsten rigtigt. Du skal ikke sige: if ($row['adgang'] != "1") { Så tjekker du jo bare om man har adgang nr 1?
Så vidt jeg har forstået skal det spærre adgang for udefra kommene brugere.. dvs hos dem står der intet i feltet adgang.. dit script spærre jo også for admins med adgang nr 2,3,4 og 5
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.