Session kann nicht gesetzt werdeb

  • PHP

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Patrick1993.

    Session kann nicht gesetzt werdeb

    Hallo Community,
    Ich will gerade in meinem Script eine Session Funktion einbauen damit ich prüfen kann ob man eingeloggt ist oder nicht.
    Nun habe ich in meinem Script gaaaaanz oben session_start(); stehen und dennoch bekomme ich einen Fehler wenn ich das Script öffne.

    Der Original Code:

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. include('./includes/config.php');
    4. $page = $_GET['php'];
    5. ?>
    6. <html>
    7. <head>
    8. <title>Startseite</title>
    9. <link rel="stylesheet" href="./css/style.css">
    10. </head>
    11. <body>
    12. <div id="container">
    13. <div id="header">Titelbild</div>
    14. <div id="content">
    15. Inhalt
    16. </div>
    17. <div id="login">
    18. <form action="index.php?php=dologin" method="post">
    19. Benutzername:<br>
    20. <input type="text" name="username" value="Benutzername" onClick="this.value=''"> <br>
    21. Passwort:
    22. <input type="Password" name="passwort" value="Passwort"><br>
    23. <input type="Submit" value="Login">
    24. </form>
    25. </div>
    26. <?php
    27. switch ($page) {
    28. case "dologin":
    29. $username = mysql_real_escape_string($_POST["username"]);
    30. $passwort = mysql_real_escape_string($_POST["passwort"]);
    31. $query = mysql_query("SELECT * FROM Benutzer WHERE Benutzername = '$username'");
    32. $res = mysql_fetch_object($query);
    33. if ($res->Passwort == $passwort){
    34. $_SESSION['username'] = $username;
    35. echo '<script type="text/JavaScript">
    36. alert("Login Erfolgreich");
    37. window.location.href ="alarmseite.php";
    38. </script>';
    39. }
    40. else {
    41. echo '<script type="text/JavaScript">
    42. alert("Login Fehlgeschlagen");
    43. window.location.href ="index.php";
    44. </script>';
    45. }
    46. }
    47. ?>
    48. </div>
    49. </body>
    50. </html>


    Und die Fehlermeldung:
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/update/index.php:1) in /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/update/index.php on line 2


    Ich habs schon rumversucht jedoch nichts gefunden da ich alles richtig gemacht habe soviel ich sehe

    Also muss ich den HTML salat mehr oder weniger weg lassen wenn ich das richtig verstehe

    Nein, HTML Salat könntest drin lassen, das ist nicht der Fehler, da du ja in Zeile 2 die Session Startest und dort noch kein HTML ausgegeben wurde. Was allerdings sein kann, das manchmal vor dem PHP Opener <?php ein Zeichen ist, welches aber im Editor nicht angezeigt wird. Kopiere mal alles ab <?php in ein neues Dokument, wichtig is MARKIERE alles nicht via STRG+A weil dann makrierst ggf. das unsichtbare Zeichen zu beginn mit.


    Ließ dir mal diese Info zu Header durch, da gibts das selbe Problem
    php.net/manual/de/function.header.php
    ich hab das ganze in eine neue php Datei kopiert und siehe da es geht.
    Kann man die Unsichtbaren Zeichen irgendwie sichtbar machen ?

    *EDIT*
    Wenn ich nun auf der 2ten Seite den Usernamen anzeigen lassen will mittels §_SESSION['username']; wird er mir nicht angezeigt. Woran kann das liegen

    Ich meine ja $_SESSION habs nur falsch geschrieben.

    Ich nutze Sublime Text 1.4 da is alles auf Englisch da steht irgendwie nichts mit Nicht Druckbaren Zeichen

    Hast die Session ID auch übergeben? Zwar machen das manche Server alleine, aber manchma ists besser die Session ID nochmals im extra Cookie mitzuliefern und dann beim anderen Script die Session ID auch zuordnen und dann erst die Session starten.
    Du meinst alo die session 2x Starten ?
    1x in der Index und 1x in der anderen (in meinem falle Alarmseite)

    Session muss in JEDER Php Datei neu gestartet werden, nicht includeten, sondern wenn eine Seite aufgerufen wird.

    Rufst du also index.php auf, startest die Session und schreibst was rein. Danach rufst die Seite user.php auf und willst was rauslesen musst zuerst die Session wieder starten und am besten eben auch die entsprechende Session ID zuvor mit angeben, das nicht eine neue Session gestartet wird die dann leer ist.

    Ließ dir am besten nochmal genauer Sessions in PHP durch, du hast anscheint noch nicht verstanden was das ist und zu beginn ist das kein einfaches Pflaster und bedarf einiger Hintergrundkenntnissen.
    Bei mir funktionierten die Sessions auch nicht, ich habe dann mal den Speicherort der Sessions verändert, dann ging es. Es war zwar eine andere Fehlermeldung aber vielleichthilft es dir ja.

    string session_save_path ([ string $path ] )
    Mit welchem Encoding ist die Datei gespeichert? UTF-8 macht manchmal Probleme, da ganz vorne standardmäßig die BOM ist, welche der Editor nicht anzeigt. Speichere dein Skript mal als "UTF-8 ohne BOM" ab. Sublime Text sollte das können.

    Gelöschter Benutzer schrieb:

    sessions werden in den headern gesendet
    Die Session-IDs werden im Header in Form von Cookies mitgesendet. Die Cookies haben ein eigenes Feld im HTTP-Header. Die Session-Daten selber sind (meistens bzw. unter Windows standardmäßig) im Temp-Verzeichnis des Servers gespeichert ( z. B. so: sess_SESSIONID).
    Von meinem iPhone gesendet
    Ich habs so gemacht wie Dodo es sagte.
    Ich habe die Session ID mitgeliefert nun gehts fehlerfrei.
    Sollte mich ab sofort vielleicht mal drane gewöhnen die ID mitzunehmen