Jeg har et login script på min website, som fungere ganske udmærket. Jeg har dog brug for ekstra funktionalitet.
Når man er logget ind, har man adgang til alle sider. Jeg har brug for at man per bruger kan benytte hvilke sider man har adgang til. Det kan f.eks. være noget i stil med: Bruger1: adgang til Page1 Bruger2: adgang til Page1 + Page2 Bruger3: adgang til Page1 + Page2 + page 3
Der vil altid være et hierarki, så hvis man f.eks. har adgang til Page3, så vil man også have adgang til page1 + page2 også.
Hej Indsæt en kolonne mere i din database, kald den f.eks. "status". Denne gives en værdi alt efter hvor mange sider der skal være adgang til, jo højere værdi jo flere sider er der adgang til.
På de beskyttede sider spørges der så til værdien fra "status"
logisk set har man man har en to dimensionel tabel med brugere/grupper/roller ud af den ene akse og sider/sidegrupper ud af den anden akse og for hver komnbination angives adgang
Jeg har adderet en kolonne med status, og prøvet at ligge det ind i nedenstående: <?php session_start(); if (!isset($_SESSION["brugernavn"])) { header("Location: index.php"); } IF($status>= 3) ?>
Hej du skal også trække værdien af status ud igen fra databasen og f.eks lægge værdien i en session.
På den side hvor logind skal fortages kan koden være sådan:
session_start(); ob_start(); $værdi = S_SESSION['værdi']; IF($værdi>=3){den kode der skal udføres hvis logind er ok;} else { header("Location: XXXXX.php");} Thomas V
i din sql skal der stå: if ($post[0] == 1) { $_SESSION["brugernavn"] = $brugernavn; $_SESSION['status']=$post['status']; header("Location: internal.php");
På den side hvor logind skal fortages kan koden være sådan:
session_start(); ob_start(); $status = S_SESSION['status']; IF($status>=3){den kode der skal udføres hvis logind er ok;} else { header("Location: XXXXX.php");} Thomas V
Tak din hjælp. Jeg har prøvet at rette koden til, men får denne fejl: Parse error: syntax error, unexpected '[' in /home/virtual/jungdo.dk/public_html/4dan_gigusul.php on line 32 Linie 29
Hej Teksten "den kode der skal udføres hvis logind er ok" er skrevet for at fortælle dig at det er her den kode som skal udføres når log-in er ok skal stå. Denne linie giver fejl: IF($status>=3){den kode der skal udføres hvis logind er ok;}
men denne giver ikke fejl: IF($status>=3){echo 'den kode der skal udføres hvis logind er ok';}
Hver enkelt bruger skal så tildeles en værdi som skal stå i tabellen hvor du tjekker navn og kode #1
Som jeg ser det har du ikke nogen værdi i $status.
Du kan se den værdi som status har ved at skrive: echo"<br> STATUS er = ".$status; hvis du samtidig sætter // foran header("location:XXX.php"); for så bliver man på siden.( se svar #6) Håber at det hjælper dig.
Hej Jeg tror at vi skal starte med at finde ud af om du får dine data ud af tabellen som ligger i en database. Her er en kopi af min tilslutning til min tabel som er MYSQLI som efter min mening er nemmere at arbejde med og for tabellen er der ingen forskel.
<?php ob_start();// Det script her er i MYSQLI
$server = "localhost";//Disse fire linier skal $brugerident = "root";// tilrettes dine $kode = "taunus12m";// tilslutnings data $db = "brugere";//
$mysqli = mysqli_connect($server, $brugerident, $kode, $db); /* Tjek, om der opstod en fejl */ if (!$mysqli){die("connektion failed:". mysqli_connect_error());} else { echo 'Forbindelsen er oprettet: <br/>'; } /* change character set to utf8 */ $mysqli->set_charset("utf8");
// I næste afsnit hentes oplysninger fra logindform.
$brugernavn=$_POST['brugernavn'];echo '<br>BRUGERNAVN er = '.$brugernavn; $adgangskode=$_POST['adgangskode'];echo '<br>ADGANGSKODE er = '.$adgangskode; // $brugernavn ="xxxxxxxx"; $adgangskode="yyyyyy"; /* i test perioden kan xxxx og yyyy erstattes med de rigtige data og // fjernes i begyndelsen af linierne*/
if(trim($brugernavn)!="" && trim($adgangskode)!="") // Tester om der er data i begge variabler { if($stmt=$mysqli->prepare('SELECT id,navn,kode,status FROM brugere WHERE navn=?')) { $stmt->bind_param('s',$navn); $stmt->execute(); $stmt>bind_result($bruger_id,$bruger_navn,$bruger_kode,$status); $stmt->fetch(); $stmt->close(); $id=$bruger_id; echo "<br>ID er = ". $id; echo "<br>BRUGERNAVN er = ".$bruger_navn; echo "<br> BRUGERKODE er = ".$bruger_kode; echo "<br> STATUS er = ".$status; } else { echo 'Der er i øjeblikket ikke adgang til databasen. Prøv igen senere.'; die(); } //inderste if-else afsluttes } else { $fejl=1; echo '<br>Fejl i 48 er ='.$fejl; die(); }//yderste if-else afsluttes ?>
Når du får dine data ud af tabellen kan du gå videre med at behandle de data du har fået ud.
Hej RETTELSE Hvis du er i tvivl skal det skrives sådan:
if(trim($brugernavn)!="" && trim($adgangskode)!="") // Tester om der er data i begge variabler { if($stmt=$mysqli->prepare('SELECT id,navn,kode,status FROM brugere WHERE navn=?')) { $stmt->bind_param('s',$navn); $stmt->execute(); $stmt->bind_result($bruger_id,$bruger_navn,$bruger_kode,$status); $stmt->fetch(); $stmt->close(); $id=$bruger_id; echo "<br>ID er = ". $id; echo "<br>BRUGERNAVN er = ".$bruger_navn; echo "<br> BRUGERKODE er = ".$bruger_kode; echo "<br> STATUS er = ".$status;
Thomas V
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.