PHP setzt keine Cookies

Seppi123

Erfahrenes Mitglied
Guten Tag an die Community ;)

Ich bin es mal wieder :)

Für mein Projekt benötige ich ein Login, der auf Cookies aufgebaut sein soll. Leider setzt PHP seit kurzem keine Cookies mehr :confused:

Via :google: habe ich noch nichts passendes gefunden

PHP:
if (isset($_GET["mod"]) AND $_GET["mod"] == "login"){
// Login Formulardaten übergeben
$username = htmlspecialchars($_POST["PHP_PHAOS_USER"]);
$password = md5(htmlspecialchars($_POST["PHP_PHAOS_PW"]));
// Checkt, ob der Benutzer in der Datenbank auftaucht
$abfrage = "SELECT * FROM phaos_users WHERE username LIKE '$username' LIMIT 1"; 
$ergebnis = mysql_query($abfrage); 
$row = mysql_fetch_object($ergebnis); 

if($row->password == $password) 
    { 
	$id = htmlspecialchars($row->id);
	$user = htmlspecialchars($row->username);
	$lang = htmlspecialchars($row->lang);
	$mail = htmlspecialchars($row->email_adress);
	echo "<script>alert('$id\n$user\n$lang\n$mail');</script>";
	$_SESSION["uid"] = $id;
	$_SESSION["PHP_PHAOS_USER"] = $user;
	$_SESSION["PHP_PHAOS_MD5PW"] = $password;
	$_SESSION["lang"] = $lang;
	$_SESSION["mail"] = $mail;
	setcookie("loggedin",true);
	}
	else {
	echo "Falsches Passwort / Falscher Benutzername";
	}
}
else {
	?>
	<html>
	<head>
	<title><?php echo $SITETITLE; ?></title>
	<link rel=stylesheet type=text/css href=styles/phaos.css>
	<link rel='shortcut icon' href='images/phaos.ico' type='image/x-icon'>
	<link rel='icon' href='images/phaos.ico' type='image/x-icon'>
	</head>
	<body bottommargin="0" rightmargin="0" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
	<div align=center>
	<br>
	<br>
	<form method="post" action="index.php?mod=login">
	<table border="0" cellspacing="1" cellpadding="0" width="435" height="315" background="http://www.tutorials.de/images/scroll.png">
	<tr>
	<td colspan="2" align=center>
	<img src="http://www.tutorials.de/images/login_logo.gif">
	<p>
	<table cellspacing=0 cellpadding=0 border=0>
	<tr>
	<td align=right><font color="black"><strong><?php echo $lang_aup["user"]; ?>: &nbsp</strong></font></td>
	<td><input name="PHP_PHAOS_USER" type="text" value="<?php echo $_COOKIE["PHP_PHAOS_USER"]; ?>"></td>
	</tr>
	<tr>
	<td align=right><font color="black"><strong><?php echo $lang_aup["pass"]; ?>: &nbsp</strong></font></td>
	<td><input name="PHP_PHAOS_PW" type="password"></td>
	</tr>
	</table>
	<br>
	<input type="submit" name="LoginFormSubmit" value="<?php echo $lang_aup["login"]; ?>"> 
	</td> 
	</tr> 
	</table> 
	</form> 
	<p>
	<a href="register.php"><?php echo $lang_aup["register"]; ?></a> 
	<p>
	<br>
	<br>
	<small>
	Copyright 2012-<?php echo date("Y",time()); ?> Sebastian Wenzek & Alicia Eisenach - All Rights Reserved
	</small>
	</body>
	</html>
	<?php
	exit;
}
 
Du müsstest doch eine Fehlermeldung bekommen die "Headers already sent..." lautet, oder?
Probier in deinem Fall einfach mal das Cookie vor dem echo '<script>...' zu setzen.
 
Also habe das echo ''; jetzt mal nach dem setcookie(); gemacht, leider funktionierts immer noch nicht.

Das mit dem Headers already send habe ich auch als , obwohl session_start(); nur in dieser Datei includiert wird (gibt mehrere Scripte)

ich habs damit gelöst, dass ich es so mache:

<?phpsession_start();?>
<?php
// restliches script
?>

Das habe ich bei einer Webseite gelesen, dass headers already sent daran liegen könnte, dass PHP schon Leerzeichen vor Session_start(); Fehlerhaft findet...

Jetzt bekomme ich den Fehler (Headers already sent) nicht mehr, aber die Cookies gehen nicht, und wenn ich es normal schreibe
(<?php
session_start();
?>)

bekomme ich IMMER ein Fehler komischerweise, obwohl das komplett am Anfang steht
 
Zuletzt bearbeitet:
Das Problem mit session_start() und setcookie() ist das Gleiche! Sobald du irgendwas ausgibst - per echo oder einfach nur HTML oder im blödesten Falle ein klitzekleines Leerzeichen - können keine Header mehr gesendet werden (was Cookies mit einschließt).
Output-Buffering dient sozusagen zum zwischenspeichern der Ausgabe bis "ans Ende des Scripts", bzw. dort, wo du z.B. ob_end_flush() aufrufst.
Stichworte zum schlau machen:HTML-Header, ob_start(), ob_end_flush(), Encoding UTF-8 ohne BOM (Byte Order Mark)
 
Zurück