kostenloser Webspace werbefrei: lima-city


Session ID immer neu

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    c*********n

    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 &uuml;berpr&uuml;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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Es könnte daran liegen, dass die ID mehr mals gehasht wird, oder bei jedem login die DB aktualisiert wird.
  4. michaelkoepke

    michaelkoepke hat kostenlosen Webspace.

    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
  5. Autor dieses Themas

    c*********n

    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
  6. michaelkoepke

    michaelkoepke hat kostenlosen Webspace.

    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
  7. Autor dieses Themas

    c*********n

    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
  8. michaelkoepke

    michaelkoepke hat kostenlosen Webspace.

    Ihr ruft auch wirklich nur EINMAL die session_start(); auf?

    Schau mal in dein Postfach

    MFG Micha
  9. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    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.
  10. Autor dieses Themas

    c*********n

    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.
  11. michaelkoepke

    michaelkoepke hat kostenlosen Webspace.

    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
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!