Vorheriges Thema: Nächstes Thema: |
Autor |
Nachricht |
vampire
Anmeldungsdatum: 29.12.2006 Beiträge: 1
|
Verfasst am: 29.12.2006 11:50:26 Titel: login 'script' |
|
|
Moin moin,
ich sitze seit momentan an einem login addon für ein redaktionssystem und weiss nicht wo der fehler liegt:
login.php:
Code: |
<form action="index.php?site=admin" method="post">
<table width="160px" valign="middle" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>username:</td>
</tr>
<tr>
<td><input type="text" name="uname"></td>
</tr>
<tr>
<td>password:</td>
</tr>
<tr>
<td><input type="password" name="pword"></td>
</tr>
<tr>
<td><input type="submit" value=".log in"></td>
</tr>
</table>
</form>
|
admin.php:
Code: |
<?
$lname = $_POST["uname"];
$pword = $_POST["pword"];
if (empty($lname) || empty($pword)) { include("fehler/login.php"); }
else {
$sql="SELECT * FROM user";
$erg=mysql_query($sql,$conn);
while(list($uid, $username, $loginname, $password)= mysql_fetch_row($erg)) {
if ($lname==$loginname) {
if ($password==$pword) { $status="logged"; }
else { $status="loginpwfehler"; }
}
else { $status="loginlnfehler"; }
}
}
echo $status;
?> |
Die Abfrage, ob username und passwort nen wert hat funktioniert, nur wenn es daran geht die werte zuvergleichen, ist irgentwo nen fehler.
wenn ich einen falschen usernamen eingebe, ist:
Code: |
$status=loginlnfehler |
wenn ich einen richtigen usernamen eingebe, ist:
Code: |
$status=loginlnfehler |
logisch gedacht geht er also garnet in die abfrage wegen dem password rein.
ich hoffe mir kann wer bei meinem problem helfen. |
|
Nach oben |
|
|
Simon Häufiger Poster
Anmeldungsdatum: 03.05.2005 Beiträge: 195 Wohnort: Schweiz
|
Verfasst am: 30.12.2006 18:28:54 Titel: |
|
|
Den Fehler seh ich nicht auf anhieb.
Aber ich wundere mich, wieso Du die ganze Tabelle ausliest und dann mühsam mit einer Whileschleife vergleichst.
Code: |
$sql="SELECT * FROM user";
$erg=mysql_query($sql,$conn);
while(list($uid, $username, $loginname, $password)= mysql_fetch_row($erg)) {
...
|
Wieso machst du es nicht so:
Code: |
$sql="SELECT * FROM user WHERE username = '$username' AND passwort = '$passwort'";
$erg=mysql_query($sql,$conn);
if(mysql_num_rows($erg) != 0) // mysql_num_rows gibt anzahl gefundene Einträge zurück
{
EINGELOGT
}
else
{
FALSCH
}
|
Spaltennamen etc müssen natürlich angepasst werden.
Sobald du eine ziemlich grosse Usertabelle hast, wird Dein Script um einiges träger, und so sparst du Zeit (und es ist erst noch einfacher ) |
|
Nach oben |
|
|
mercutio
Anmeldungsdatum: 04.01.2007 Beiträge: 1
|
Verfasst am: 04.01.2007 23:15:41 Titel: |
|
|
Vielleicht solltest du das Passwort auch mit md5 verschlüsseln
Nur mal so als Idee:
Code: |
SELECT * FROM user WHERE username = '$username' AND passwort = MD5('$passwort')
|
Dementsprechend müssten die Passwörter natürlich auch mit md5 in der Datenbank abgespeichert werden.
Code: |
$pwd_hash = md5($password);
$sql = "INSERT INTO user (name, nickname, email, password) VALUES ('".$name."', '".$nickname."', '".$email."', '".$pwd_hash."');";
@mysql_query($sql) OR die(mysql_error());
|
|
|
Nach oben |
|
|
Sir Quicksand Häufiger Poster
Anmeldungsdatum: 19.01.2005 Beiträge: 304 Wohnort: Hannover
|
Verfasst am: 08.01.2007 10:53:03 Titel: |
|
|
Der Hinweis mit md5 ist zwar nett, aber auch nicht die 100% Sicherheit.
Jetzt zur Frage: wo jetzt der mögliche Fehler ist, weiß ich auf die Schnelle auch nicht, jedoch ist Dein Script suboptimal. Du solltest gleich im SQL Statement nach PW und Login suchen:
$sql = "SELECT * FROM user WHERE `pw` = '". $_POST["pword"] ."' AND `login` = '". $_POST["uname"] ."'";
$erg=mysql_query($sql,$conn);
$anz=@mysql_num_rows($this->erg);
if($anz == 1)
{
echo "login geschafft";
}
else if ($anz == 0)
{
echo "Name oder PW sind falsch";
}
else
{
echo "mehr als einen Datensatz gefunden, Admin benachrichtigen";
}
ACHTUNG
Wenn Du so wie jetzt vorgeschlagen arbeitest, mußt Du die Eingaben schön säubern, damit Dir nicht einer beim Namen zum beispiel "wurst' OR '1' = '1" unterschiebt. Zum Beispiel mit $name = addslashes($_POST["uname"]); |
|
Nach oben |
|
|
Simon Häufiger Poster
Anmeldungsdatum: 03.05.2005 Beiträge: 195 Wohnort: Schweiz
|
Verfasst am: 08.01.2007 10:59:22 Titel: |
|
|
Ohne viel zu sagen: War das nicht das, was ich geschrieben habe? |
|
Nach oben |
|
|
Sir Quicksand Häufiger Poster
Anmeldungsdatum: 19.01.2005 Beiträge: 304 Wohnort: Hannover
|
Verfasst am: 08.01.2007 11:01:45 Titel: |
|
|
^^ könnte sein, habe Deinen Eintrag nicht gelesen, aber jetzt wo Du es sagst . . . . .
Trotzdem habe ich noch den einen oder anderen weiteren Tipp gegeben, so. ^^ |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|
|