Login -> User-Rechte

cille

Erfahrenes Mitglied
Hi ho,
habe mein Login mit rechten erweitert,
habe auch in der Datenbank eine zelle mit dem namen "rights" erzeugt.

Was ist sicherer?
Mit Session dies zu machen oder direkt aus der datenbank ein vergleich.

Habe außerdem mit Session etwas Probiert,
aber es funktioniert irgendwie nicht,
hier mal der code:
PHP:
if ($_SESSION["user_rights"] == "3") {
  echo "Guckst du hier";
} 
else {
  echo "Guckst du weck";
}

Könntet Ihr mir vieleicht helfen und ein Rat geben?
 
In der Datenbank musst Du die Rechte eh speichern, denn die Sessions bestehen ja nicht ewig und somit wuerden die Rechte auf ewig verloren gehen.
Meiner Meinung nach ist es vollkommen okay die Rechte mit in der Session zu speichern da diese ja nicht zum Client uebertragen wird sondern auf dem Server bleibt, genau wie ja die Datenbank. Der Vorteil ist halt, dass Du nicht bei jedem Seitenaufruf extra in der DB nachsehen musst ob der User denn auch wirklich gucken darf, Du brauchst nur in der Session zu schauen.
 
Danke für eure antworten und Tipps.

Jop, es wird ja alles in die index.php includet,
und dann auch aufgerufen in index.php?profil usw.
und die checkuser.php wo ich die user checke ob eine Session aktiv ist oder nicht ist ja auch includet.

Ick Poste einfach mal, die kleinen sachen:
checkuser.php
PHP:
<?php 
ob_start ();
session_start();
if (!isset ($_SESSION["user_id"])) { 
	header ("Location: index.php?profil");
} 
ob_end_flush (); 
?>

profil.php
PHP:
// Anfang der datei
<?php
if (isset ($_GET["profil"]) && isset ($_GET["profil"])) {
	include ("system/checkuser.php"); 
	include ("config.php");

if (empty($_SESSION["user_rights"]) == "4") {
?>
--> Ende der Datei
<?php
	} 
	else {
	echo "Sie sind nicht berechtigt dies zu sehen";
	}
	
}
?>

login.php
PHP:
<?php  
ob_start();
// Datenbankverbindung aufbauen  
include("../config.php"); 
if (!mysql_select_db("$dbname", $dbconnect)) {  
  die ("Keine Verbindung zur Datenbank");  
}  
$sql = "SELECT id, username, nachname, vorname, email, password FROM user WHERE username = '".mysql_real_escape_string($_REQUEST["username"])."'";
$result = mysql_query($sql);   

if (mysql_num_rows ($result) > 0)  {   
  // Benutzerdaten in ein Array auslesen.   
    $data = mysql_fetch_array($result);   
    if($data["password"] == md5($_REQUEST["password"])) {
        session_start();
  // Sessionvariablen erstellen und registrieren   
        $_SESSION["user_id"] = $data["id"];
				$_SESSION["user_username"] = $data["username"];
				$_SESSION["user_rights"] = $data["rights"];

        header ("Location: ../index.php?profil"); 
    } else {
        header ("Location: ../index.php?fehler=1");
    }
} else {
   header ("Location: ../index.php?fehler=1");   
} 
ob_end_flush(); 
?>
 
hi,

also falls du in der Session die Zahl 3 speicherst, wird des mit dem vergleich wohl nix.
Du vergleichst da nämlich die Session mit dem String 3.

Probiers einfach mal ohne die "".

Des mit dem speichern der Rechte in der Session find ich ok, da ständige Abfragen die DB belasten würden.(Oder lieg ich da falsch?)

MfG
paddz
 
mhhh, habe mal versucht:
echo $_SESSION["user_rights"];

meine Rechtenummerierung auszugeben,
aber er gibt nichts aus, ist ja komisch
aber
echo $_SESSION["user_username"];

Funktioniert.

Die $_SESSION wird in der login.php gespeichert,
hab ich da was falsch?
 
Hallo!

Die profil.php macht irgendwie keinen Sinn.....
PHP:
if (isset ($_GET["profil"]) && isset ($_GET["profil"])) {
Hier fragst Du ob "profil" gesendet wurde und ob "profil" gesendet wurde..... also doppelt gemoppelt. ;)
PHP:
if (empty($_SESSION["user_rights"]) == "4") {
Hier fragst Du ob die Session "user_rights" leer ist und versuchst diese dann auch noch zu vergleichen?! :eek:

Gruss Dr Dau
 
Hallo!

Die profil.php macht irgendwie keinen Sinn.....
PHP-Code:
if (isset ($_GET["profil"]) && isset ($_GET["profil"])) {
Hier fragst Du ob "profil" gesendet wurde und ob "profil" gesendet wurde..... also doppelt gemoppelt.
PHP-Code:
if (empty($_SESSION["user_rights"]) == "4") {
Hier fragst Du ob die Session "user_rights" leer ist und versuchst diese dann auch noch zu vergleichen?!

Gruss Dr Dau

jo schon geändert habe jetzt
PHP:
if ($_SESSION["user_rights"]) == 4) {

funktionopelt aber immer noch nicht :(
kann auch kein fehler finden

[EDIT]
Lol jetzt funktionierts ^^,
hab den fehler gefunden,
muss mich doch neu einloggen mit der die Rights in einer Session speichert ^^.
 
Zuletzt bearbeitet:
hi,

wenns nun funktioniert -> sehr gut ^^.

Dann kannst den Threat auch als erledigt markieren.

wobei ich mich schon frag woher du die user_rights bekommst.
Denn nach dem php code:
PHP:
$sql = "SELECT id, username, nachname, vorname, email, password FROM user WHERE username = '".mysql_real_escape_string($_REQUEST["username"])."'";

hohlst du dir die nirgends.

Naja es funtzt ja;)

MfG
paddz
 
oh sry vergessen erledigt zu makieren ^^,
ja ist dir gut aufgefallen ^^, hat ich nach der erstellung des Threades auch gesehen da kommt ja noch ein , rights ran ^^.

Ok danke nochmal
 

Neue Beiträge

Zurück