fr@gstyler Geschrieben 24. September 2003 Geschrieben 24. September 2003 Moin Leutz! Ich hab probeweise versucht einen PW-geschützten Bereich zu erstellen. PW-abfrage und so klappen auch, aber damit jemand der den Pfad eintippt sich nicht doch die Seite anzeigen lassen kann möchte ich eine Variable weitergeben, in der steht, dass der Benutzer eingeloggt ist. Das hab ich über die GET-Methode realisiert <?php $alles=$_GET['alles']; if ($alles=="") { echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n"; } if ($alles=="true") { echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> "; echo"<html> "; echo" <head> "; echo" <title>Geschützer Bereich</title> "; echo" </head> "; echo" <body> "; echo" <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> "; echo" </body> "; echo"</html> "; } ?> [/PHP] wenn ich retzt allerdings die URL eintippe ohne den Wert zu übergeben wirft PHP dies aus: "Notice: Undefined index: alles in D:\Standard-Root\Passwortschutz\test.php on line 2 Dies ist nicht dein Bereich! Du darfst nur [u][b]hier[/b][/u] hin!" Wie kann ich das verhindern? Kann man nicht PHP sagen, die Variable da ist, aber leer? So nach dem Motto: Wenn da keine Variable zum auslesen ist setze $alles="" MfG fr@gstyler Zitieren
Wolle Geschrieben 24. September 2003 Geschrieben 24. September 2003 Verschoben in die Webserverprogrammierung Zitieren
Spike Geschrieben 24. September 2003 Geschrieben 24. September 2003 if (!isset($alles)) { $alles == false; } [/php] Desweiteren würde ich eine Session benutzen, wenn du auf Seiten überprüfen willst ob der Benutzer eingeloggt ist, dnan kannst du direkt diverse andere Infos "mitschleppen" wie z.B. den angemeldeten Benutzernamen. http://www.dclp-faq.de/ch/ch-version4_session.html Z.B. könntest du so abfragen ob ein angemeldeter Benutzer für die geschützte Seite existiert. Die Session heisst hier z.B. 'ses_username', wenn diese nicht existiert wird man auf eine Fehlerseite weitergeleitet. [php] <?php session_start(); if (!session_is_registered('ses_username')) { header ("Location:url"); } ?> P.S. Komisch, das Forum macht aus meinem Locationlink eine URL fürs Forum, anscheinend ist ihm egal das dies in PHP Tags steht. Zitieren
fr@gstyler Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 Ahhh! *Kronleuchter aufgeh* Das wer ich gleich ma probieren!:marine THX!!!! fr@gstyler Zitieren
Deagle--Knight Geschrieben 24. September 2003 Geschrieben 24. September 2003 <?php $alles=$_GET['alles']; if ($alles=="") { echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n"; } if ($alles=="true") { echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> <html> <head> <title>Geschützer Bereich</title> </head> <body> <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> </body> </html>"; } ?> [/PHP] so geht das auch, ist nicht wie bei C++ wo du jede einzelne zeile mit Echo machen musst Erleichtert dir die Arbeit ^^ Zitieren
fr@gstyler Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 Das sind jetzt die Quelltexte: check.php <html> <body> <?php $benutzer=$_POST['benutzer']; $pass=$_POST['pass']; if ($benutzer="admin") { if ($pass="freak") { print "<b>Login korrekt</b>"; print "<p>Willkommen ".$benutzer."!!</p>"; print "<p>Klicken Sie hier zum Zugang:</p>"; print "<a href='test.php'>Geschützer Bereich</a>"; @session_start(); $_SESSION['login']="true"; $_SESSION['benutzer']=$benutzer; } else { print ("Benutzername korrekt, Passwort NICHT KORREKT!<br><br>"); print ("<a href='start.html'>Noch ein Versuch...</a>"); } } else { print ("Benutzername NICHT KORREKT!<br><br>"); print ("<a href='start.html'>Noch ein Versuch...</a>"); } ?> </body> </html> [/PHP] [b]test.php[/b] [PHP] <?php @session_start(); if ($_SESSION['login']="true") { echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> "; echo"<html> "; echo" <head> "; echo" <title>Geschützer Bereich</title> "; echo" </head> "; echo" <body> "; echo" <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> "; echo" </body> "; echo"</html> "; } else { echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n"; } ?> Letztendlich kommt jeder in den geschützten Bereich! Egal ob SessionID oder ned... HELPME!! :confused: MfG fr@gstyler Zitieren
fr@gstyler Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 Original geschrieben von ~[LoD]~Astalavista <?php $alles=$_GET['alles']; if ($alles=="") { echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n"; } if ($alles=="true") { echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> <html> <head> <title>Geschützer Bereich</title> </head> <body> <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> </body> </html>"; } ?> [/PHP] so geht das auch, ist nicht wie bei C++ wo du jede einzelne zeile mit Echo machen musst Erleichtert dir die Arbeit ^^ [/b] Ahhh... interessant... muss ich mir merken... aber geschrieben ist geschrieben! :mod: Zitieren
Spike Geschrieben 24. September 2003 Geschrieben 24. September 2003 Original geschrieben von fr@gstyler check.php @session_start(); $_SESSION['login']="true"; $_SESSION['benutzer']=$benutzer; [/PHP] Du weist hier einen String zu, es muss $_SESSION['login']=true heissen. [b]test.php[/b] [PHP] <?php @session_start(); if ($_SESSION['login']="true") { Du vergleichst hier $_SESSION['login'] nicht darauf ob es true ist, sondern du weist ihm nochmal den String "true" zu. Es muss if ($_SESSION['login']==true) heissen. Zudem solltest du beim Login immer überprüfen ob der Benutzer schon eingeloggt ist oder nicht. Also if (session_is_registered('ses_username')) { session_destroy(); } Zitieren
fr@gstyler Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 wenn ich jetzt ohne SessionID die Seite laden will kommt dieser Fehler: Notice: Undefined index: login in D:\Standard-Root\Passwortschutz\test.php on line 3 wie bekomm ich den weg?? Edit: Praktisch genauso wie vorhin! :mod: *seufz* Zitieren
Spike Geschrieben 24. September 2003 Geschrieben 24. September 2003 Und was steht in Line 3 ? Zitieren
fr@gstyler Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 Original geschrieben von fr@gstyler Das sind jetzt die Quelltexte: [...] test.php <?php @session_start(); if ($_SESSION['login']==true) { echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> "; echo"<html> "; echo" <head> "; echo" <title>Geschützer Bereich</title> "; echo" </head> "; echo" <body> "; echo" <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> "; echo" </body> "; echo"</html> "; } else { echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n"; } ?> [/PHP] [...] schau selbst! (also ich hab hier den Quellcode entsprechend deiner Vorschläge verändert, ist also nicht wirklich ein Zitat...) Zitieren
fr@gstyler Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 Jetzt gibt er mir übrigens immer(!!!) "Notice: Undefined index: login in D:\Standard-Root\Passwortschutz\test.php on line 3 Dies ist nicht dein Bereich! Du darfst nur hier hin!" aus... (ich hasse sowas ) Zitieren
kills Geschrieben 24. September 2003 Geschrieben 24. September 2003 check.php <html> <body> <?php $benutzer=$_POST['benutzer']; $pass=$_POST['pass']; if ($benutzer=="admin" && $pass=="freak") { print "<b>Login korrekt</b>"; print "<p>Willkommen ".$benutzer."!!</p>"; print "<p>Klicken Sie hier zum Zugang:</p>"; print "<a href='test.php'>Geschützer Bereich</a>"; @session_start(); $_SESSION['login']=true; $_SESSION['benutzer']=$benutzer; } else { $_SESSION['login']=false; print ("Benutzername NICHT KORREKT!<br><br>"); print ("<a href='start.html'>Noch ein Versuch...</a>"); } ?> </body> </html> [/PHP] [PHP] @session_start(); if (isset($_SESSION['login']) && $_SESSION['login']==true) { echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> "; echo"<html> "; echo" <head> "; echo" <title>Geschützer Bereich</title> "; echo" </head> "; echo" <body> "; echo" <h2>Geschützer Bereich - Nur für Mitglieder</h2><br> "; echo" </body> "; echo"</html> "; } else { echo "Dies ist nicht dein Bereich! Du darfst nur <a href=\"start.html\"> hier</a> hin!\n"; } Zitieren
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.