Malte: Problem mit Login

Hi, ich habe ein Problem, ich habe eine Seite, sie heißt login.php, aber die USer können sich nicht nur auf dieser Seite einoggen. Auf den anderen Seiten ist links im Menü ein login. Wenn man dann auf Login klick werden die Daten übertragen und auf der Seite login.php in die Felder eingetragen. Wenn ich mich dann einloggen will, heißt es immer flascher Login obwohl die Daten richtig sind.
wenn ich jetzt direkt auf die Seite login.php gehe klappt es auch nicht. wenn ich dann auf der Seite login.phpdies tages wegnehmen

value="<?php echo $username1 ?>"
value="<?php echo $password1 ?>"

dann klappt es, aber ich will sie nicht wegnehmen, könnt ihr mir helfen?

loginformular

  
   <?php  
if (isset ($_REQUEST["fehler"]))  
{  
  echo "<span style=\"color:red\">Ihr Logindaten sind Falsch.</span>";  
}  
?>  
<?php  
if(isset($_POST["login"]))  
{  
  $password1 = $_POST["password"];  
  $username1 = $_POST["username"];  
}  
else  
{  
 $username1 = "Username";  
 $password1 = "Password";  
}  
?>  
  <table class="login">  
   <tr>  
    <td width="180" background="layout/hgnavtop2.jpg">  
    <p align="center"><font face="Verdana" size="2" color="#001E73">Login</font>  
    </td>  
   </tr>  
   <tr>  
    <td width="180" bgcolor="#B1BDC7">  
          <form align="center" method="POST" action="check_user.php">  
    <p align="center">  
            <b>  
            <font color="#001E73" face="Verdana" size="2">Username:</font></b><br>  
            <input type="text" name="username" size="20" class="eingabe" value="<?php echo $username1 ?>" <font color="#FFFFFF" face="Verdana" size="2"><br>  
            </font><b><font color="#001E73" face="Verdana" size="2">Password:</font></b><br>  
            <input type="password" name="password" size="20" class="eingabe" value="<?php echo $password1 ?>"><br>  
            <font face="Verdana" size="2">&nbsp;</font><br>  
            <input type="submit" value="Login" name="B1" class="submit"></p>  
          </form>  
  

Und hier die Überprüfung:

  
<?php  
// Session starten  
session_start ();  
  
// Datenbankverbindung aufbauen  
$connectionid = mysql_connect ("localhost", "root", "");  
if (!mysql_select_db ("air-war", $connectionid))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  
  
$sql = "SELECT ".  
    "id ,username, password ".  
  "FROM ".  
    "user ".  
"WHERE ".  
    "(username like '".$_POST["username"]."') AND ".  
    "(password = '".$_POST["password"]."')";  
$result = mysql_query ($sql);  
  
  
  
if (mysql_num_rows ($result) > 0)  
{  
  // Benutzerdaten in ein Array auslesen.  
  $data = mysql_fetch_array ($result);  
  
  // Sessionvariablen erstellen und registrieren  
  $_SESSION["user_id"] = $data["id"];  
  $_SESSION["user_username"] = $data["username"];  
  $_SESSION["user_password"] = $data["password"];  
  
  header ("Location: user.php");  
}  
else  
{  
  header ("Location: login.php?fehler=1");  
}  
?>  

Danke für eure Hilfe

  1. Hi,

    $sql = "SELECT ".
        "id ,username, password ".
      "FROM ".
        "user ".
    "WHERE ".
        "(username like '".$_POST["username"]."') AND ".

    ^^^^^^

    "(password = '".$_POST["password"]."')";
    $result = mysql_query ($sql);

    Warum like? mach stattdessen = denn wenn jemand %a% als username
    eingiebt, und als pwd z.B. "password" und es giebt einen usernamen in
    dem ein a oder A vorkommt z.B. bei "Hans" und dieser hat das pwd
    "password" dann ist derjenige als dieser eingeloggt, das ist eine
    sicherheitslücke, meines Errachtens nach zumindest. AFAIK wird auch bei
    einem = zwischen groß und kleinschreibung nicht unterschieden.

    MfG

    1. hi,

      Warum like? mach stattdessen = denn wenn jemand %a% als username
      eingiebt, und als pwd z.B. "password" und es giebt einen usernamen in
      dem ein a oder A vorkommt z.B. bei "Hans" und dieser hat das pwd
      "password" dann ist derjenige als dieser eingeloggt, das ist eine
      sicherheitslücke

      die ist aber auch darüber hinaus noch vorhanden, weil benutzerparameter ungeprüft in die query übernommen werden, stichwort sql injection.

      mysql_(real_)escape_string() zu benutzen, wäre das mindeste.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi Malte,

    Kleine Anmerkung:

    echo "<span style="color:red">Ihr Logindaten sind Falsch.</span>";

    Das muss "Ihre" heißen und "Falsch" schreibt man klein ;-)

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    That's life - Es gibt im Leben[tm] keine Zurück-Taste. (Fabian Transchel)