Meine PHP session wird erst richtig nach dem klick auf aktualisieren angenommen

michi002

Grünschnabel
ich habe folgendes problem:

ich habe eine seite gemacht mit loginsystem.
das loginformular (anmeldeformular.php) ist mittels include includiert und es soll zu anmeldung_bestaetigen.php führen, was es auch macht.
Bei der anmeldung_bestaetigen seite habe ich eine verzweigung gemacht die wenn die Session variable $_SESSION["anmeldung_bestaetigung"] 1 ist dann soll sie anmeldung erfolgreich ausgeben, wenn sie leer ist dann soll sie das anmeldeformular ausgeben.
Wenn man sich jetzt mit dem richtigen benutzernamen anmeldet kommt man auf diese seite aber der wert von $_["anmeldung_bestaetigung"] ist nichts.
erst nach einem klick auf aktualisieren im browser wird sie zu 1

ich geb euch mal die codes:

anmeldeformular.php:

Code:
<?php 
include'connect.php';

?>
<!-- <br /><form action="anmeldung_bestaetigung.php?" method="post"> -->
 <form action="anmeldung_bestaetigung.php" method="post">
Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" size="15" name="name" /><br />
Passwort&nbsp;<input type="password" size="15" name="passwort" /><br /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="login">
<?php
$name_a = $_POST["name"];
$passwort_a = $_POST["passwort"];
$abfrage = "SELECT * FROM users WHERE name = '$name_a'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   $name_abfrage = $row->name;
   $passwort_abfrage = $row->passwort;
   }

if($passwort_a == $passwort_abfrage)
{
	$anmeldung_bestaetigung = 1;
}
elseif($passwort_a != $passwort_abfrage)
{
	$anmeldung_bestaetigung = "";
}
session_start();
$_SESSION["name_anmeldung"] = $name_a;
$_SESSION["passwort_anmeldung"] = $passwort_abfrage;
$_SESSION["anmeldung_bestaetigung"] = $anmeldung_bestaetigung;
echo $_SESSION["anmeldung_bestaetigung"];
?>


und hier die anmeldung_bestaetigung.php:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title></title>
</head>

<body>
<?php
session_start();

if($_SESSION["anmeldung_bestaetigung"] == 1)
{
	echo "<center><font color=\"red\"><h1>Anmeldung erfolgreich</h1></font>";
	echo "<br />";
	echo "Falls Sie nicht automatisch weitergeleitet benutzen sie bitte diesen Link <a href=\"index.php\">zur&uuml;ck</a>";
	echo "<meta http-equiv=\"refresh\" content=\"5; URL=http://localhost/michi/imperium_romanum/\">";

	
}
elseif(empty($_SESSION["anmeldung_bestaetigung"]))
{
	echo "<center><font color=\"red\"><h1>Passwort oder Name sind falsch</h1></font>";
	echo "<br />";
	include'anmeldeformular.php';
}
?>
</body>
</html>



Bitte helft mir ich hab echt keine ahnung was ich falsch mache

Und danke für die zeit die i hr euch genommen habt meinen ewig langen beitrag durchzulesen:-(
 
Zuletzt bearbeitet:
session_start() muss als eine der ersten Funktionen ausgeführt werden, da dieser Befehl HTTP-Header an den Client (Browser) sendet:

http://de.php.net/manual/de/function.session-start.php

Insbesondere die Anmerkungen weiter unten sind sinnvoll für dich.

Das bedeutet, das in der anmeldeformular.php keine Session gestartet werden kann, weil bereits Output an den Client gesendet wurde (HTML weiter oben).

Du hast nun folgende Möglichkeiten:

1. session_start() direkt in die erste Zeile schieben
2. Mit ob_start() und friends arbeiten.

Grüße
 
ich hab session_start(); jetzt ganz oben hingemacht noch vor der dokumentbeschreibung und es geht leider immer noch nicht
 
In beiden Dateien?

Schalte auch mal das error_reporting und die Anzeige von Fehlern ein:

PHP:
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

Das _vor_ session_start() setzen.

Grüße
 
werd ich gleich heute abend versuchen wenn ich wieder zuhause bin.
mal schauen was da raus kommt den befehl kannte ich noch nicht.
und ja, ich habs in beiden dateien ganz oben
 
Mach die Weiterleitung auf deiner Seite mal mit der Funktion
PHP:
<?php
Header("Location: seite.php");
?>

Darauf achten, dass vor dem Aufruf nichts ausgegeben wird!!

Grüße,

maeg
 
hmm das könnte klappen werd ich auch heute abend mal versuchen danke für den tipp

so ich habs jetzt mal etwas unschön mit ner javscript umleitung gelöst
 
Zuletzt bearbeitet:
Zurück