Session ID immer neu
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
art
ausgabe
auswertung
browser
code
eintrag
fehler
frage
funktion
index
log
login
page
richtigen stelle
schau
session
system
url
variable session
-
Hey Lima,
wir sind am verzweifeln und finden den Fehler einfach nicht.
Undzwar ist auf jeder PHP Seite die session_id anders.
Alle Seiten werden mittels PHP von der index.php aus includiert, von daher haben wir nur in der index.php ganz oben session_start(); stehen. Wenn man sich nun einloggt, setzt er zwar die Session, sobald man aber zb von ?page=home auf ?page=forum wechselt, ist die session_id wieder anders und die session ist logischerweise nicht mehr vorhanden.
Ich hoffe jemand von euch kann uns helfen.
Hier werden die Session Variablen gesetzt:
login.ext.php (wird auf der home.page.php includiert.)
if($action == "login"){ if(!empty($_POST['password'])) { $hashed_pw = $securefn->salthash($_POST["password"],"7","10000",$_POST["user"]); $result = $user->login($_POST["user"], $hashed_pw); if ($result != false) { $ip = $clientsniffer->get_client_ip(); $browser = $clientsniffer->getBrowser(); $_SESSION["user"] = $result["username"]; $_SESSION["id"] = $result["id"]; $user->checkLoginIntoDB($_SESSION['user'], $ip, gethostbyaddr($ip), $browser['name']); echo '<p class="alert alert-success">Login erfolgreich!<br> Hallo '.$_SESSION["user"].'</p>'; }else { echo '<p class="alert alert-error">Bitte überprüfe deinen Benutzernamen oder dein Passwort!</p>'; } echo "<br>"; } else { echo '<p class="alert alert-error">Bitte gib ein Passwort und Benutzernamen ein!</p>'; } }
liebe grüße
Canna -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Es könnte daran liegen, dass die ID mehr mals gehasht wird, oder bei jedem login die DB aktualisiert wird.
-
Die Frage ist ja erstmal, was steckt hinter Euren Funktionen und wie die Abfrage, ob eingeloggt oder nicht, aussieht!?
Wenn ich richtig verstehe, ist die Funktion (checkLoginIntoDB) eine art LOG Eintrag in die DB!?
Ich hoffe mal Ihr kommt auch bis zu diesem Schritt beim Login?
Also es sind wirklich einige Infos noch notwendig!
MFG Michael -
michaelkoepke schrieb:
Die Frage ist ja erstmal, was steckt hinter Euren Funktionen und wie die Abfrage, ob eingeloggt oder nicht, aussieht!?
Wenn ich richtig verstehe, ist die Funktion (checkLoginIntoDB) eine art LOG Eintrag in die DB!?
Ich hoffe mal Ihr kommt auch bis zu diesem Schritt beim Login?
Also es sind wirklich einige Infos noch notwendig!
MFG Michael
Jap, soweit kommen wir. Es erscheint auch die Meldung "Erfolgreich eingeloggt." und "Hallo Canna". Sprich die Session wird beim Login gesetzt.
Nils:
Weder noch, das einzige was sich ändert in der DB beim Login ist die Spalte "log", die aber nichts mit dem User zu tun hat.
Edit://
Ich würde einfach per Session abfragen, ob er eingeloggt ist:
if(isset($_SESSION['user'])) echo 'Eingeloggt';
Beitrag zuletzt geändert: 3.12.2014 14:27:04 von cannadesign -
Ok also doch nicht so falsch gelegen :)
Versuche mal mit
echo "<pre>"; print_r ($_SESSION); echo "</pre>;
die Variable Session vor der Auswertung auszulesen, ob sie auch wirklich gesetzt ist.
MFG Micha
PS: Fragst du den Login ($_SESSION) auch an der richtigen Stelle ab?
Beitrag zuletzt geändert: 3.12.2014 14:43:33 von michaelkoepke -
michaelkoepke schrieb:
Ok also doch nicht so falsch gelegen :)
Versuche mal mit
echo "<pre>"; print_r ($_SESSION); echo "</pre>;
die Variable Session vor der Auswertung auszulesen, ob sie auch wirklich gesetzt ist.
MFG Micha
PS: Fragst du den Login ($_SESSION) auch an der richtigen Stelle ab?
Wir geben in der index.php bereits folgende zeilen aus:
print_r($_SESSION); echo session_id();
Dies sagt uns immer nur, dass auf jeder Seite die session_id anders ist..
Beitrag zuletzt geändert: 3.12.2014 14:46:55 von cannadesign -
Könnte es sein, dass die Ausgabe von Fehlern deaktiviert ist? Und könnte es dann rein zufällig sein, dass bevor »session_start()« aufgerufen wird bereits Ausgabe produziert wird (Leerzeichen, UTF-8-BOM, …)? Weil dann wäre die Session natürlich während die Seite »ausgeführt« wird gültig, kommt aber nie am Client an und kann deshalb auch nie bei der nächsten Seite mitgeschickt werden.
-
hackyourlife schrieb:
Könnte es sein, dass die Ausgabe von Fehlern deaktiviert ist? Und könnte es dann rein zufällig sein, dass bevor »session_start()« aufgerufen wird bereits Ausgabe produziert wird (Leerzeichen, UTF-8-BOM, …)? Weil dann wäre die Session natürlich während die Seite »ausgeführt« wird gültig, kommt aber nie am Client an und kann deshalb auch nie bei der nächsten Seite mitgeschickt werden.
Die Ausgabe von Fehlern ist aktiviert. ;)
Und nein, session_start() wird ganz oben in der index gesetzt.
<?php session_start(); print_r($_SESSION); echo session_id(); require_once("./class/autoloader.inc.php"); require_once("./class/autoloaddir.inc.php"); require_once("./class/PHPmail/phpmailer.php"); __autoloaddir("./config"); /*-------------------------------------Datenbank Verbindung mit der Konfig starten--------------------------------------*/ /*----------------------------------------------------------------------------------------------------------------------*/ $connection = mysqli_connect(dbconnection_hoster, dbconnection_username, dbconnection_passwort, dbconnection_database); if(mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } mysqli_query($connection, "SET NAMES 'utf8'"); /*----------------------------------------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------------------------------------*/ $securefn = new main_securefn(); $system = new main_system($connection, "webexpanded_config"); $navbar_render = new ext_navbar($connection, "webexpanded_pages"); $user = new main_user($connection); $bbc = new ext_bbcodes(); $clientsniffer = new main_clientsniffer(); /*----------------------------------------------------------------------------------------------------------------------*/ $page = $system->variable("page"); $error_404 = $system->readconfig("404_page"); $action = $system->variable("action"); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>WebExpanded</title>
Ist nur der obere Teil.
michael: Ja, wir nutzen sonst nirgendwo ein session_start. -
Ich denke mal mit den jetzigen Angaben, kann dir keiner so richtig helfen... Man müsste dazu den ganzen Code kennen. Eine Idee von mir noch, entferne das session_start am Anfang und schreibe die Ausgabe der id und der gesamten Session mal an das Ende deiner Index Datei und schau was passiert.
Mfg Michael -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage