Problem mit Formular und php
-
Ich will mit php so ein "login system" machen.
Das Problem ist, dass der eingegeben Text der eingabefelder nicht an des phpscript geschickt wird. Das vermute ich zumindest:Hier das loginformular (loginfom.html)
<html> <title>login</title> <body background="../images/bg.png" text="#222233" link="#0000ff" vlink="#770077" alink="#ff0000"> <center> <h2><u>login</u></h2> <form action="./login.php" method="post" enctype="text/plain"> <table border="0" cellspacing="8" cellpading="0"> <tr><td>Benutzername:</td><td><input name="username" type="text" size="64" maxlength="128"></td></tr> <tr><td>Passwort:</td><td><input name="username" type="password" size="64" maxlength="128"></td></tr> <tr><td><input type="submit" value="absenden"></td> <td><input type="reset" value="abbrechen"></td></tr> </table> </form> </center> </body> </html>
und hier login.php
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { session_start(); $username = $_POST["username"]; $password = $_POST["password"]; $hostname = $_SERVER["HTTP_HOST"]; $path = dirname($_SERVER["PHP_SELF"]); if ($username == 'ich' && $password == "abc") { $_SESSION["angemeldet"] = true; if ($_SERVER["SERVER_PROTOCOL"] == "HTTP/1.1") { if (php_sapi_name() == "cgi") { header("Status: 303 See other"); } else { header("HTTP/1.1 303 See other"); } } header("Location: http://".$hostname.($path == '/' ? ' ' : $path )."/index.php"); exit; } else { echo "Falscher Benutzername oder falsches Passwort! $username $password <br>"; exit; } } ?>
Den code der login.php hab ich vom selfhtml abgetippt.
ps: Ja...beide Dateien befinden sich im gleichen Verzeichniss.Das Problem ist:
Ich bekomme imemr die meldung "Falscher Benutzername oder falsches Passwort!",
alsoelse { echo "Falscher Benutzername oder falsches Passwort! $username $password <br>"; exit; }
.
Aber in dieser meldung wird weder password noch username angezeigt.
Kann mir einer sagen,wo das Problem ist?
-
Boah ey... was fürn Code O.o
Erstmal:
<tr><td>Passwort:</td><td><input name="username" type="password" size="64" maxlength="128"></td></tr>
Name muss password heißen, statt username
So spontan fällt mir ein..lass dir doch mal dein Passwort und Username ausgeben.
<?php echo 'Username: '.$_POST['username']; echo 'Passwort: '.$_POST['password']; ?>
Sollte er das nicht machen, liegt es daran, dass er nicht in die erste IF-Schleife springt!
Welche PHP-Version nutzt du?
-
Also ich hab $username und $password ausgeben lassen, aber es wurde nich angezeigt.
Kein Wunder,dass es nicht in den if-code-abschnitt springt.
Aber wieso sind $_POST["username"] und $_POST["password"] leer?Hier nochmal der code loginform.html:
<html> <title>login</title> <body background="../images/bg.png" text="#222233" link="#0000ff" vlink="#770077" alink="#ff0000"> <center> <h2><u>login</u></h2> <form action="./login.php" method="post" enctype="text/plain"> <table border="0" cellspacing="8" cellpading="0"> <tr><td>Benutzername:</td><td><input name="username" type="text" size="64" maxlength="128"></td></tr> <tr><td>Passwort:</td><td><input name="password" type="password" size="64" maxlength="128"></td></tr> <tr><td><input type="submit" value="absenden"></td> <td><input type="reset" value="abbrechen"></td></tr> </table> </form> </center> </body> </html>
und login.php
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { session_start(); $username = $_POST["username"]; $password = $_POST["password"]; echo 'Username: '.$_POST['username']."<br>"; // Das hier gibt nur Username: aus echo 'Passwort: '.$_POST['password']."<br>"; // und das hier nur Passwort: ...warum??? $hostname = $_SERVER["HTTP_HOST"]; $path = dirname($_SERVER["PHP_SELF"]); if ($username == "ich" && $password == "abc") { $_SESSION["angemeldet"] = true; if ($_SERVER["SERVER_PROTOCOL"] == "HTTP/1.1") { if (php_sapi_name() == "cgi") { header("Status: 303 See other"); } else { header("HTTP/1.1 303 See other"); } } header("Location: http://".$hostname.($path == '/' ? ' ' : $path )."/index.php"); exit; } else { echo "Falscher Benutzername oder falsches Passwort! $username $password <br>"; exit; } } ?>
Mit php beschäftige ich mich erst seit ein paar tagen. Vielleicht kann mir ja jemand jetzt weiterhelfen?
-
Wenn mir hier keiner weiterhelfen kann:
Kann mir jemdn statdessen ein bsp geben von einem Formular mit zwei eingabefeldern welche,dann von einem anderen php script verarbeitet werden (ausgegeben werden)???
Ich bin langsam am verzweifeln...
-
http://de.selfhtml.org/html/formulare/definieren.htm#bereich
Außerdem sollten Sie bei E-Mail-Empfang von Formulardaten im einleitenden <form>-Tag enctype="text/plain" mit angeben. Denn Formulardaten sind normalerweise nach einem Schema kodiert, das für Menschen keine Freude zu lesen ist. Mit der genannten Angabe erhalten Sie zumindest von Anwendern, die Ihr Formular mit einem modernen Web-Browser ausfüllen, ordentlich formatierte E-Mails.
Nimm das enctype="..." raus und es sollte funktionieren.
[Edit]
@Killersnoop: http://www.if-schleife.de
[/Edit]
-
thx, jetzt funktioniert es.
ps: Hab noch net so viel ahnung von php.Und jetzt bekomme ich die Meldung:
Warning: Cannot modify header information - headers already sent by (output started at /home/alex/development/html/current_hp/login/login.php:9) in /home/alex/development/html/current_hp/login/login.php on line 29 Warning: Cannot modify header information - headers already sent by (output started at /home/alex/development/html/current_hp/login/login.php:9) in /home/alex/development/html/current_hp/login/login.php on line 33
Was bewirkt nochmal die funktion header()? Wie gesagt: den code hab ich nur abgetippt und etwas angeändert.
Und noch was:
Was ist vom Programmierstil besser? Formular und der auswertende php code in EINER Datei oder wie ich es hab in 2 Dateien. (also loginform.html => formular und login.php =>auswertender code.)
-
Sind die echo's für Username und Passwort noch drin?
-
ºgrimmsenº
schrieb:
Sind die echo's für Username und Passwort noch drin?
Nicht mehr. Warum?
-
Kann mir jemand sagen, woher die meldungen kommen. Oder besser gesagt: Wie ich dieses Problem behebe?
Warning: Cannot modify header information - headers already sent by (output started at /home/alex/development/html/current_hp/login/login.php:9) in /home/alex/development/html/current_hp/login/login.php on line 29 Warning: Cannot modify header information - headers already sent by (output started at /home/alex/development/html/current_hp/login/login.php:9) in /home/alex/development/html/current_hp/login/login.php on line 33
Wenn ich die header() funktionen aus'm quellcode entnehme,dann gibt es keine Meldungen mehr. Aber header() soll ja ganz nützlich sein für umleitungen und so.(soweit ich es richtig verstanden hab). Wie kann ich das Problem lösen?
-
das liegt daran dass du zuvor keinerlei html code senden darfst... das problem hatte ich letztens auch
-
thx...jetzt funktioniert es einwandfrei!
-
Allerdings ist die Vorgehensweise mit header() in meinen Augen eher ein Zeichen für ein schwaches Homepagedesign (also die Architektur, nicht das Aussehen). Im Normalfall - wenn man ein modulares Konzept und evtl. noch Templates einsetzt - ist dies nicht vonnöten.