Gå til innhold

Vise innhold hvor kunde_id = 1


Anbefalte innlegg

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
Videoannonse
Annonse

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 av warpie
Lenke til kommentar

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 av Rigo
Lenke til kommentar

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

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 av warpie
Lenke til kommentar

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

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 av warpie
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...