HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - login 'script'

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

login 'script'

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   PHP
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
vampire



Anmeldungsdatum: 29.12.2006
Beiträge: 1

BeitragVerfasst am: 29.12.2006 11:50:26    Titel: login 'script' Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Simon
Häufiger Poster


Anmeldungsdatum: 03.05.2005
Beiträge: 195
Wohnort: Schweiz

BeitragVerfasst am: 30.12.2006 18:28:54    Titel: Antworten mit Zitat

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 Wink )
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
mercutio



Anmeldungsdatum: 04.01.2007
Beiträge: 1

BeitragVerfasst am: 04.01.2007 23:15:41    Titel: Antworten mit Zitat

Vielleicht solltest du das Passwort auch mit md5 verschlüsseln Smile
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
Benutzer-Profile anzeigen Private Nachricht senden
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 08.01.2007 10:53:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Simon
Häufiger Poster


Anmeldungsdatum: 03.05.2005
Beiträge: 195
Wohnort: Schweiz

BeitragVerfasst am: 08.01.2007 10:59:22    Titel: Antworten mit Zitat

Ohne viel zu sagen: War das nicht das, was ich geschrieben habe?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 08.01.2007 11:01:45    Titel: Antworten mit Zitat

^^ 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   PHP
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.