such & finde den fehler... header:location

Diggicell

Grünschnabel
Servus zusammen...

nach einem erfolgreichen Login benutze ich header('location:weiter.php') um auf die geschütze Site weiterzuleiten. Nun bekomme ich allerdings eine Fehlermeldung , die darauf schließen lässt , dass im voraus gegangenen Code eine Ausgabe stattfand , doch ich kann beim besten Willen keine erkennen. Nunja , 4 Augen sehen mehr als 2 :

PHP:
<?php
session_start();
if(isset($_POST['login'])){
include('var.inc.php');
$sql="SELECT*FROM users WHERE UserName='$username'";
$result=mysql_query($sql);
$satz=mysql_num_rows($result);
if(!$satz){echo "Dieser Benutzername exestiert nicht!";session_destroy();}
else{$row=mysql_fetch_array($result);
if($row['UserPass']!=md5($passwort)){echo"Das Eingegebene Passwort stimmt nicht";session_destroy();}
else{$lastlogin= $row['LastLogin'];
$right= $row['allow'];
$username= $row['UserName'];
$_SESSION['username']=$username;
$_SESSION['right']=$right;
$_SESSION['lastlogin']=$lastlogin;
$sql="UPDATE users";
$sql.="SET UserSession='".session_id()."'";
$sql.="WHEREid='".$row['id']."'";
$query=mysql_query($sql);
header('location:weiter.php');
}}}else{?>
<html>
<head>
	<title>Login!</title>
</head>

<body>
	<table width="430" align="center">
	<td bgcolor="#cc9900" width="424">
	<form action="<?php $PHP_SELF ?>" method="post">
		Username:<br>
		<input style="BACKGROUND-color:#FF9900" type="text" name="username" size="20" maxlength="20"><br>
		Passwort:<br>
		<input style="BACKGROUND-color:#FF9900" type="password" name="passwort" size="20" maxlength="20"><br>
		<input name="login" type="submit" id="login" value="Einloggen">
		<input type="hidden" name="lalala" value="Test">
	</td>
	</form>
</body>
</html><?php } ?>

var.inc.php

PHP:
<?php
$dbserver="localhost";
$dbname="XXX";
$dbuser="XXX";
$dbpass="XXX";
$link= mysql_connect($dbserver, $dbuser, $dbpass)or die("Keine Verbindung moeglich");
mysql_select_db($dbname,$link)or die("Die Datenbank existiert nicht");
?>

Vielen Dank für eure Hilfe,

Diggicell
 
Hallo,

1.) vor dem ersten <?PHP darf keine Leerzeile sein
2.) normalerweise wird bei der Fehlermeldung auch die Zeile angegeben, wo die erste Ausgabe aufgetreten ist. Das grenzt die Fehlersuche dementsprechend ein.


Dunsti
 
Hallo,

so ein Login wird im Normalfall nicht durch $PHP_SELF sondern durch zwei verschiedene Funktionen oder Dateien gelöst. Zum Beispiel eine login1.php mit dem Formular, welches dann auf eine login2.php verweist, in welcher die Abfrage und die Weiterleitung stattfinden.

Die Lösung ist meiner Meinung nach sauberer und sollte auf jeden Fall funktionieren.

Gruß, Dick
 
Wirft folgende fehlermeldung aus "...output started at var.inc.php:10"
Und der erste PHP starttag ist Leerzeichen frei... Vielen Dank für den Hinweis Dick. Hab es früher genauso gehandhabt wie du... Aber ich denkemal , desto weniger Dateien , desto besser :)

EDIT

Hab jetzt mal direkt im script zur DB connected (also var.inc.php in die index gepackt) und nun es... Fragt mich net warum....
 
Zuletzt bearbeitet:
Zurück