?Login mit PHP & MySQL in Cookie speichern?

NoFate

Mitglied
Hi Community,

Ich hab da 'ne Datenbank in der meine User mit username, password und rank gespeichert sind. Diese Daten sollen nun ausgelesen und in einem Cookie gespeichert werden. Der Code zum auslesen ist mir bekannt, also bin net ganz dumm ;-).

Das Problem ist nun folgendes:
Jeder User darf nur die für ihn erlaubten Informationen bekommen. Es gibt insgesamt drei Ranks und jeder User hat 'ne eigene ID (is ja logisch). Diese Informationen (Rank & ID) müssen also im Cookie gespeichert werden und auf jeder Unterseite in Variablen geschrieben werden, da diese wiederum für die Datenbankabfragen relevant sind.
Sollte nun ein User versuchen, auf eine Unterseite zu gelangen, die nicht für ihne bestimmt ist, dann sollte er automatisch zur Loginseite geführt werden.
Es soll unbedingt 'ne Lösung mit Cookies sein!

Kennt irgendjemand ein verständliches (Online-)Tutorial oder hat gar ein Script, das sich abwandeln ließe?

Danke schon mal im Voraus für Eure Postings!

Best Regards
NoFate

Achja, bitte keine Tipps alá "kauf Dir mal nen PHP-Buch" oder ähnliches ;-)
Danke
 
also du machst ein loginformular in der $login_user und $login_password an eine login.php übergeben werden.
diese sieht so aus:

PHP:
<?
// Hier Verbindung zum Mysql-Server einfügen *g*
//

// die Logindaten einlesen
$login_user = $_GET['login_user'];
$login_password = $_GET['login_password'];

// Prüfen ob Benutzername und Password übereinstimmen
$query = "SELECT * FROM members WHERE (nick like '$login_user') AND (password = '$login_password')";
		$result = mysql_query ($query) or die("Zugriffstabelle konnte nicht geprüft werden: " . mysql_error());
		if (mysql_num_rows ($result) > 0) 
			{	
				// wenn ja cookie "$eingeloggt" setzen
				setcookie("eingeloggt", "true"); 
				
				// abfrage des Accesslevels des users
		  		$query = "select id, access from members where (nick like '$login_user')";
  				$result = mysql_query($query) or die (mysql_error());
  				$id_access = mysql_fetch_array($result);
				$user_id = $id_access[0];
 				$user_access =  intval($id_access[1]);
				// cookie "$user_id" mit der Id des Users setzen
				setcookie("user_id", $user_id); 
				// cookie "$user_access" mit dem accesslevel des users setzen
				setcookie("user_access", $user_access);
				include("site_top.php");
				echo "erfolgreich eingeloggt,<br>\n<a href='admin.php'>zur geschützten site</a>\n";	
		}
		else
			{
  				echo "Login fehlgeschlagen";
		}
?>

Auf deiner Navigationsseite setzt du das hier ganz oben hin um die Variablen aus den Cookies auszulesen:
PHP:
$eingeloggt = $HTTP_COOKIE_VARS['eingeloggt'];
$user_id = $HTTP_COOKIE_VARS['user_id'];
$user_access = $HTTP_COOKIE_VARS['user_access'];

Mit diesen Variablen kannst jetzt ja leicht vor jede Site ne If-schleife in der der nötige access level geprüft wird setzen
 
Zuletzt bearbeitet:
Coooolio und vielen Dank!

Es funzt! *freu*

Aber eins quält mich. In den Nukeseiten (lacht bitte nicht) steht oft folgende Syntax:
PHP:
if(!isset($var) { exit(); }
Was bedeutet das? Hat das was mit den im Cookie gespeicherten Variablen zu tun?

Wie immer vielen Dank!

Und an die Macher dieser Page, die mir Gott weiß warum bis vor kurzem nicht bekannt war:
Cool und weiter so!
 
if(!isset($var) { exit(); }

also das bedeutet ja dass wenn die Variable $var NICHT gesetzt ist die funktion exit() aufgerufen wird mit der das script ja beendet wird;

aber wo hast du das her? Nukeseiten?
 
tut jetzt nimmer viel zur sache, denn was es macht dürfte ja klar sein, aber ich hab echt keine ahnung was Nuke 4 ist *g*
 
Original geschrieben von SpAder
tut jetzt nimmer viel zur sache, denn was es macht dürfte ja klar sein, aber ich hab echt keine ahnung was Nuke 4 ist *g*

Ich denk mal eine Seite über dat Portal PHP Nuke, kennst du das. Hab einen Link dazu auf meiner Page:-)
 
Hi NoFate!

Du könntest das ganze noch auf ein Cookie reduzieren. Technisch bringt es zwar nichts, aber manche Leute müssen jedes Cookie bestätigen und das würde sich dann auf ein mal reduzieren.

Ersmal musst du mit folgendem Script alles in ein Cookie verpacken:

PHP:
//compact schreibt alle drei Variablen in ein Array
$arr=compact("eingeloggt","user_id","user_access");

//implode trennt die Teile des Arrays mit einem zeichen (hier &)
$str=implode("&",$arr);

setcookie("cook", $str, "", "", "", 0);

Und mit diesem bekommst du wieder die ursprünglichen Variablen:

PHP:
//Die & werden wieder raus genommen
$arr=explode("&",$cook);

//Das Array wird wieder in drei Teile geteillt (hier c_0 bis c_1) ACHTUNG! Zählt immer ab 0
foreach ($arr as $k=>$elem){
${"c_$k"} = $elem;
}

//Schließlich bekommen sie wieder die alten Namen
$eingeloggt=$c_0;
$user_id=$c_1;
$user_access=$c_2;

Ich hoffe es funzt einwandfrei.

MFG
Koose
 
Danke!

Endlich mal 'ne Community, wo man nicht gleich über Anfänger herfällt *g*

Eine Frage hab ich aber noch:
Wie krieg ich das hin, dass das (der?) Cookie sich beim schließen der Site selbst löscht?
 
hey brain, fette idee Koose
aber ich setz die variablen noch für einiges anderes auf meiner site ein da geh ich das risiko ein dass jemand 3 mal bestätigen muss *g*
 
Zurück