ERLEDIGT
NEIN
NEIN
ANTWORTEN
16
16
ZUGRIFFE
1658
1658
EMPFEHLEN
-
23.05.02 14:56 #1
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
Dankeinternetkonzept.de » Das Journal rund um Webstandards und Netzkultur
-
also du machst ein loginformular in der $login_user und $login_password an eine login.php übergeben werden.
diese sieht so aus:
Auf deiner Navigationsseite setzt du das hier ganz oben hin um die Variablen aus den Cookies auszulesen:PHP-Code:<?
// 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";
}
?>
Mit diesen Variablen kannst jetzt ja leicht vor jede Site ne If-schleife in der der nötige access level geprüft wird setzenPHP-Code:$eingeloggt = $HTTP_COOKIE_VARS['eingeloggt'];
$user_id = $HTTP_COOKIE_VARS['user_id'];
$user_access = $HTTP_COOKIE_VARS['user_access'];
Geändert von SpAder (23.05.02 um 16:04 Uhr)
42 Badewannen bitte!
-
23.05.02 16:49 #3
Coooolio und vielen Dank!
Es ****t! *freu*
Aber eins quält mich. In den Nukeseiten (lacht bitte nicht) steht oft folgende Syntax:
Was bedeutet das? Hat das was mit den im Cookie gespeicherten Variablen zu tun?PHP-Code:if(!isset($var) { exit(); }
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!internetkonzept.de » Das Journal rund um Webstandards und Netzkultur
-
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?42 Badewannen bitte!
-
23.05.02 17:01 #5
Yup, die habe ich aus nem nuke 4 script. Steht auf jeder Site in der ersten zeile.
internetkonzept.de » Das Journal rund um Webstandards und Netzkultur
-
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*
42 Badewannen bitte!
-
Ich denk mal eine Seite über dat Portal PHP Nuke, kennst du das. Hab einen Link dazu auf meiner PageOriginal 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*
-
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:
Und mit diesem bekommst du wieder die ursprünglichen Variablen:PHP-Code://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);
Ich hoffe es ****t einwandfrei.PHP-Code://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;
MFG
Koose
-
23.05.02 20:07 #9
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?internetkonzept.de » Das Journal rund um Webstandards und Netzkultur
-
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*42 Badewannen bitte!
-
Hi NoFate!
Jeder war mal ****, sogar ich
Ein Cookie setzt sich ja aus mehreren Teilen zusammen sie man alle mit dem setcookie-Befehl bestimmen kann. Der komplette Behfehl heißt:
NAME: Der Name des CookiesPHP-Code:setcookie("NAME","WERT","VERFALLSZEIT","PFAD","DOMAIN","SICHERHEIT")
WERT: Was halt drinnen steht
VERFALLSZEIT: Zeit wann das Cookie wieder weg ist. Am besten "time()+ XX" reinschreiben. time() bedeutet die jetzige Zeit und XX sind die Sekunden wie lange es ab jetzt da ist. Du kannst auch einfach nur eine Zahl hinschreiben, das sind dann aber die Sekunden seit 0:00 Uhr am 1.1.1970. Also mach lieber time().
PFAD: Der des Servers für den das Cookie gilt (bei members.tripod.de/ich ist es das ich)
DOMAIN: Die Domain des Servers (also members.tripod.de)
SICHERHEIT: Ob es nur über eine SSL Verbindung geschickt werden darf oder nicht (1 oder 0)
NAME und WERT müssen gesetzt sein, die anderen nicht. Bei PFAD und DOMAIN ist es dann der Server von dem das Cookie geschickt wird, bei SICHERHEIT ist es automatisch 0 (also nicht sicher).
So und wenn du jetzt ZEIT leer läst, dann gilt das Cookie nur bis zum schließen des Browsers und ist dann futsch.
Also läst du es am besten weg dann past alles
MFG
Koose
P.S.: Ich weiß ich schreib zu viel aber mir ist langweilig.
@SpAder
(Noch ein P.S. weil du es geschrieben hast während ich das hier geschrieben hab.)
Naja bei einer Privaten HP ist das ja kein Prob aber ich kenn einen SHOP da schreibt er 12 sachen in das Cookie und am Anfang hatten sies noch in einzellne gesteckt (keine Angst, war vor der Veröffentlichung). Da sag ich nur: Ade lieber Kunde.Geändert von Koose (23.05.02 um 21:09 Uhr)
-
@ Koose
hm yo doch das is echt n beispiel wo mans so machen sollte
(wer cookies einzeln bestätigt hats normalerweise eh ned verdient meine sites zu sehen
)
und wemmer grad schon dabei sind alles zum thema cookies zu erklären, dann hab ich ja glatt vergessen zu posten wie man den logout macht auch wenns ned wirklcih kompliziert ist (mich allerdings als ichs gelernt habe doch in mittlere verzweiflung stürtzte, weil ich nicht auf die idee mit negativem timewert kam und nach einem befehl uzm löschen von cookies gesucht habe *g*)
hier also meine logout.php:
einfach die cookies mit nem negativen timewert versehen.PHP-Code:setcookie("eingeloggt", "true", time()-3600);
setcookie("user_id", $user_id, time()-3600);
setcookie("user_access", $user_access, time()-3600);
42 Badewannen bitte!
-
24.05.02 14:52 #13
- Registriert seit
- Jan 2002
- Ort
- Betelgeuse
- Beiträge
- 709
noch mal zu dem text weiter oben.
wenn sie es benutzen würde es so:anstattPHP-Code:if(!isset($var)) { exit(); }
heißen.PHP-Code:if(!isset($var) { exit(); }
been there, done that, lived it, left it
-
Ich hasse solche Fehler, ich mach sie auch ständigOriginal geschrieben von brÅinstorm
noch mal zu dem text weiter oben.
wenn sie es benutzen würde es so:anstattPHP-Code:if(!isset($var)) { exit(); }
heißen.PHP-Code:if(!isset($var) { exit(); }
-
25.05.02 14:12 #15
Hi,
hehe hab ich auch schon bemerkt *g*
Bei mir passiert das auch ständig mit falschen oder vertippten Tabellennamen in der SQL-Abfrage. Und dann Stunden nach Fehlern Suchn! Geil!internetkonzept.de » Das Journal rund um Webstandards und Netzkultur
Ähnliche Themen
-
login mit session und cookie
Von lape im Forum PHPAntworten: 2Letzter Beitrag: 10.08.06, 14:36 -
Login Daten per Cookie speichern und automatisch bei erneutem login aufüllen
Von melistik im Forum PHPAntworten: 1Letzter Beitrag: 29.01.05, 12:11 -
Anfänger-Cookie-Problem == Cookie speichern & auslesen
Von altox-de im Forum PHPAntworten: 12Letzter Beitrag: 12.09.04, 12:30 -
Login Cookie für Wbb speichern!
Von i-mehl im Forum PHPAntworten: 26Letzter Beitrag: 08.03.04, 16:24 -
Problem bei Login/Cookie
Von [pG]Flo im Forum PHPAntworten: 4Letzter Beitrag: 19.06.02, 19:23





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren