Einfaches Login Script klappt Denkfehler?
Hallo Liebe Profis
Ich habe wiedereinmal ein PHP Problem :D
und zwar möchte ich ein einfaches Login script schreiben Sicherheit ist hier irrelevant da es nur Netzintern betrieben wird.
Benutzer sollen sich anmelden mit Benuztername und Password und dann soll mittels einer "While / if" Bedingung das ganze geprüft werden.
Das Formular:
Das Login Script:
Folgendes Passiert: Password und Benutzername werden überprüft und sofern richtig auf "Herzlich Willkommen" verwiesen, soweit so gut!
Hänge ich an das IF aber noch eine "ELSE" dran wird selbst bei richtigen Zugangsdaten die ELSE schleifen ausgeführt!
Was mache ich also Falsch?! :D
Lieben Gruß
Benjamin
Ich habe wiedereinmal ein PHP Problem :D
und zwar möchte ich ein einfaches Login script schreiben Sicherheit ist hier irrelevant da es nur Netzintern betrieben wird.
Benutzer sollen sich anmelden mit Benuztername und Password und dann soll mittels einer "While / if" Bedingung das ganze geprüft werden.
Das Formular:
<form action="login.php" method="post">
<table>
<tr>
<td width="150">Benutzername</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Passwort</td>
<td><input type="text" name="password" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Login" /></td>
</tr>
</table>
</form>
Das Login Script:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
include("inc/connect.php");
$SQL = "SELECT * FROM users";
$result = mysql_query($SQL);
while($row = mysql_fetch_array($result))
{
if(($username == $row['username']) && ($password == $row['password']))
{
echo "Herzlich Willkommen";
}
}
?>
Folgendes Passiert: Password und Benutzername werden überprüft und sofern richtig auf "Herzlich Willkommen" verwiesen, soweit so gut!
Hänge ich an das IF aber noch eine "ELSE" dran wird selbst bei richtigen Zugangsdaten die ELSE schleifen ausgeführt!
Was mache ich also Falsch?! :D
Lieben Gruß
Benjamin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 185959
Url: https://administrator.de/forum/einfaches-login-script-klappt-denkfehler-185959.html
Ausgedruckt am: 26.04.2025 um 00:04 Uhr
6 Kommentare
Neuester Kommentar
if(($username == $row['username']) && ($password == $row['password']))
{
echo "Herzlich Willkommen";
}
}
{
echo "Herzlich Willkommen";
}
}
Der Fehler den du beobachtest ist ganz logisch, da du sicher mehr als einen User hast.
In deiner Schleife wird jeder User abgearbeitet der in der DB steht, wenn das Passwort und der Username matcht dann führt er dein "Herzlich Willkommen" aus, und beim nächsten User kommt dann alles in else {} dran.
Du solltest ggf. return verwenden, oder alles auf Mysql abschieben:
select * from users where username='$username' and password='$password';
lg aus Wien,
Stefan
Hoi,
müsstest du eig nicht $result anstatt $row benutzen, da du dein Ergebnis überprüfen willst?
Das hab ich mal vor einiger Zeit selbst geschrieben für ne kleine interne Anwendung bei uns. Vll hilft es dir ja weiter.
Gruß
Schlumpf
Edit: Okay sry verlesen $row passt ^^
müsstest du eig nicht $result anstatt $row benutzen, da du dein Ergebnis überprüfen willst?
<?php
include('../server/server.php');
$dbconnect = mssql_connect($SQL_Server, $SQL_User, $SQL_Pw);
mssql_select_db($SQL_db);
session_start();
$_SESSION["benutzername"] = $_POST["username"];
$_SESSION["passwort"] = $_POST["pw"];
$index_user = $_SESSION["benutzername"];
$pw = $_SESSION["passwort"];
$index_pw=md5($pw);
$query = mssql_query(
"Select Benutzername, Passwort From Benutzer Where
Benutzername = '$index_user' AND Passwort = '$index_pw' AND flag='i.O'");
$result = mssql_fetch_array($query, MSSQL_ASSOC);
if (($index_user = "$result[Benutzername]") AND
($index_pw = "$result[Passwort]")) {
mssql_close($dbconnect);
header("Location: liste.php?sort=IP&dir=asc");
} else {
header("Location: ../error/error.php?login=error&eeepc=&anlegen=");
mssql_close($dbconnect);
}
?>
Das hab ich mal vor einiger Zeit selbst geschrieben für ne kleine interne Anwendung bei uns. Vll hilft es dir ja weiter.
Gruß
Schlumpf
Edit: Okay sry verlesen $row passt ^^
müsstest du eig nicht $result anstatt $row benutzen, da du dein Ergebnis überprüfen willst?
Nein Row ist schon korrekt da er ja
$result = mysql_query($SQL);
while($row = mysql_fetch_array($result))
verwendet, $row ist eine ableitung von $result, welche nur die aktuelle Zeile enthält.
Und hier ist die Lösung der Frage:
<?php
$found = 0;
$username = $_POST["username"];
$password = $_POST["password"];
include("inc/connect.php");
$SQL="SELECT * FROM users";
$result = mysql_query($SQL);
while($row = mysql_fetch_array($result))
{
if($username == $row["username"] && $password == $row["password"])
$found = 1;
}
if($found == "1")
{
echo "Herzlich Willkommen!";
} else {
echo "Weg da!";
}
?>