[PHP] login Probleme mit Session oder Header

CWPA

Ensign
Dabei seit
März 2005
Beiträge
197
Moin,

dieser Fehler kommt bei meinem Login Script:


Warning: Cannot modify header information - headers already sent by (output started at D:\Programme\xampp\htdocs\Server\news-script(2)\news-script\login.php:17) in D:\Programme\xampp\htdocs\Server\news-script(2)\news-script\login.php on line 45

wisst ihr woran das liegt?


PHP:
<?php
session_start('user');

include("config.php");
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="post">
Name: <input type="text" name="name" value="" id="name"><br>
Passwort: <input type="password" name="pw" value="" id="pw"><br>
<input type="submit" name="login" value="Login" id="login"><br>
</form>

<?php
if(isset($_POST['login'])){
$name = $_POST['name'];
$pw = $_POST['pw'];

$pw = md5($pw);

if($name == "" or $pw == ""){
echo "Nicht alle Felder ausgefüllt";
exit;
}

$select = "SELECT * FROM user WHERE user = '$name'";
$query = mysql_query($select);
$fetch = mysql_fetch_assoc($query);

if(!isset($fetch)){
echo "Dieser Benutzer existiert nicht";
exit;
}

if($fetch['pw'] != $pw){
echo "Das Passwort ist falsch";
exit;
}

$_SESSION['user'] = '$name';

header("Location: index.php");
}
?>
</body>
</html>
 
Beim Schnellüberblick denke ich, dass es daran:

Du gibst vorher schon Fehlermeldungen aus - da kann das Weiterleiten in Zeile 45
nicht mehr funktionieren.

Solange Du noch etwas am Header verändern möchtest, z.B. weiterleiten auf eine
andere Seite - solange darf keine andere Ausgabe auf dem Bildschirm stattfinden.
 
sehr richtig, ist mir auch aufgefallen...


login.php
PHP:
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login2.php" method="">
Name: <input type="text" name="name" value="" id="name">
Passwort: <input type="password" name="pw" value="" id="pw">
<input type="submit" name="login" value="login" id="login">
</form>

<?php

$fehler = $_GET['fehler'];

if(fehler != ""){
echo $fehler;
}
?>
</body>
</html>

Login2.php
PHP:
<?php
session_start(user);

include("config.php");

$name = $_POST['name'];
$pw = $_POST['pw'];
$pw = md5($pw);

if($name == "" or $pw == ""){
header("Location: login.php?fehler=Nicht alle Felder ausgefüllt");
exit;
}

$select = "SELECT * FROM user WHERE name = '$name'";
$query = mysql_query($select);
$fetch = mysql_fetch_assoc($query);

if(name == ""){
header("Location: login.php?fehler=Dieser Benutzer existiert nicht");
exit;
}

if($pw != $fetch['pw']){
header("Location: login.php?fehler=Falsches Passwort");
exit;
}

$_SESSION['user'] = $name;

header("Location: index.php");



?>


jetzt sagt der aber nicht alle felder ausgefüllt. :(
 
Probier mal $HTTP_POST_VARS anstelle von $_POST...
 
Ähm, seh gerade: <form action="login2.php" method="">

Hinter method sollte dann auch POST stehen :D
 
schwup die wupp:

hatte ich mal vorhin rausgenommen:

jetzt sagt der das ???
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\Programme\xampp\htdocs\Server\news-script(2)\news-script\login2.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at D:\Programme\xampp\htdocs\Server\news-script(2)\news-script\login2.php:17) in D:\Programme\xampp\htdocs\Server\news-script(2)\news-script\login2.php on line 25
 
Dann nimm halt mysql_fetch_array und prüfe mal ob die Datenbankverbindung funktioniert bzw. der SQL-query auch korrekt ist.
 
hmpf grml


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Programme\xampp\htdocs\Server\news-script(2)\news-script\login2.php on line 17
und die

Warning: Cannot modify header information - headers already sent by (output started at D:\Programme\xampp\htdocs\Server\news-script(2)\news-script\login2.php:17) in D:\Programme\xampp\htdocs\Server\news-script(2)\news-script\login2.php on line 25

datenbankverbindung funktioniert...
 
Bist Du sicher? Mach mal ein echo $query und kopier das in ein phpmyadmin, hast Du das?

Wenn das da funktioniert ist der query ok, die Verbindung zur Datenbank aber nicht.

Und: Wenn das so weitergeht gibste mir gleich mal deine telefonnummr - sonst werden wir heute ja gar nicht mehr fertig :evillol:
 
100% sicher das die config.php
funktioniert und ich zur datenbank verbindunge habe denn mein register script geht.
und ich kann das auch auslesen...

also keine ahnung
 
Also ein

$query = "SELECT * FROM user";
$result = mysql_query($query);
echo mysql_num_rows($result);

bringt ein ergebnis?

zumindest einen User müsstest Du ja in der Datenbank haben um Deine
Funktion testn zu können...
 
Na fein, dann ist doch der SQL-Query nicht richtig und Du weißt, was Du korrigieren musst, damit es denn endlich funktioniert.
 
Schreib einfach in die 1. Zeile deines Scripts
ob_start()

und du hast die ganze header-alread-sent-problematik nicht mehr.
 
soweit so gut,

jetzt sagt der das PW ist falsch?
kann aber nicht - oder?

also password wird bei der regestration auch md5 veschlüsselt
 
Zuletzt bearbeitet:
Zurück
Top