tahir Geschrieben 17. Mai 2004 Teilen Geschrieben 17. Mai 2004 Hallo, ich versuche seit wochen vergeblich eine funktionierende SESSION in meinem Projekt einzubinden. Irgendwie will es nicht klappen. Next step: VERZWEIFLUNG ! log.php: <?php function login_form () { ?> <p>Anmeldung:</p> <form action="log.php?login=1" method="post"> Login: <input type="text" name="login"><br> Passwort: <input type="password" name="passwd"><br> <input type="submit" value="Anmelden"> </form> <?php } session_start(); if ($_GET['login']) { $user = "dpawlowski"; // Benutzername $pass = "12345"; // Benutzerpasswort if (($_POST['login'] == $user) && ($_POST['passwd'] == $pass)) { $session_time = 15; // Dauer der Session (in Minuten) $_SESSION['user'] = $_POST['login']; $_SESSION['expire'] = time() + 60 * $session_time; echo 'Autorisierung erfolgreich.<br> <a href="log.php?logout=1">Abmelden</a><br> Geschützte Seiten: <a href="data1.php">Daten 1</a>, <a href="data2.php">Daten 2</a>.'; } else { echo 'Inkorrekte Angabe<br>'; login_form(); } } elseif ($_GET['logout']) { session_destroy(); echo 'Sie wurden abgemeldet'; } else { login_form(); } ?> [/PHP] check_login.php: [PHP] <?php session_start(); if (!$_SESSION) { echo 'Um auf diese Seite zuzugreifen, müssen Sie sich <a href="log.php">anmelden</a>.'; exit; } elseif ($_SESSION['expire'] <= time()) { echo 'Ihre Session ist verfallen. Wiederholte <a href="log.php">Anmeldung</a> notwendig'; exit; } ?> data1.php: <?php require "check_login.php"; ?> <html> <body> <p><a href="log.php?logout=1">Abmelden</a></p> <p> Geheime Daten. Geheime Daten. Geheime Daten. Geheime Daten. Geheime Daten. Geheime Daten. Geheime Daten. Geheime Daten. </p> </body> </html> [/PHP] sobald ich data1.php aufrufe startet zum einen ein neuer session und zum anderen kommt die Fehlermeldung dass ich mich anmelden muss um auf diese Seite zuzugreifen. Ausserdem erkennt der Skript $_GET['login'] und $_GET['logout'] nicht und gibt als Error : Unknown index zurück. Kennt jemand dieses Problem und kann mir freundlicherweise behilflich sein ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T´Pau Geschrieben 17. Mai 2004 Teilen Geschrieben 17. Mai 2004 if (!$_SESSION) { echo 'Um auf diese Seite zuzugreifen, müssen Sie sich <a href="log.php">anmelden</a>.'; exit; } [/PHP] Hast du es mal mit [php]if(session_is_registered('user') {......}versucht? Wenn du nur $_SESSION abfragst ohne den Namen, weiss das Script doch garnicht welche Session gemeint ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 17. Mai 2004 Teilen Geschrieben 17. Mai 2004 Ausserdem erkennt der Skript $_GET['login'] und $_GET['logout'] nicht und gibt als Error : Unknown index zurück. <?php function login_form () { ?> <p>Anmeldung:</p> <form action="log.php?login=1" method="post"> Login: <input type="text" name="login"><br> Passwort: <input type="password" name="passwd"><br> <input type="submit" value="Anmelden"> </form> <?php } session_start(); if (isset($_GET['login'])) // <-- { $user = "dpawlowski"; // Benutzername $pass = "12345"; // Benutzerpasswort if (($_POST['login'] == $user) && ($_POST['passwd'] == $pass)) { $session_time = 15; // Dauer der Session (in Minuten) $_SESSION['user'] = $_POST['login']; $_SESSION['expire'] = time() + 60 * $session_time; echo 'Autorisierung erfolgreich.<br> <a href="log.php?logout=1">Abmelden</a><br> Geschützte Seiten: <a href="data1.php">Daten 1</a>, <a href="data2.php">Daten 2</a>.'; } else { echo 'Inkorrekte Angabe<br>'; login_form(); } } elseif (isset( $_GET['logout'])) // <-- { session_destroy(); echo 'Sie wurden abgemeldet'; } else { login_form(); } ?> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tahir Geschrieben 17. Mai 2004 Autor Teilen Geschrieben 17. Mai 2004 <?php if (isset($_GET['login'])) // <-- ...... elseif (isset( $_GET['logout'])) // <-- ?> [/PHP] ist genauso zwecklos weil er immer noch die selbe Error zurückgibt. ???? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 17. Mai 2004 Teilen Geschrieben 17. Mai 2004 Hast Du in allen Dateien session_start drin? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 17. Mai 2004 Teilen Geschrieben 17. Mai 2004 ist genauso zwecklos weil er immer noch die selbe Error zurückgibt. ???? gib ma den genauen wortlaut deines fehlers an, und sag wo genau die zeile ist in der der fehler passiert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tahir Geschrieben 18. Mai 2004 Autor Teilen Geschrieben 18. Mai 2004 Hast Du in allen Dateien session_start drin? Frank Wenn ich in allen dateien session_start() reinmache dann startet er auf jeder Seite eine andere Session . Normalerweise muss ja die funktion session_start() schon selbst überprüfen ob schon eine Session gestartet ist, im ja Fall macht er mit der angefangenen Session weiter (müsste er normalerweise, was aber offensichtlich nicht der Fall ist) und im nein Fall also wenn keine Session gestartet ist bzw. wenn keine Session besteht startet er halt eben eine neue Session. Wie gesagt register_globals sind standartmäsig off, gibt es irgendwelche anderen einstellungen damit eine Session reibungslos funktioniert? :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 18. Mai 2004 Teilen Geschrieben 18. Mai 2004 Wenn ich in allen dateien session_start() reinmache dann startet er auf jeder Seite eine andere Session . Normalerweise muss ja die funktion session_start() schon selbst überprüfen ob schon eine Session gestartet ist, im ja Fall macht er mit der angefangenen Session weiter (müsste er normalerweise, was aber offensichtlich nicht der Fall ist) und im nein Fall also wenn keine Session gestartet ist bzw. wenn keine Session besteht startet er halt eben eine neue Session. Wie gesagt register_globals sind standartmäsig off, gibt es irgendwelche anderen einstellungen damit eine Session reibungslos funktioniert? :confused: wenn du folgende datei struktur hast: // 1.php: session_start(); // 2.php session_start(); // index.php session_start(); include( "1.php"); include( "2.php"); [/PHP] hier wird in der index.php die session gestartet. danach folgt der include der 1.php, in dem wiederum eine neue session gestartet wird. danach folgt der include der 2.php, in dem wiederum eine neue session gestartet wird. Fogle: Man darf pro site aufruf nur 1 mal ein session_start() verwenden gib ma den genauen wortlaut deines fehlers an, und sag wo genau die zeile ist in der der fehler passiert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tahir Geschrieben 18. Mai 2004 Autor Teilen Geschrieben 18. Mai 2004 wenn du folgende datei struktur hast: // 1.php: session_start(); // 2.php session_start(); // index.php session_start(); include( "1.php"); include( "2.php"); [/PHP] In den include dateien habe ich kein session_start() und jede datei hat wirklich nur eine session_start(). Genaue wortlaut kann ich dir momentan nicht sagen weil ich momentan kein zugang zum Server habe(firma)... Im grunde genommen gibt er auch session bezüglich keine fehlermeldung , ich sehe nur anhand der /tmp ordner wo die sessions abgelegt werden dass immer mehrere sessions auftreten und nicht nur eine wie es sein soll. php.ini Einstellungen: register_globals=off session.auto_start=on session.use_trans_sid=1 session.use_cookies=0 Muss ich eigentlich an jedem link die PHPSESSID anhängen(wie ?) und wenn ja muss dann auf der nächsten Seite wieder session_start() stehen ? :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 18. Mai 2004 Teilen Geschrieben 18. Mai 2004 Muss ich eigentlich an jedem link die PHPSESSID anhängen(wie ?) und wenn ja muss dann auf der nächsten Seite wieder session_start() stehen ? :confused: ja an jeden link muss eine session id angehängt werden! wenn du den apache webserver benutzt, kannst du aber eine umgebungsvariable setzen, damit der server automatisch die id anhängt. wie diese genau heisst, kann ich dir aber nicht sagen. session_start() muss trotzdem in den nächsten dateien stehen, da damit die "alte" session "wiederaufgenommen" wird Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tahir Geschrieben 18. Mai 2004 Autor Teilen Geschrieben 18. Mai 2004 gibt es irgendwelche anderen einstellungen damit eine Session reibungslos funktioniert? :confused: ???????? :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 18. Mai 2004 Teilen Geschrieben 18. Mai 2004 Muss ich eigentlich an jedem link die PHPSESSID anhängen(wie ?) und wenn ja muss dann auf der nächsten Seite wieder session_start() stehen ? :confused: Das wäre nicht schlecht. datei.php?PHPSESSID='.session_id().' Ja, auf der nächsten Seite muss auch session_start() stehen. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.