Problem mit: Header("Location: main.php");

NetPerformance

Erfahrenes Mitglied
Hallo,

ich habe ein Login-Formular gebastelt.
Falls der User die falschen Daten eingibt, soll unterhalb des Login-Scriptes diese Meldung ausgegeben werden: print "Falsche Eingabe !<p>Überprüfen Sie die Zugangsdaten.

Die Überprüfung habe ich imom gantz oben eingebunden. Daher wird die Meldung auch ganz oben ausgegeben.

Um die Ausgabe an die richtige Stelle zu plazieren, muss ich
if(isset($_POST['_login']))
{
include "connect.php";

$sql = "SELECT usw.

unterhalb von include "login.php"; einbinden. Das Ganze funktioniert auch super.

Problem:
Header("Location: main.php"); funktioniert nicht mehr !
Ich erhalte folgende Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /homepages/28/d107347135/htdocs/php/geburtstagserinnerung/index.php:10) in /homepages/28/d107347135/htdocs/php/geburtstagserinnerung/index.php on line 57
Falsche Eingabe !
Überprüfen Sie die Zugangsdaten.

Bedanke mich im Vorfeld für euere Hilfe
Aaron

Code:
<?php
	session_start(); // session !
	$sessionID = session_id();
	$_SESSION['$sessionID'] = true; // Session für main.php kontrolle !
	
	if(isset($_POST['_login'])) 
	{ 				
		include "connect.php";
				
		$sql = "SELECT
					UserId,
					UserEmail,
					UserPassword
				FROM
					np_birthday_login";
					
		$result = mysql_query($sql) or die ("<hr><br>Datenbank Verbindung konnte nicht hergestellt werden !<p> Fehlermeldung :<br>".mysql_error());
		
		mysql_num_rows($result); // Anzahl der Datensätze

		$fehler = true;
				
		while($row = mysql_fetch_assoc($result)) 
		{    
		  	if(trim($row['UserEmail']) == "$_email" && trim($row['UserPassword']) == "$_passwort") 
			{
				$HTTP_SESSION_VARS["myId"] = ($row['UserId']);
				$HTTP_SESSION_VARS["ownerMail"] = ($row['UserEmail']);
				
			
				Header("Location: main.php");
				
    		}
		}

		
		// print "Falsche Eingabe !<p>Überprüfen Sie die Zugangsdaten.<p>"; 
		// print "<hr>";
	}
		    
	// error_reporting(E_ALL);

    echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n";
    echo "         \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
    echo "<html>\n";
    echo "    <head>\n";
    echo "        <title>Geburtstagserinnerung</title>\n";
    echo "        <link rel=\"stylesheet\" type=\"text/css\" href=\"page.css\" />\n";
    echo "        <meta http-equiv=\"Content-Type\"
                        content=\"text/html; charset=ISO-8859-1\" />\n";
    echo "    </head>\n";
    echo "    <body>\n";

    echo "        <div id=\"root\">\n"; // ganz oberer Div-Holder
    echo "            <div id=\"header\">\n"; 
    include "header.php";
    echo "            </div>\n";
    echo "            <div id=\"links\"><br>\n"; 

	include "login.php";
	
	if(isset($_POST['_vergessen']))
	{
		print "<hr>";
		include "vergessen.php";
		print "<hr>";
	}
	else if(isset($_POST['_neuanmeldung']))
	{
		print "<hr>";
		include "neuanmeldung.php";
		print "<hr>";
	}
	else
	{
		include "unterpunkte.php";
	}

    echo "            </div>\n";
    echo "            <div id=\"mitte\">\n"; 
    include "willkommen.php";
    echo "            </div>\n";
    echo "            <br style=\"clear:both;\" />\n"; // css-float beenden
    echo "       </div>\n";
    echo "    </body>\n";
    echo "</html>\n";
?>

<style type="text/css">
#header 
{
	background-color: #999999;
    height: 50px;
	
	font-size:18pt;
}
#links 
{
	background-color: #CCCCCC;
    width: 200px;
    float: left;
	
	margin-left: 10px;
}
#mitte 
{
    width: 69%;
    float:left;
	
	margin-left: 40px;
	margin-top: 20px;
}

.rot { color:red; }
</style>
 
Vor [phpf]header[/phpf] darf keine Ausgabe erfolgen, auch kein Leerzeichen, vor "<?php" und erst recht keine Ausgabe mit echo. Vor dem Inhalt wird immer der header gesendet, das steht so in der Fehlermeldung und das Thema wird sogar in der PHP-FAQ im PHP-Forum behandelt.
 
Selbst wenn dein Script so aussieht:

1
2 <?php
...

Also die erste Zeile eine Leerzeile ist und das php erst auf der 2. Zeile beginnt funktioniert der header() Befehl nicht mehr :rolleyes:
 
Hi.
danke für die schnelle Antwort..
Wie kann ich aber das Problem lösen ?!

Auf die Ausgabe kann ich an diese Stelle nicht verzichten !

Gruß
Aaron
 
Wenn der User die Zeilen tatsächlich lesen soll, ist das kein PHP-Problem mehr.
Das geht mit PHP nicht.
Du kannst mal im HTML-, im PHP-, im JavaScript und evtl. sogar im Webserver-Forum nach Meta-Refresh oder JavScript-Lösungen für dieses Problem suchen. Das wurde schon tausend mal behandelt.
 
Zurück