PHP einfache Passwortabfrage

Jinuga1

Newbie
Registriert
Apr. 2016
Beiträge
6
Hallo Leute,

Wir haben in der Schule vor Kurzem ein wenig mit PHP begonnen und als Hausübung die Aufgabe bekommen einen sehr simplen Log In-Screen zu erstellen und eine einfache in PHP geschriebene Auswertung, bzw Abfrage.
Mein Code sieht folgendermaßen aus: (HTML)
HTML:
<!DOCTYPE html><html>
<head><title>Log In</title></head>
<body>
	<p>Geben Sie Name und Passwort ein!</p>
	<form action="login.php" type="post">
	<p><input name="usr"><b> Username</p>
	<p><input name="pwd"> Passwort</b></p>
	<p><button type="submit">Log In</button>
	
</form>
</body>
</html>

Und die Auswertung so:

PHP:
<!DOCTYPE html><html><head><meta charset="utf-8"></head><body>
<?php

	if ($_POST["usr"] == "Name" && $_POST["pwd"] == "bingo")
	echo "Du bist eingeloggt!";
	
	else
	echo "falsche Zugangsdaten!";

?>
</body></html>
Leider funktioniert diese doch sehr simple Abfrage nicht (Notice: Undefined index: usr in C:\xampp\htdocs\einstieg\login.php on line 3), was verursacht diese Fehlermeldung und wie behebe ich sie?
MfG
 
Soll man das ohne einer Datenbank machen?

Habe hier noch eine alte Datei von mir:


Kannst vielleicht etwas damit anfgangen
PHP:
$username  = $_POST['username'];
$password= $_POST["password"];
include('zugriff.inc');
$connection = @mysql_connect($host,$user,$pwd)
or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); 
mysql_select_db($db)
or die ("Datenbank konnte nicht ausgewählt werden"); 
$query = "SELECT password FROM account WHERE username = '$username'";
$result = mysql_query($query)
or die ("Daten konnten nicht gefunden werden!");
$datensatz= mysql_fetch_object($result);
if($datensatz->password <> $password) 
{ 
echo "Benutzername und/oder Passwort waren falsch."; 
} 
else
{ 
$_SESSION['Eingeloggt']= $username;
 
Es soll sehr einfach gehalten werden, und ohne MySQL :)
Würde nur gerne wissen, was an meinem Code falsch ist.
 
Ich hab zwar alles verdrängt aus meinen PHP-Zeiten aber sagt die Fehlermeldung denn nicht eindeutig das Du usr benutzt und das nicht deklariert ist?
 
Aber ist "usr" nicht im HTML- Code deklariert?

<p><input name="usr"><b> Username</p>
 
Ganz einfach... das POST ist leer weil du schlichtweg immer die Prüfung machst, bei jedem Aufruf der Seite, egal ob das Formular überhaupt gesendet wurde. Bau ein entsprechendes if(isset($_POST['submit..... drum rum und, das prüft ob das Form überhaupt gesendet wurde, dann ist die Meldung weg. Das kann man in 5 Sekunden inkl. Beispiel ergoogeln...
 
Bitte genau lesen! Notice != Fehler/Error. Wenn ein Fehler auftreten würde, würde dein Script abbrechen. Es ist einfach nur ne Notiz, dass der Key usr in $_POST nicht gesetzt ist. Stell also entweder das error_reporting() auf E_ALL & ~E_NOTICE oder mach ein isset( $_POST["usr"] ) vor die Nutzung dessen selbst.
 
Okay, hab den Fehler gefunden, war bloß Dummheit meinerseits :D
Hab das Formular falsch formuliert:
<form action="login.php" type="post">
Danke trotzdem :)
 
@Yuuri: Ja immer alle Warnings und Co ignorieren, so programmiert man sauber Skriptsprachen x) In jeder anderen Programmiersprache sind Indexfehler aus gutem Grund richtige Fehler.
 
Zurück
Oben