Tut Login mit Sessions

JackyD

Erfahrenes Mitglied
Hallo @ all,
ich hab den Code von diesem Tutorial kopiert um das zu testen und danach anzupassen, aber ich bekomme nach dem einloggen folgende Meldung:
Warning: Cannot add header information - headers already sent by (output started at C:\FoxServ\www\login.php:21) in C:\FoxServ\www\login.php on line 38
 
Hier mehr code:
login.php
Code:
<?php 
// Session starten 
session_start ();

include ("var.php"); 

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ($host, $user, $pass); 
if (!mysql_select_db ("test", $connectionid)) 
{
die ("Keine Verbindung zur Datenbank"); 
}

$sql = "SELECT name, ID FROM user WHERE ".
#"(name like '".$_REQUEST["name"]."') AND ".
#"(pass = '".md5 ($_REQUEST["pwd"])."')";
"(name like 'daniel') AND ".
"(pass = 'bf0dad671dd5176134c3f2cb353b6432')";
$result = mysql_query ($sql);

echo $result;
echo "<br>";
echo mysql_num_rows ($result);

if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen. 
$data = mysql_fetch_array ($result);

// Sessionvariablen erstellen und registrieren
$_SESSION["user_name"] = $data["name"];
$_SESSION["user_id"] = $data["ID"];

header ("Location: intern.php");
}
else
{
header ("Location: formular.php?fehler=1");
}
?>
Hab des für das testen nachdem der fehler kam mal ohne die formulareingabe gemacht, sondern des gleich in Login angegeben, aber da kommt dann bei mysql_num_rows ($result) 0 raus.
Der code ist doch jetz dass was du wolltest, oder bracuhst du die andere auch noch, müssten aber eich nicht relevant sein.
In der php.ini hat auto_prepend_file keinen Wert.
 
Bei mir hat auch schon eine einfaches Leerzeichen vor dem allerersten <?php tag den Fehler verursacht..... ziemlich link..... ;)

Greetz...
 
Logos hat gesagt.:
Bei mir hat auch schon eine einfaches Leerzeichen vor dem allerersten <?php tag den Fehler verursacht..... ziemlich link..... ;)

Greetz...
Kann ich nur bestätigen, ich habe mir echt den Wolf gesucht und es lag an einer Leerzeile vor <?php... :p

Ich habe auch schon mal eine ganz einfache Connection includiert und vorher ausgegeben, schon kam der Fehler. Nachdem ich die Daten aus der Include genau an die Stelle gesetzt habe, wo vorher die include stand, funktionierte es. War vermutlich auch ein Leerstring drin.

Versuchs mal so

PHP:
<?php // Session starten 
session_start ();
include ("var.php");// Datenbankverbindung aufbauen 
$connectionid= mysql_connect ($host, $user, $pass); 
if (!mysql_select_db ("test", $connectionid)){
die ("Keine Verbindung zur Datenbank");}
if(get_magic_quotes_gpc()) 
  {
    $name = $_POST['name'];
   }
  else
  {
  	$name = addslashes($_POST['name']);
  }
$sql="SELECT name, ID FROM user WHERE name like '$name' AND pass = '".md5 ($_REQUEST["pwd"])."'";
	$result= mysql_query ($sql);
if (mysql_num_rows ($result)>0){// Benutzerdaten in ein Array auslesen. 
	$data= mysql_fetch_array ($result);// Sessionvariablen erstellen und registrieren
	$_SESSION["user_name"]=$data["name"];
	$_SESSION["user_id"]=$data["ID"];
	header ("Location: http://www.domain.de/intern.php");
	} else {
	header ("Location: http://www.domain.de/formular.php?fehler=1");
}?>

Du darfst einfach vorher kein echo ausgeben, ist ja Blödsinn, wenn weitergeleitet werden soll.
 
Zuletzt bearbeitet:
K, jetzt gahts, aber er sendet, den 2.header. Irgendswie nimmt der den Username und so net an. mysql_num_rows ($result) ist 0, deshalb wird der 2 header ausgeführt.
 
Hi

dann schau doch mal nach, ob die Variablen alle stimmen und z.B. Groß- oder Kleinschreibung beachtet wird.
 
Zurück