Cannot send session cookie

Nabend zusammen,
ich hab das untenstehende Script nu endlich fertig, funktionierte auch soweit. Jedoch hab ich eben Mozilla ausgemacht und wollte dann neu auf die Seite drauf gehn... dann kam folgender Fehler:

Code:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /Applications/MAMP/Homepages/real-insanity.com/index.php:17) in /Applications/MAMP/Homepages/real-insanity.com/inhalt/login_header.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Applications/MAMP/Homepages/real-insanity.com/index.php:17) in /Applications/MAMP/Homepages/real-insanity.com/inhalt/login_header.php on line 2

Hier das PHP Script:
PHP:
#<?php
session_start(); 
if(isset($_REQUEST['action'])=="logout"){
		unset($_SESSION['user_id']);
		session_destroy();}
if(isset($_SESSION['user_id'])) {
		echo '<table border="0" margin="0" cellspacing="0" cellpadding="0">
		<tr>
			<td>Willkommen,</td>
			<td> '.$_SESSION['user_nickname'].'!</td>
        </tr>
        <tr>
        	<form action="?section=login&action=logout" method="post">
        		<td><input type="image" src="images/buttons/logout.jpg" name="submit" value="Login"></td>
        	</form>
        	<form action="?section=profile" method="post">
        		<td><input type="image" src="images/buttons/edit_profile.jpg" name="submit" value="Login"></td>
            </form>
        </tr>
         </table><br>';} 
else { 
		echo '<table border="0" margin="0" cellspacing="0" cellpadding="0">
		        <tr>
		            <form action="?section=Login" method="post">
		            	<td><input value="User" width="6" type="text" name="User" id="User" class="input"></td>
			            <td><input value="Passwort" width="6" type="password" name="password" id="password" class="input"></td>
			            <td><input type="image" src="images/buttons/login.jpg" name="submit" value="Login"></td>
			            <td><input type="image" src="images/buttons/forget.jpg" name="forget" value="Login Vergessen?"></td>
			        </form>
		        </tr>
		         </table><br>';}

if(isset($_POST['User'],$_POST['password'],$_POST['submit'])){
	$sql = "SELECT ID,Name,PW FROM user WHERE Name='".$_POST['User']."' AND PW=md5('".$_POST['password']."')"; 
	$result = mysql_query($sql) OR die(mysql_error());

    if(mysql_num_rows($result)>0){
        $row = mysql_fetch_array ($result);
        $_SESSION["user_id"] = $row["ID"]; 
        $_SESSION["user_nickname"] = $row["Name"];}
    else{
        echo "<br>User und PW stimmen nicht überein!!! <br><br>";}}
?>
 
Ist dein geposteter Code die Index.php-Datei ?
Sonst poste die auch bitte noch.
Und schreibe bitte drann, welche Datei das oben ist.
 
index.php

PHP:
<?php
if(isset($_GET['section'])=="gb"){
	setcookie("zufallszahl", $zufallszahl);}
include "includes/config.php";
include "includes/sql.php";
include "includes/func.php";

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//DE">
<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
		<title>reaL - Insanity.com ? Your Insanity ruLe my LiFe</title>
		<meta name="author" content="Marco Matthias Franke">

		<meta name="description" content="Dies ist die private Homepage von real-Insanity (Marco Matthias Franke)

			Hier erfahrt Ihr alles über mich und noch viel mehr ;)">

		<meta name="publisher" content="Marco Matthias Franke">

		<meta name="copyright" content="Marco Matthias Franke">

		<meta name="keywords" content="Eigene, Homepage,real-insanity,real,insanity,marco,marco,franke,marco,matthias,marco,matthias,
			franke,boisheim,viersen,nrw,nv speicher, html hilfe,hilfe">

		<meta name="page-type" content="Private Homepage">

		<meta name="audience" content="Alle">
		<meta http-equiv="content-language" content="de">

		<meta name="robots" content="index, follow">
		<link rel="stylesheet" type="text/css" href="style.css">
		<link rel="shortcut icon" href="favicon.ico">
	</head>
	<script type=\"text/javascript\">

	function FensterOeffnen (Adresse) {

		Fenster1 = window.open(Adresse, \"Zweitfenster\", \"width=300,height=400,left=100,top=200\");

		Fenster1.focus();}

	</script>

	<script language = "Javascript">

	function taLimit() {

		var taObj=event.srcElement;

		if (taObj.value.length==taObj.maxLength*1) return false;}



	function taCount(visCnt) { 

		var taObj=event.srcElement;

		if (taObj.value.length>taObj.maxLength*1) taObj.value=taObj.value.substring(0,taObj.maxLength*1);

		if (visCnt) visCnt.innerText=taObj.maxLength-taObj.value.length;}

	</script>

	<body background="images/background.jpg" style="font-size:11px;">
	<div align="center">
	<table class="bgtable" border="0" margin="0" cellspacing="0" cellpadding="0" valign="top">
		<tr>
			<td colspan="3"><img src="images/header.jpg" border="0" usemap="#rss" width="900" height="92">
				<MAP name="rss">
					<AREA shape="rect" coords="876,69,895,88" href="?section=rss" alt="real-Insanity.com » RSS-Feeder">
				</MAP>
			</td>
		</tr> 
		<tr>
			<td></td>
		</tr>		
		<tr>
			<td colspan="3" valign="middle" align="left"> 
				<?php include "inhalt/login_header.php"; ?>
			</td>
		</tr>
				<tr>
			<tr>
				<td class="navi"><img src="images/menue.jpg">
				<?php include "includes/navi.php"; ?><br><br>
				<img src="images/community.jpg"><?php include "includes/comnavi.php"; ?><br><br>
				<img src="images/adverds.jpg"></div></td>
				<td class="inhalt">
					<table width="100%" border="0">
						<tr>
							<TD align='left'>						
				 <?php echo $_SERVER['SERVER_NAME']; ?> » 
				 <?php
				 if($_GET['section']==NULL){
				 	echo "<a href='?section=".$_GET['section']."'>Home</a>";} 		 
				 else{
				 	echo "<a href='?section=".$_GET['section']."'>".$_GET['section']."</a>";
				 	if(isset($_REQUEST['content'])){
				 		echo " » <a href='?section=".$_GET['section']."&content=".$_REQUEST['content']."'>".$_REQUEST['content']."</a>";}}
				 ?>
				 </TD>
						</tr>
						<TR>
							<TD height="90%">
								<?php echo "<br>"; include "includes/inhalt.php"; ?>				
							</TD>
						</tr>
						<tr>
							<td><br><br><br><br><br><br>
								<a href="?section=Home">Home</a> | 
								<a href="?section=Kontakt">Kontakt</a> | 
								<a href="?section=Impressum">Impressum </a>
							</td>
						</TR>
					</table>				
				</td>
				<td class="extra"><img src="images/actions.jpg"><br> 
				<div align="right">
				<?php
					include "inhalt/actions.php"; 
				?>
				</div>
				<br><br>
				<img src="images/charts.jpg"><br>
				<?php
					include "inhalt/charts.php"; 
				?>
				<br><br>
				<img src="images/stats.jpg"><br>
				<?php
				include "counter.php";
				?>
				</td>
			</tr>
		</tr>
		<tr>
			<td class="footer" colspan="3"><img src="images/footer.jpg"></td>
		</tr>
	</table>
	</body>
</html>
 
also wenn ich mir den anderen thread von dir angucke tippe ich darauf, dass du dich nicht an die anweisung gehalten hast, session_start() in jeder datei ganz am anfang zu senden, wo die session benötigt wird. in deiner index.php kann ich das oben nämlich nicht sehen. und in der anderen php ist eine # als erstes zeichen, dies könnte aber auch beim posten passiert sein

das mit dem header bereits gesendet kann auch sein, wenn die php-datei mit nem leerzeichen, ner leerzeile... anfängt. das allererste zeichen in einer php-datei muss das < sein.

überprüfe diese paar punkte mal
 
ja okay lag daran hatte die alte index.php geöffnet gehabt und ne die neue.... ach woran kann es liegen, dass ich mich nachm ausloggen immer doppelt anmelden muss bis ich dann endlich eigeloggt bin?!
 
Liegt wohl an der Gliederung.
Habe da eine vage Vermutung, bin mir aber nicht ganz sicher.
Versuch mal:
PHP:
session_start(); 
if(isset($_REQUEST['action'])=="logout"){
        unset($_SESSION['user_id']);
        session_destroy();}

if(isset($_POST['User'],$_POST['password'],$_POST['submit'])){
    $sql = "SELECT ID,Name,PW FROM user WHERE Name='".$_POST['User']."' AND PW=md5('".$_POST['password']."')"; 
    $result = mysql_query($sql) OR die(mysql_error());

    if(mysql_num_rows($result)>0){
        $row = mysql_fetch_array ($result);
        $_SESSION["user_id"] = $row["ID"]; 
        $_SESSION["user_nickname"] = $row["Name"];}
    else{
        echo "<br>User und PW stimmen nicht überein!!! <br><br>";
    }
}

if(isset($_SESSION['user_id'])) {
        echo '<table border="0" margin="0" cellspacing="0" cellpadding="0">
        <tr>
            <td>Willkommen,</td>
            <td> '.$_SESSION['user_nickname'].'!</td>
        </tr>
        <tr>
            <form action="?section=login&action=logout" method="post">
                <td><input type="image" src="images/buttons/logout.jpg" name="submit" value="Login"></td>
            </form>
            <form action="?section=profile" method="post">
                <td><input type="image" src="images/buttons/edit_profile.jpg" name="submit" value="Login"></td>
            </form>
        </tr>
         </table><br>';} 
else { 
        echo '<table border="0" margin="0" cellspacing="0" cellpadding="0">
                <tr>
                    <form action="?section=Login" method="post">
                        <td><input value="User" width="6" type="text" name="User" id="User" class="input"></td>
                        <td><input value="Passwort" width="6" type="password" name="password" id="password" class="input"></td>
                        <td><input type="image" src="images/buttons/login.jpg" name="submit" value="Login"></td>
                        <td><input type="image" src="images/buttons/forget.jpg" name="forget" value="Login Vergessen?"></td>
                    </form>
                </tr>
                 </table><br>';}

hab das jetzt einfach mal umgestellt
 
Öhm, das wird was viel zu schreiben. Ich hoffe man kann mich nachvollziehen. Undzwar versuche ich zu verstehen, was das Skript genau macht. Bei deinem Beispiel:
Ich klicke auf Ausloggen.
Das Skript wird aufgerufen, die Session gestartet und direkt wieder zerstört. Damit kommt man automatisch in den else-Zweig, wo wieder nach den Angaben gefragt wird. Dort macht man seine Angaben und drückt auf wegschicken. Jetzt wird zwar der Rest des Skriptes auch noch ausgeführt, aber die Daten, die eingegeben wurden, werden nichtmehr berücksichtigt. Damit hat man dann auch keine user_id
und landet nach session_start() wieder im else-Zweig, wo dann wieder nach der Eingabe gefragt wird. Nun sind aber schon die Daten von der letzten Eingabe vorhanden. Man tippt wieder alles ein und schickt auf
Absenden. Nun wird auch wieder der Rest ausgeführt. Jetzt aber MIT den Daten von vorher. Dann wird auch das entsprechende Ergebniss geliefert und man bekommt eine userid zugewiesen, die einen nacher dann, beim Neuaufruf des Skriptes durch das absenden der Daten des 2. mals, nicht in den else-Zweig führen.
Wahrscheinlich würde das auchgehen, wenn man refresh drückt.

Hoffe man konnte mich verstehen

0wnZ
 
ja ich konnte es verstehen, klingt auch sehr plausibel so im nachhinein, aber wie gesagt 4 Augen sehen mehr als 2 ;)

Und danke bei den Hilfen (:
 
Zurück
Oben