Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Login fehler (header already send)



Lucleonhart
10.01.2004, 07:26
Moin!
Ich versuch grad son PHP lo´ginscript (runtergeladen)in meine site einzubauen, und es klappt recht gut...bis jetzt...*argh* ;)

Hab also über dem menü das loginscript reingebastelt, per include steht dort ein

<div class="login">
<form method="post" action="main.php?login=login">
Username:<br>
<input type=text name="username" maxlength="20"><br><br>
Password:<br>
<input type=password name="password" maxlength="20"><br><br>
<INPUT TYPE="submit" VALUE="Login">
</form></div>

wie zu sehen soll die datei als check-datei die unterseite "login" includen...
Das PHP Script sieht dort allerdings vor die datei "login.php" aufzurufen, also einé ganz normale .php datei. diese sieht so aus:

<?php
session_start();
session_register("username");
?>

<?
include ("config.php");

$password=crypt($password,$schluessel);
$password .= "\n";
$log=0;

$userdatei = fopen ("user.txt","r");
while (!feof($userdatei))
{
$zeile = fgets($userdatei,50);
$userdata = explode("|", $zeile);
if ($userdata[0]==$username && $userdata[1]==$password)
{
$log=1;
}
}
fclose($userdatei);


if ($log==1)
{
?>


Sie sind eingeloggt!
<? echo "<center><a

href=\"$logoutseite\">Logout</a></center>"; ?>


<?
}
else
{
echo "Benutzer existiert nicht oder das Passwort ist

falsch!<br><a href=\"$loginseite\">zurück</a>";
}
?>

Ich will aber nicht ne extra neue php seite öffnen, will lieber ne unterseite aufrufen, wie eingestellt..hab also die login.phpeinfach in "_login.inc" umgebaut... nur bekomm ich dann dick diesen fehler an der include stelle des loginscripts:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/htdocs/lucleonhart.com/abi05/main.php:5) in /home/www/htdocs/lucleonhart.com/abi05/_login.inc on line 2
Sie sind eingeloggt!

Das lustige ist: Er bekommt den login hin... nur die sessions gehen wiohl nicht....
Irgendwer die muße mir zu helfen? *bettel* :)

Chocwise
10.01.2004, 09:19
ich hab zwar keine Ahnung von Sessions, hab noch nie damit gearbeitet, aber kann es sein das über dem:
<?php
session_start();
session_register("username");
?>
Noch irgendetwas steht?
Headerdaten müssen vor allem anderen gesendet werden, sonst klappts net.

Jesus_666
10.01.2004, 21:09
"Header already sent" läßt sich normalerweise relativ leicht erklären.

Du setzt irgendwo einen Header oder rufst eine Funktion auf, die das tut. Vorher wird allerdings irgendwas an den User gesendet. Sobald du irgendwas an den User sendet, werden auch sämtliche Header gesendet und du kannst nachträglich keinen Header mehr senden.

Du hast jetzt zwei Möglichkeiten:
1.) Das Script so durcharbeiten, daß vor dem Header nichts gesendet wird oder
2.) mit einem Output-Puffer arbeiten. Die entsprechenden Funktionen findest du hier (http://de3.php.net/manual/de/ref.outcontrol.php).

Lucleonhart
12.01.2004, 02:43
Dankeschöön habs selbst entblättert, das "session_start(); " muss vor allem stehn, und da es in einer includedet datei stand wars ... banana! *g* Habs also einfach nur eiinmal in die haupt php datei gepackt, und ...WUNDERBAR! ^^

Danke trotzdem! Ich liebe dieses Forum! :D