http-equiv="refresh" Verhalten bei verschiedenen Browsern

Es soll ja auch nur das ob_start an den Anfang, header nicht.
Das kann weiterhin unten in einem if-else drinstehen oder so.

...wobei bei diesem if-else irgendwie alles seltsam ist.
Rück deinen Code mal sinnvoll ein, dann sieht man gleich alles viel besser.
 
Hier noch einmal eine (hoffentlich) übersichtlichere Version.

PHP:
<?php
session_start();
ob_start();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html>    
<head>
.
.
.
</head>
<body>
.
.
.	
<?php
include 'config.php';
include 'connect.php';

$username = $_POST["username"];
$password = $_POST["password"];

if($username == "" OR $password == "")
    {
    echo "Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"database/login.html\">Zurück</a>";
    exit;
    }
    
$password1 = md5($password);

$result = mysql_query("SELECT id FROM tbl_benutzer WHERE user LIKE '$username'");
$menge = mysql_num_rows($result);

if($menge == 0)
    {
    	echo "User gibt es nicht! <a href=\"database/login.html\">Zurück</a>";

    }

		else
		{
		$pw_abfrage = mysql_query("SELECT user, password FROM tbl_benutzer WHERE user LIKE '$username'");

 		while($row = mysql_fetch_array($pw_abfrage))
			{
				$pw = $row['password'];
		 		if ($password1 != $pw)
					{
					echo "Falsches Passwort. <a href=\"database/login.html\">Zurück</a>";
					}
					
				else
				$_SESSION['loggedIn'] = true; 
				$_SESSION['username'] = $username;
				
				header ("refresh:2;url=main.html");
				ob_flush();
				echo "Login erfolgreich! Du wirst nun weitergeleitet.";
				
		  	}
			
		}
		
ob_end_clean();    
?>

Nur wird mir hier mein "echo "Login erfolgreich! Du wirst nun weitergeleitet.";" nicht angezeigt.
 
Da fehlt auch eine geschweifte Klammer hinter dem else:

PHP:
if ($password1 != $pw) {
	echo "Falsches Passwort. <a href=\"database/login.html\">Zurück</a>";
// hier ist bei dir keine { hinter dem else
} else {
	$_SESSION['loggedIn'] = true;
    $_SESSION['username'] = $username;

	header ("refresh:2;url=main.html");
	ob_flush();
	echo "Login erfolgreich! Du wirst nun weitergeleitet.";
}

Zumindest habe ich das jetzt mal gefunden.
 
Hmm. Hat zwar auch ohne Klammer funktioniert aber gut.

Ja bleibt nur noch das Problem, dass
PHP:
if ($password1 != $pw) { 
    echo "Falsches Passwort. <a href=\"database/login.html\">Zurück</a>"; 
}
garnicht angezeigt wird. Auch das CSS wird nicht angezeigt.
 
Warum hat es jetzt plötzlich ohne Klammer funktioniert? Gerade hast du noch behauptet es würde nicht gehen!

Wie sieht der komplette IF-Block nun aus und was meinst du das das CSS nicht angezeigt wird?
 
Ich meinte, die Abfrage an sich hat ohne Klammer funktioniert.

Das Weiterleitungsproblem besteht nach wie vor.

Ok. Hier noch einmal:

PHP:
<?php
session_start();
ob_start();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html>    
<head>
      
    
   
	<title>Login</title>
    <meta charset="utf-8">
	<meta name="robots" content="index,follow">
   	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    <link rel="stylesheet" href="http://www.URL.de/css/reset.css">
	<link rel="stylesheet" href="http://www.URL.de/css/unterseiten_style.css">
    <base href="http://www.URL.de/" target="_self">
	<link rel="SHORTCUT ICON" href="favicon.ico" type="image/x-icon">
	

</head>
<body>
	<div id="wrapper">
		<div id="head">
			<img alt="Logo" id="logo" src="images/logo_weiss.gif"></a>
			<a>
            <img alt="Schriftzug" id="schrift" src="images/schriftzug.gif">
            </a>
		</div>
		<div id="content">

<div class="content-inner-box-large">
<?php


include 'config.php';
include 'connect.php';



$username = $_POST["username"];
$password = $_POST["password"];



if($username == "" OR $password == "")
    {
    echo "Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"database/login.html\">Zurück</a>"; //wird angezeigt
    exit;
    }
    
$password1 = md5($password);

$result = mysql_query("SELECT id FROM tbl_benutzer WHERE user LIKE '$username'");
$menge = mysql_num_rows($result);

if($menge == 0)
    {
    	echo "User gibt es nicht! <a href=\"database/login.html\">Zurück</a>"; //wird nicht angezeigt

    }

		else
		{
		$pw_abfrage = mysql_query("SELECT user, password FROM tbl_benutzer WHERE user LIKE '$username'");

 		while($row = mysql_fetch_array($pw_abfrage))
			{
				$pw = $row['password'];
		 		if ($password1 != $pw)
					{
					//header ("refresh:2;url=login.html");
					echo "Falsches Passwort. <a href=\"database/login.html\">Zurück</a>"; //wird nicht angezeigt
					//ob_flush();
					}
					
				else{
				$_SESSION['loggedIn'] = true; 
				$_SESSION['username'] = $username;
				
				header ("refresh:2;url=main.html");
				echo "Login erfolgreich! Du wirst nun weitergeleitet."; //wird angezeigt
				ob_flush();
					}
				
		  	}

			
			
		}
		
		
		
ob_end_clean();    
?> 

</form>
</div>    	</div>
		<div id="footer">
			<span>
				
			</span>
		</div>
		
	</div>

</body>
</html>

Ich habe für das Layout eine CSS Datei.
Die wird mir bei 2 Ausgaben angezeigt und bei 2 nicht.
 
In Beitrag 9 schreibst du "Perfekt! Es funktioniert." - jetzt schreibst du das die Weiterlitung nicht (mehr) geht.

In Beitrag 14 schreibst du das die Meldung "Login erfolgreich" nicht angezeigt wird - und obwohl es gar nicht gehen konnte (weil eine geschweifte Klammer fehlte) schreibst du jetzt genaue das Gegenteil.

Was die CSS Datei(en) angeht verstehe ich immer noch nicht wo das Problem ist da ich nicht erkennen kann wo welche der Dateien eingesetzt wird!
 
In Beitrag 9 schreibst du "Perfekt! Es funktioniert."
Ja, damit meinte ich mein Ausgangsproblem.
- jetzt schreibst du das die Weiterlitung nicht (mehr) geht.
Doch. Nur werden mir bestimmt Ausgaben nicht gemacht. Wie z.B. "echo "Falsches Passwort. <a href=\"database/login.html\">Zurück</a>""

In Beitrag 14 schreibst du das die Meldung "Login erfolgreich" nicht angezeigt wird - und obwohl es gar nicht gehen konnte (weil eine geschweifte Klammer fehlte) schreibst du jetzt genaue das Gegenteil.
Es ging aber :(

Was die CSS Datei(en) angeht verstehe ich immer noch nicht wo das Problem ist da ich nicht erkennen kann wo welche der Dateien eingesetzt wird!
Eigentlich auf meine gesamte Seite.


Code:
echo "Eingabefehler. Bitte alle Felder korrekt ausfüllen."
und
Code:
echo "Login erfolgreich! Du wirst nun weitergeleitet."
wird mir angezeigt.

Bei dem Fall das
Code:
echo "Falsches Passwort."
oder
Code:
echo "User gibt es nicht!"
ausgegeben werden soll, erscheint jedoch nur eine weiße Seite.
 
Jetzt nur mal aufs PHP bezogen und ungetestet:

PHP:
<?php
include 'config.php';
include 'connect.php';

if(!isset($_POST['username']) or trim($_POST['username']) == "" or !isset($_POST['password']) or trim($_POST['password']) == "") {
	echo "Eingabefehler. Bitte alle Felder korrekt ausfüllen. <a href=\"database/login.html\">Zurück</a>";
} else {
	$username = $_POST["username"];
	$password = $_POST["password"];
}

$result = mysql_query("SELECT user, password FROM tbl_benutzer WHERE user = '" .mysql_real_escape_string($username} ."' AND password = '" .mysql_real_escape_string(md5($password)) ."'";

if(mysql_num_rows($result) == 1) {
    $_SESSION['loggedIn'] = true;
	$_SESSION['username'] = $username;
	header ("refresh:2;url=main.html");
	echo "Login erfolgreich! Du wirst nun weitergeleitet."; //wird angezeigt
	ob_flush();
} else {
	echo "User gibt es nicht oder die Angaben sind fehlerhaft! <a href=\"database/login.html\">Zurück</a>";
}

ob_end_clean();
?>

Teilweise was gelöscht was nicht benötigt wird, teilweise einfach ein bisschen anders gelöst.
 
Zuletzt bearbeitet:
PHP:
$result = mysql_query("SELECT user, password FROM tbl_benutzer WHERE user = '" .mysql_real_escape_string($username) ."' AND password = '" mysql_real_escape_string(md5($password)) ."'");

Da ist ein: Parse error: syntax error, unexpected T_STRING in /www/htdocs/w******e/database/login2.php on line 47
 
Zurück