dauerhafte Login
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
benutzer
betrachten
code
dank
datei
header
helfen
http
index
login
manual
null
relative url
server
session
stehen
tip
url
weiterleiten
-
kann mir jemand helfen
und zwar wenn ich eingeloggt bin und dann auf andere seite gehe und dann zuruck zu index.php es loggt sich immer aus
ich brauche so login so lange bis user ausgeloggt hatt oder die seite verlassen hat ich hab Autologout.php
aber es funktoniert egend wie nicht richtig
hier sind die PHPs
index.php
http://tshaika.lima-city.de/index.txt
autologout.php
<?php error_reporting(E_ALL); include("mysql.php"); // Prüfen, ob ein Autologin des Users stattfinden muss if(isset($_COOKIE['Autologin']) AND !isset($_SESSION['UserID'])){ $sql = "SELECT ID FROM User WHERE Autologin = '".mysql_real_escape_string($_COOKIE['Autologin'])."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result); if(mysql_num_rows($result) == 1) doLogin($row['ID'], '1'); } // Online Status der User aktualisieren if(isset($_SESSION['UserID'])){ $sql = "UPDATE User SET Letzte_Aktion = '".time()."' WHERE ID = '".$_SESSION['UserID']."' "; mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); } // User ohne Autologin ausloggen $sql = "UPDATE User SET SessionID = NULL, Autologin = NULL, IP = NULL WHERE '".(time()-60*20)."' > Letzte_Aktion AND Autologin IS NULL "; mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); // Kontrollieren, ob ein automatisch ausgeloggter User noch eine gültige Session besitzt if(isset($_SESSION['UserID'])){ $sql = "SELECT SessionID FROM User WHERE ID = '".$_SESSION['UserID']."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result); if(!$row['SessionID']){ $_SESSION = array(); session_destroy(); } } ?>
DANKE VORAUS
Beitrag zuletzt geändert: 12.3.2013 12:24:12 von tshaika -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Am einfachsten und unsichersten legst du UserID und das Passwort im Keks ab.
Edit:
Der gute Mann meint wohl http://php.net/manual/en/features.cookies.php
Beitrag zuletzt geändert: 12.3.2013 13:08:13 von adrians -
hcms schrieb:
hi tshaika,
wo ist das
geblieben ?session_start()
in seitenkopf.php ganz oben bei verbindungen!! -
ganz oben und wenn login erfolgreich machst du sosession_start();
$_SESSION['login'] == TRUE;
und in den dateien der logincheck:
if($_SESSION['login'] == TRUE) { echo 'eingeloggt'; } else { echo 'ausgeloogt'; }
-
infinitywar schrieb:
ganz oben und wenn login erfolgreich machst du sosession_start();
$_SESSION['login'] == TRUE;
und in den dateien der logincheck:
if($_SESSION['login'] == TRUE) { echo 'eingeloggt'; } else { echo 'ausgeloogt'; }
Meinst du so
<?php include ("seitenkopf.php"); session_start(); if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){ // Falls der Nickname und das Passwort übereinstimmen.. $sql = "SELECT ID FROM User WHERE Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND Passwort = '".md5(trim($_POST['Passwort']))."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); // wird die ID des Users geholt und der User damit eingeloggt $row = mysql_fetch_assoc($result); // Prüft, ob wirklich genau ein Datensatz gefunden wurde if (mysql_num_rows($result)==1){ .......................und so Weiter......................... } else{ ?> <p> Sie konnten nicht eingeloggt werden.<br> Nickname oder Passwort fehlerhaft.<br> Zurück zum <a href=<?php echo $_SERVER['PHP_SELF'];?>">Login-Formular</a> </p> <?php } } else{ ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table> <tr> <td><p>Nickname: </p></td> <td><input type="text" name="Nickname" maxlength="32"></td> </tr> <tr> <td><p>Passwort: </p></td> <td><input type="password" name="Passwort"></td> </tr> <tr> <td><p>eingeloggt bleiben: </p></td> <td><input type="checkbox" name="Autologin" value="1"></td> </tr> <tr> <td><a href=" verifiziere.php">Passwort vergessen</a></td> <td><input type="submit" name="submit" value="Einloggen"></td> </tr> </table> </form> <?php } include("seitenfuss.php"); ?> doLogin($row['ID'], isset($_POST['Autologin'])); $_SESSION['login'] == TRUE; if($_SESSION['login'] == TRUE) { echo 'eingeloggt'; } else { echo 'ausgeloogt'; }
-
Das $_SESSION['login'] == TRUE; musst du dorthin hauen wo er den Login checkt und es erfolgreich ist ansonsten OK ;)
-
Eine session muss/sollte vor dem Erzeugen einer Ausgabe erfolgen d.h. eigentlich immer direkt nach <?php:
<?php session_start(); include 'seitenkopf.php'; // ....
-
Vielleicht reicht die Lifetime nicht aus. Versuch die mal wie in der PHP Dokumentation beschrieben zu setzten.
-
nilsmargotti schrieb:
mysql_real_escape_string() dat is.
Ein Tipp: MYSQL-Injections sind sehr effektiv und können viel kaputt machen. Benutze vor der abfrage mysql_real_escape().
Man beachte des weiteren den roten Vermerk was die Zukunft der Funktion angeht, sowie der Verweis auf die empfohlene Alternative für MySQLi
Edit:
Für die Benutzer, die Cookies deaktiviert haben, solltest du die Session_ID jeweils mit einem hidden field übergeben, andernfalls werden diese dauerhaft nur das Loginfenster betrachten können!
MfG T
Beitrag zuletzt geändert: 15.3.2013 16:47:05 von tee -
tee schrieb:
Für die Benutzer, die Cookies deaktiviert haben, solltest du die Session_ID jeweils mit einem hidden field übergeben, andernfalls werden diese dauerhaft nur das Loginfenster betrachten können!
naja eigentlich sollte der server die sessionid automatisch als transparenten get-link an jede relative url hängen wenn cookies nicht zur verfügung stehen... -
hcms schrieb:
tee schrieb:
Für die Benutzer, die Cookies deaktiviert haben, solltest du die Session_ID jeweils mit einem hidden field übergeben, andernfalls werden diese dauerhaft nur das Loginfenster betrachten können!
naja eigentlich sollte der server die sessionid automatisch als transparenten get-link an jede relative url hängen wenn cookies nicht zur verfügung stehen...
Eben nicht, sonst wär's automatisch aktiviert. Siehe auch session.use_trans_sid
Sollte der Server das also deaktiviert haben, müsste man an dieser Stelle scriptseitig nachhelfen. Wobei die Leute gern URLs mitsamt SID versenden und sich am Ende wundern, dass da irgendwer in ihrem Account rumpfuscht.
Beitrag zuletzt geändert: 15.3.2013 17:13:29 von fabo -
hcms schrieb:
Du meinst, wenn in der php.ini session.use_trans_sid aktiviert ist, was nicht immer zwingend der Fall sein muss. Es ist jedem selbst überlassen, ob er sich darauf verlassen möchte.
naja eigentlich sollte der server die sessionid automatisch als transparenten get-link an jede relative url hängen wenn cookies nicht zur verfügung stehen...
Des weiteren übergebe ich persönlich die ID einer Session lieber via Post als via Get, aber war schlussendlich nur ein gut gemeinter Ratschlag meinerseits.
Edit:
Da war einer schneller, doofe Handytastatur :-)
MfG T
Beitrag zuletzt geändert: 15.3.2013 17:27:03 von tee -
Sorry das so lange gedauert
ich habe paar tips von gefolft aber funktioniert immer noch nicht richtig es loggt sich bei nexte click aus
kann mir noch mall helfen
hier noch mall alle PHPs auf einen Blick
http://tshaika.lima-city.de/MeinDATA.txt
Danke -
tshaika schrieb:
Sorry das so lange gedauert
ich habe paar tips von gefolft aber funktioniert immer noch nicht richtig es loggt sich bei nexte click aus
kann mir noch mall helfen
hier noch mall alle PHPs auf einen Blick
http://tshaika.lima-city.de/MeinDATA.txt
Danke
In Wirklichkeit bist du eingeloggt, jedoch wird das nicht gezeigt.
Und so eine Abfrage musst du auf jeder deiner Seiten machen.
Das heißt du kannst diese Datei nicht für www.meineseite.de/index.php?s=seite1 nehmen und bei www.meineseite.de/index.php?s=seite2 nicht mehr.
if($_SESSION['login'] == TRUE) { Hier dein HTML Code o.ä. für eingeloggt. } else { Hier dein HTML Code o.ä. für ausgeloggt. }
Und lass das aus deinem Code mal raus:
<?php session_unset(); $_SESSION=array(); ?>
Fürs ausloggen nimmst du diesen Befehl.
session_destroy(); header(Location: index.php); // Kannst du auch weglassen und einen Meta Code hinschreiben.
-
mir ist noch was aufgefahlen
wenn ich einlogge dann kommt index.php und nicht de/index.php?s=
ich dennke dass ist das problemm -
tshaika schrieb:
mir ist noch was aufgefahlen
wenn ich einlogge dann kommt index.php und nicht de/index.php?s=
ich dennke dass ist das problemm
Falls du gerade header() zum weiterleiten benutzt, steht in header() wohin er weiterleiten soll. Dann einfach index.php durch de/index.php?s= ersetzen. -
midwar schrieb:
tshaika schrieb:
mir ist noch was aufgefahlen
wenn ich einlogge dann kommt index.php und nicht de/index.php?s=
ich dennke dass ist das problemm
Falls du gerade header() zum weiterleiten benutzt, steht in header() wohin er weiterleiten soll. Dann einfach index.php durch de/index.php?s= ersetzen.
nein ich habe nicht gefunden
das lauft Über SESSION
kannst bitte bitte mir helfen?
die php findes du hier
http://tshaika.lima-city.de/MeinDATA.txt
Beitrag zuletzt geändert: 22.3.2013 20:23:09 von tshaika -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage