unglaublicher headers already sent fehler

Paspirgilis

Weißer Powerranger
Folgendes:


Warning: session_start() [function.session-start]: Node no longer exists in /data/apache/users/kilu.de/fichte/www/Clan-NoA/index.php on line 2

Warning: session_start() [function.session-start]: Node no longer exists in /data/apache/users/kilu.de/fichte/www/Clan-NoA/index.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/apache/users/kilu.de/fichte/www/Clan-NoA/index.php:2) in /data/apache/users/kilu.de/fichte/www/Clan-NoA/index.php on line 2


In Zeile zwei ist nur der Session start.
Beim ersten aufrufen der seite passiert kein Fehler beim zweiten mal schon.
Das sieht für mich so aus als ob der mir doch tatsächlich sagen will, dass die header von der Funktion schon geschickt wurde die nen header gerade schicken will und deshalb nich kann.
:eek:

Wie geht das?

Ich versteh das nich hier mal das danach:

PHP:
if(isset($_POST['login']))
	{
	@$name = stripslashes(strip_tags($_POST['name']));
	@$pw = stripslashes(strip_tags($_POST['pw']));
	$error = true;
	if($name == 'Gast')
		{
		$error = false;
		$_SESSION['rank'] = 1;
		$matched_name = 'Gast';
		}
	else
		{
   	$userdb = simplexml_load_file('datei.xml');
		$_SESSION['rank'] = 'not_found';
		foreach($userdb -> user as $users)
			{
			$count_hits = 0;
			foreach($users -> attributes() as $a => $b)
				{
				if( ( $a == 'name' && strtolower($b) == strtolower($name) ) || ( $a == 'pw' && $b == md5(strtolower($pw) . 'markRulez') ) )
					{
					$count_hits++;
					if( $a == 'name' && strtolower($b) == strtolower($name) )
						$matched_name = $b;
					}
				if( $count_hits > 0  && $a == 'rank' )
					$_SESSION['rank'] = $b;
				}
			if($count_hits == 2)
				$error = false;
			}
		}

	if($error)
		{
		}
	else
		{
		$_SESSION['logged'] = 'done';
		$_SESSION['user_nickname'] = $matched_name;
		setcookie('login_name', $name, time() + 60*60*24*60);
		}
	}

if($_SESSION['logged'] != 'done')
	echo '<script type="text/JavaScript">location.href = "loginpage.php?notice=failed";</script>';

MFG
Mark Paspirgilis

PS: fragt bitte nicht warum ich nen script bereich mit location.href echo'e statt header(). Resultierte aus erfurcht vorm versenden von headern... mit anderen Worten N/C.



PPS: den Schmahn könnt ihr euch übrigens auch ansehen http://fichte.kilu.de/Clan-NoA/ einfach als Gast ohne Passwort einloggen.
 
Hi.

Kann es sein, das du in der Session irgendwelche XML Knoten speicherst?

\edit: Offensichtlich. Du solltest nicht direkt die XMLElemente speichern, sondern nur die Werte (string), sonst kann PHP die Objekte nicht wieder reinstanzieren.

Der Fehler mit den Headern kommt vermutlich daher, weil die Warnungen schon raus sind, und damit sind die Header schon gesendet.

Gruß
 
Zuletzt bearbeitet:
Ich bin zwar gerade auf der arbeit aber nachher probier ich das mal aus.
Kannn sehr gut sein weil mit SESSION und alles andere was ich darin benutze habe ich schon erfahrung, nur nich mit XML. Dies ist meine erste XML übung.
Danke ich denke das wirds sein.

MFG
Mark Paspirgilis

PS: wie mache ich das denn?
liegt dann glaub ich an diesem Teil:
$_SESSION['rank'] = $b;

ist das nicht der WErt?
 
Moin,

Versuchs mal so:
Code:
$_SESSION['rank'] = (string)$b;

Kann man mir bitte mal jemand sagen, wo das dokumentiert ist? Ich mein... das Problem, was ich mit MEINEN Scripten hatte, ist mit diesem (string)$b auch gelöst, aber in meiner SelfPHP5.1.3 finde ich darüber nichts.
Oder wenigestens erklärt mir bitte mal jemand was das Ding wirklich macht und wann man das anwenden könnte?
Danke im Voraus.
 
Hi.
Kann man mir bitte mal jemand sagen, wo das dokumentiert ist? Ich mein... das Problem, was ich mit MEINEN Scripten hatte, ist mit diesem (string)$b auch gelöst, aber in meiner SelfPHP5.1.3 finde ich darüber nichts.
Oder wenigestens erklärt mir bitte mal jemand was das Ding wirklich macht und wann man das anwenden könnte?
Das ist im Grunde genommen einfach ein Cast. D.h. du erzwingst damit einen gewissen Typ - in diesem Fall den Typ String. Ich denke mal dazu steht auch was im SelfPHP.

Falls du das nicht tust, wird ein Objekt gespeichert, welches mit dem Original-XML Dokument verknüpft ist. Das existiert dann aber später nicht mehr und eigentlich brauchst du auch nicht das XML Element-Objekt, sondern nur den Text der zu dem Element gehört.

Gruß
 
Ja, wenn ich nach "Cast" suche, dann find ich was in SelfPHP. Wenn man allerdings (string) eingibt, kriegt mal ALLES zum Thema string... auch das ohne Klammern. Viel Spaß dabei :)
Aber immerhin... wieder was dazugelernt... das Ding mit (string) kannte ich noch gar nicht. Danke :)
 
Zurück