• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wo ist der Fehler???

HTMLler

Neues Mitglied
Hallo!

Ich bin dabei ein Login-Formular zu erstellen. index.php / check.php / seite.php
wenn ich im Browser localhost/xyz/seite.php eingebe, bin ich auf der Seite seite.php. Das darf aber nicht passieren. Zusätzlich kommt dann noch die Fehlermeldung:
Notice: Undefined index: bname in C:\xampp\htdocs\Login\dritterVersuch\seite.php on line 5

Notice: Undefined index: kwort in C:\xampp\htdocs\Login\dritterVersuch\seite.php on line 6

Wäre sehr nett, wenn ihr mir helfen würdet.
HTMLler

Hier ist der Code:
index.php:
<?php
session_start()


?>


<!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" xml:lang="de" lang="de">


<head>
<title>index.php</title>




</head>


<body>
<form action="check.php" method="POST">
Benutzername: <input type="text" name="bname"/><br />
Kennwort: <input type="password" name="kwort"/><br />
<input type="submit" value="OK"/>
</form>


</body>
</html>


check.php:

<?php
session_start();




$bname = $_POST['bname'];
$kwort = $_POST['kwort'];


/*echo $bname;
echo $kwort;
*/


if($bname == "peter" and $kwort == "123")
{
echo "Sie sind eingeloggt";
$_SESSION['eingeloggt'] = TRUE;


}


else
{


header("location: index.php");
echo "Sie m&uuml;ssen sich einloggen!";
session_destroy();
}


if($_SESSION['eingeloggt'] = TRUE)
{
/*echo "Die SESSION ist TRUE";*/
}


if($_SESSION['eingeloggt'] != TRUE)
{
session_destroy();
header("location: index.php");
}






?>

seite.php:

<?php
session_start();




$bname = $_POST['bname'];
$kwort = $_POST['kwort'];


/*echo $bname;
echo $kwort;
*/


/*if($bname == "peter" and $kwort == "123")
{
echo "Sie sind eingeloggt";
$_SESSION['eingeloggt'] = TRUE;


}


else
{


header("location: index.php");
echo "Sie m&uuml;ssen sich einloggen!";
session_destroy();
}
*/


if($_SESSION['eingeloggt'] = TRUE)
{
/*echo "Die SESSION ist TRUE";*/
}


if($_SESSION['eingeloggt'] != true)
{
session_destroy();
header("location: index.php");
}






?>
 
Ich sehe ich einige Fehler im Quellcode. Beispiel:

PHP:
if($_SESSION['eingeloggt'] = TRUE)

Das ist kein Vergleich sondern eine Wertzuweisung. Korrekt wäre:

PHP:
if($_SESSION['eingeloggt'])

oder

PHP:
if($_SESSION['eingeloggt'] == true)

Außerdem:
PHP:
header("location: index.php");
echo "Sie m&uuml;ssen sich einloggen!";
session_destroy();

header wird eher ausgelöst als die anderen Zeilen angezeigt bzw. ausgeführt werden. Macht so keinen Sinn.

Und die Fehlermeldung die Du beim direkten Aufruf erhältst ist hierdurch verursacht:

PHP:
$bname = $_POST['bname'];
$kwort = $_POST['kwort'];

Da Du die Seite nicht per POST aufrufst, gibt es das POST-Array auch nicht. Das solltest Du prüfen, bevor Du auf irgendwas hiervon zugreifst.

PHP:
if( isset($_POST) ){ .. }

Und verwende bitte Code-Tags wenn Du hier Quellcode postest.
 
Zurück
Oben