Merkwürdige header-Funktion

Maximus

Erfahrenes Mitglied
Hi,
irgendwie werde ich aus der Header-Funktion nicht schlau.
Ich habe unten aufgeführtes Login-Script geschrieben, aber
die header-Funktion zeigt einfach keine Wirkung.
Was mache ich falsch?

Hier das Script:

PHP:
<?php
	//Wenn die Bestätigen-Taste gedrückt wurde
	if ($sf_ok=="Bestätigen")
	{
		//Verbindung zum SQL-Server herstellen
		$datenbank = @mysql_connect("localhost","root","");
		if (! $datenbank)
		{
			$fehlermeldung="Keine Verbindung zum SQL-Server möglich!";
			//exit();
		}
		
		//verbindung zur Datenbank herstellen
		if (! @mysql_select_db("clan-planer"))
		{
			$fehlermeldung="Keine Verbindung zur Datenbank möglich!";
			//exit ();
		}
		
		//Benutzername und Passwort abgleichen
		$sql = @mysql_query("SELECT nickname, password FROM user WHERE nickname='$tf_benutzername' AND password='$tf_passwort'");
		$reihe = mysql_fetch_array($sql);
		if ($reihe)
		{
			//Anweisung wenn Benutzername und Passwort übereinstimmen
			header("location:http://www.ladirgendeineseite.de");
		}
		else
		{
			//Anweisung wenn Benutzername und Passwort NICHT übereinstimmen
			
		}
		
	}

?>

<body>
<?php
	//Fehlermeldung anzeigen, falls ein Fehler aufgetreten
	if (isset($fehlermeldung))
	{
	echo ("Der folgende Fehler ist aufgetreten : $fehlermeldung");
	exit();
	}
?>

<form action="<?php $PHP_SELF?>" method="post">
  <p>&nbsp;</p>
  
  <table width="200" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr> 
      <td>Benutzername</td>
      <td><input name="tf_benutzername" type="text" id="tf_benutzername" size="30" maxlength="30"></td>
    </tr>
    <tr> 
      <td>Passwort</td>
      <td><input name="tf_passwort" type="password" id="tf_passwort" size="30" maxlength="30"></td>
    </tr>
    <tr> 
      <td colspan="2"><div align="center">
          <input name="sf_ok" type="submit" id="sf_ok" value="Best&auml;tigen">
        </div></td>
    </tr>
  </table>
  <p>&nbsp;</p>
</form>
 
Nein,
da liegt nicht das Problem!
Jetzt habe ich es mal so geschrieben:

PHP:
if ($reihe)
		{
			//Anweisung wenn Benutzername und Passwort übereinstimmen
			header("location: admin.php");
		}

Aber das Problem ist immer noch das gleiche.
Die Admin.php wird nicht geladen.
 
oke, also dein voriger code beim header war aber schon definiv falsch.

lass dir doch mal testweise bei der if-abfrage, in der die daten aus der db abgleichst, was ausgeben um zu sehen, ob überhaupt ein user gefunden wurde.

ich würde es auch eher so machen:

PHP:
//Benutzername und Passwort abgleichen
        $sql = mysql_query("SELECT nickname, password FROM user WHERE nickname='$tf_benutzername' AND password='$tf_passwort'");
        if (mysql_num_rows($sql) > 0)
        {
            //Anweisung wenn Benutzername und Passwort übereinstimmen
            //header("Location: admin.php");
            echo "userdaten stimmen";
        }
        else
        {
            //Anweisung wenn Benutzername und Passwort NICHT übereinstimmen
            echo "userdaten sind falsch";
        }

schau dann ma, was der ausgibt. :)
du musst auch darauf achten, dass vor dem aufruf von header KEINE ausgabe an der browser erfolgen darf!!
 
Zuletzt bearbeitet:
Den Inhalt der If-Schleife hatte ich schon vorher geprüft.
Aber ich habe jetzt mal einfach Deinen Code eingesetzt.
Da zeigt er dann wirklich Userdaten stimmen an.
Und wenn ich dann die header-Zeile wieder aktiviere tut sich wieder nix!
Ich dreh noch durch! So ein Problem hatte ich vorher noch nie!
 
ich weiß nicht ob Header-Funktionen case-sensitive sind, aber schreib das "l" von "location" einfach mal groß...also "Location" ... :)
 
Original geschrieben von Maximus
Den Inhalt der If-Schleife hatte ich schon vorher geprüft.
Aber ich habe jetzt mal einfach Deinen Code eingesetzt.
Da zeigt er dann wirklich Userdaten stimmen an.
Und wenn ich dann die header-Zeile wieder aktiviere tut sich wieder nix!

und du hast vor der header funktion keinerlei ausgabe an den browser???
 
Nein, vorher keine Textausgabe.
Kann es vielleicht damit zusammenhängen, das mein Form $PHP_SELF aufruft?

Hier nochmal die GESAMTE Datei:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>User-Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?php
	//Wenn die Bestätigen-Taste gedrückt wurde
	if ($sf_ok=="Bestätigen")
	{
		//Verbindung zum SQL-Server herstellen
		$datenbank = @mysql_connect("localhost","root","");
		if (! $datenbank)
		{
			$fehlermeldung="Keine Verbindung zum SQL-Server möglich!";
		}
		
		//verbindung zur Datenbank herstellen
		if (! @mysql_select_db("clan-planer"))
		{
			$fehlermeldung="Keine Verbindung zur Datenbank möglich!";
		}
		
		//Benutzername und Passwort abgleichen
        $sql = mysql_query("SELECT nickname, password FROM user WHERE nickname='$tf_benutzername' AND password='$tf_passwort'");
        if (mysql_num_rows($sql) > 0)
        {
            //Anweisung wenn Benutzername und Passwort übereinstimmen
            header("location: admin.php");
        }
        else
        {
            //Anweisung wenn Benutzername und Passwort NICHT übereinstimmen
        }
		
	}

?>

<body>
<?php
	//Fehlermeldung anzeigen, falls ein Fehler aufgetreten
	if (isset($fehlermeldung))
	{
	echo ("Der folgende Fehler ist aufgetreten : $fehlermeldung");
	exit();
	}
?>

<form action="<?php $PHP_SELF?>" method="post">
  <table width="200" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr> 
      <td>Benutzername</td>
      <td><input name="tf_benutzername" type="text" id="tf_benutzername" size="30" maxlength="30"></td>
    </tr>
    <tr> 
      <td>Passwort</td>
      <td><input name="tf_passwort" type="password" id="tf_passwort" size="30" maxlength="30"></td>
    </tr>
    <tr> 
      <td colspan="2"><div align="center">
          <input name="sf_ok" type="submit" id="sf_ok" value="Best&auml;tigen">
        </div></td>
    </tr>
  </table>
</form>

</body>
</html>
 
Zurück