Problem mit Formular und php



  • 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.


Anmelden zum Antworten