Rigo Skrevet 2. mars 2012 Del Skrevet 2. mars 2012 Jeg skal lage et mappesystem, hvor jeg ønsker å kun vise innholdet til de som har riktig bruker_id. Bruker_id'en ligger i en database på hver bruker. Jeg bruker følgende for å lage den innloggede "session"'en. <?php // Inialize session session_start(); // Check, if username session is NOT set then this page will jump to login page if (!isset($_SESSION['username'])) { header('Location: ../index.php'); } ?> Hvordan kan jeg finne lage et PHP skript som sjekker hvilken kunde_id den innloggede brukeren har? Lenke til kommentar
slacky Skrevet 2. mars 2012 Del Skrevet 2. mars 2012 (endret) Sett at alle brukerne har hver sin ID, så vil dette bli klumsette om så fort det blir mange.. Lag en til verdi i databasen til brukere, denne kan du kalde user_access (smallint) (eller ligende). Alle brukere som har tilgang, der setter du user_access = 2.. Mens resten får 1, eller 0. kjør denne spørringen i f.eks phpmyadmin: Jeg går ut i fra at du tabellen heter "users" (endre til korrekt). ALTER TABLE users ADD user_access smallint(3) unsigned NOT NULL DEFAULT '0'; Deretter så ender du alle brukere med rettigheter til 2 (Eg: slik kan det gjøres:) UPDATE users SET user_access=2 WHERE user_id='<insert userid>'; på denne måten så kan du kjøre en veldig enkel spørring: $sql = mysql_query("SELECT user_access FROM users WHERE username='".$_SESSION['username']."'"); $data = mysql_fetch_array($sql); if($data['user_access'] == 2) { **place kode here** } Endret 2. mars 2012 av warpie Lenke til kommentar
Rigo Skrevet 2. mars 2012 Forfatter Del Skrevet 2. mars 2012 (endret) Problemet mitt er at hver bruker skal ha tilgang til forskjellige filer. Har du forslag til andre måter jeg kan gjøre dette på, si gjerne i fra! Takk for svar! EDIT: Tror dette kan funke om jeg lager individuelle mapper med en index.php fil i EDIT 2: Får det ikke til å funke.. Den gir ikke noen form for output med dette: if($data['user_access'] == 2) { echo "TEST"; } Querien ser sånn her ut. $data = mysql_query("SELECT user_access FROM user WHERE username='".$_SESSION['username']."'") Endret 2. mars 2012 av Rigo Lenke til kommentar
Warz Skrevet 2. mars 2012 Del Skrevet 2. mars 2012 Hva får du hvis du skriver: echo '<pre>'; print_r($data); echo '</pre>'; ? og husket du denne linjen? $data = mysql_fetch_array($sql); Lenke til kommentar
Rigo Skrevet 2. mars 2012 Forfatter Del Skrevet 2. mars 2012 Hjelper ikke med dette heller.. <?php // Inialize session session_start(); // Check, if username session is NOT set then this page will jump to login page if (!isset($_SESSION['username'])) { header('Location: ../index.php'); } ?> <?php // Connects to your Database mysql_connect("localhost", "root", "Passord123") or die(mysql_error()); mysql_select_db("users") or die(mysql_error()); $data = mysql_query("SELECT user_access FROM user WHERE username='test'") or die(mysql_error()); Print "<table border cellpadding=3>"; while($info = mysql_fetch_array( $data )) { Print "<tr>"; Print "<th>Name:</th> <td>".$info['user_access'] . "</td> "; Print "<th>Pet:</th> <td>".$info['user_access'] . " </td></tr>"; } Print "</table>"; if($data['user_access'] == 2) { echo '<pre>'; print_r($data); echo '</pre>'; } ?> Lenke til kommentar
slacky Skrevet 2. mars 2012 Del Skrevet 2. mars 2012 (endret) Hvilken feilmelding får du..? Gå inn i phpmyadmin å se om kolonnen faktisk er satt opp.. Ps: $data = mysql_query("SELECT user_access FROM user WHERE username='test'") ..... Du har glemt avsluttende semikolon på alle eksempler..: $data = mysql_query("SELECT user_access FROM user WHERE username='test'"); Så lenge du navigerer deg med feilmeldinger, så får du ALTID vite hva som er feil, og hvor.. Post dem her. Husk: E_ALL i php.ini, om du ikke har den der (feilmedlinger/error_reporting). Endret 2. mars 2012 av warpie Lenke til kommentar
Rigo Skrevet 3. mars 2012 Forfatter Del Skrevet 3. mars 2012 Jeg fikk ingen feilmelding før jeg la til ; på slutten.. Det var bare ingenting som kom opp. Når jeg legger til ; får jeg dette: Parse error: syntax error, unexpected T_LOGICAL_OR in C:\xampp\htdocs\selvlaget\kunder\1\index.php on line 18 Lenke til kommentar
slacky Skrevet 3. mars 2012 Del Skrevet 3. mars 2012 (endret) Baklager min feil.. Er ikke vandt med at folk putter "or die();" på linjen under. Jeg klarer ikke reprodusere feilen du får... Jeg bruker føelgende kode, og det fungerer HELT fint. <?php mysql_connect("localhost", "root", ""); mysql_select_db("chat"); $sql = mysql_query("SELECT user_access FROM users WHERE user_name='slacky'"); $data = mysql_fetch_array($sql); if($data['user_access'] == 2) { echo "You are a robot!<br />"; } echo $data['user_access']; ?> Prøv denne du... Hva printes ut på siste linje? Fungerer ikke dette?? Har du satt opp databasen din korrekt? Eksisterer user_access?? har brukeren din fått verdi? (0) skal være standard, om du fulgte mitt oppsett. Brukerdatabasen din skal vel se noe slik ut, var planen da: CREATE TABLE IF NOT EXISTS `users` ( `user_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `user_name` varchar(32) NOT NULL DEFAULT '', `user_password` varchar(32) NOT NULL DEFAULT '', `user_access` smallint(3) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2; Endret 3. mars 2012 av warpie Lenke til kommentar
Rigo Skrevet 3. mars 2012 Forfatter Del Skrevet 3. mars 2012 Takk for raske svar, men jeg gjør det på en annen måte. Jeg sjekker SESSION brukernavnet opp mot navn som eksisterer i databasen, ettersom hver bruker skal ha tilgang til hver sin side. Takk for hjelpen! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå