Ik heb een login formulier gemaakt met een optie om de logingegevens te bewaren (als cookie).
Maar zodra de cookie moet worden gemaakt krijg ik deze foutmelding:

Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\extreemweer.nl\pagina\login.php:5) in D:\xampp\htdocs\extreemweer.nl\include\login.inc.php on line 156

Echter, ik heb nog niets naar de headers gestuurd voordat de 2 cookies gemaakt worden.

Het stukje code waar het omgaat:


<?
//hiervoor zit het formulier en enkele controles.
// controleer paswoord-login met paswoord database en geef $passwrd de waarde van het paswoord
$passwrd=CheckPasswordDb($_POST["login"]);
if (trim($passwrd) == trim($_POST["passwrd"]))
{
//als blijvend inloggen is aangevinkt cookie maken van login met tijd en datum
if($_POST['blijvendInloggen'] == 'ja')
{
setcookie("user", $_POST['login']);
setcookie("paswoord", trim(md5($_POST['passwrd'])));
}
//Registreer login en paswoord in sessie
$_SESSION['login'] = $_POST['login'];
$_SESSION['paswoord'] = trim($_POST['passwrd']);
//de rest van de code laat ik weg, is irrelevant
?>

Waarom kan ik de cookie niet maken?
Lieve schat, klik es hier.
Ik had natuurlijk wel al gegoogled en andere topics gelezen. Maar ik kwam er niet uit.
Ik heb nog niets naar de header gestuurd, en er is ook nog geen echo gebruikt voordat ik de cookie zet in de functie die wordt aangeroepen.

Hoe kan het dan dat ik die melding krijg? Liefhebbers om de hele functie te laten zien? ;)


je hebt op login.php regel 5 al output. Terwijl je in login.inc.php op regel 156 een cookie probeert te zetten. Dat heb ik niet zelf verzonnen maar verteld php je. Dus is het waar.
heb je misschien een spatie voor <?php staan??
Om misschien de B-O-M die met je encoding mee is gelift?

Trowuens, even wat anders, waarom sla je het wachtwoord op een cookie? Verre van veilig...
@Tom; nee geen spatie voor <?

@Aar; de cookie voor het paswoord wordt nog in md5 gezet. Zover was ik nog niet, eerst moest die foutmelding weg.

Ik heb in regel 5 van login.php inderdaad een menu output. Daarna worden de login functies aangeroepen. Als ik het goed begrijp kun je op deze manier geen cookie zetten, omdat er altijd output is vanwege de structurele opbouw en uitvoer van de site.

Hoe kan ik op een andere manier bij een inlogformulier een optie maken om de gegevens op te slaan, zodat een bezoeker niet elke keer zijn login en paswoord moet invoeren om in te loggen bij een bezoek aan mijn site?
Je moet eerst de logica van een website uitvoeren (daar valt het verwerken van een login ook onder, maar tevens het verwerken van berichten etc.) daarna komt pas de uitvoer van het script. (Dus je menu, teksten. oftewel alle html)

Verder nog wat dingen:
setcookie("paswoord", trim(md5($_POST['passwrd'])));
Moet worden
$_COOKIE['passwoord'] = md5(trim($_POST['passwrd']));
anders neem je de spaties mee in je md5. En een trim over een md5 is nutteloos
Karl schreef op 08.02.2009 13:12
Lieve schat, klik es hier.


Leuke link, xD
Ik heb inmiddels door waarom het niet werkte om een cookie te zetten. Nu heb ik helemaal bovenin de pagina een controle gemaakt of er aan bepaalde voorwaarden wordt voldaan om de cookie(s) te maken.

Bedankt allemaal voor het meedenken!

Reageren