backbone: problem mit login

hi folks,

bin gerade wieder beim proggen und stehe vor einem, mir nicht verständlichen problem. ich hab hier nen keinen login geschrieben. er soll die daten aus der datenbank mit der eingabe vergleichen und wenn alles okay ist dann "alles happy" schreiben und wenn nicht halt was anderes. aber das funktioniert irgendwie nicht und ich verstehe nicht warum. bin schon mehrfach alles durchgegangen aber ich weiss net was falsch ist. könnt ihr mir vielleicht mal helfen?

hier der quellcode:

schonmal thx im voraus

<?php

$db_host  = "localhost";
$db_username = "alloa";
$db_password = "hawai";
$db_name  = "use message";

$connect = mysql_connect($db_host,$db_username,$db_password);

if(!mysql_query($db_name,$connect)) die ("<html><head><title>Verbindungsfehler</title><body><p style="color:red;"><b>Connection faild / Verbindung fehlgeschlagen</b></p></body></html>");
else{

if($submit)  { $login = "SELECT * FROM login WHERE username='$username_in'";
     $login_send = mysql_query($login);

$login_data = mysql_fetch_array($login_send);
     $aLogin=$login_data[1];
     $aPassword=$login_data[2];

if($username_in == $aLogin && $pwd_in == $aPassword) {echo"alles happy! $login_data[1],$login_data[2]";}
     else {echo"none login"; }
     }
else {
echo"
<html>
<head>
<title>login</title>
</head>
<body>
<table border="1">
<form method="post" action="$PHP_SELF">
<tr><td><p>username:&nbsp<input type="text" name="name" value="$username_in" size="15"></p></td></tr>
<tr><td><p>password:&nbsp<input type="text" name="pw" value="$pwd_in" size="15"></p></td></tr>
<tr><td width="200" align="center"><input type="submit" name="submit" value="submit"></td></tr>
</form>
</table>
</body>
</html>";}}
?>

  1. Moin,

    wenn mich nicht alles täuscht ist das ein Fehler in deinem HTML. Du nutzt im Script $username_in und $pw_in. Die eingabefelder heissen aber "name" und "pw". value gibt nur an, was als Voreingabewert schon in dem textfeld stehen soll. "name" ist das ausschlaggebende, wonach die Variablen benannt werden. Du musst also entweder die variablen im Script oder die Namen der felder ändern.
    Noch ne kleine Anmerkung zu deinem code: Du kannst auch statt des echo-Befehls den PHP Block einfach beenden und später wieder anfangen... Also so:

    phpcode....
    ?>
    <html>
    <head>
    <title>login</title>
    </head>
    <body>
    <table border="1">
    <form method="post" action="<?php echo $PHP_SELF ?>">
    <tr><td><p>username:&nbsp<input type="text" name="name" value="<?php echo $username_in ?>" size="15"></p></td></tr>
    <tr><td><p>password:&nbsp<input type="text" name="pw" value="<?php echo $pwd_in ?>" size="15"></p></td></tr>
    <tr><td width="200" align="center"><input type="submit" name="submit" value="submit"></td></tr>
    </form>
    </table>
    </body>
    </html>
    <?php
    }}
    ?>

    Damit kannst du dir das escapen der ganzen Anführungszeichen sparen und ausserdem die Seite bei bedarf in einem HTML-Editor bearbeiten. Du musst nur darauf achten, dass du PHP wieder anfängst, wenn du PHP-Code nutzen willst. So zumbeispiel bei dem PHP_SELF. Da musst du PHP wieder starteb, nen echo-Befehl davor setzen und danach wieder beenden. Selbes giölt für die ganzen "value='$bla'", die du nutzt.

    grüsse

    Marc

  2. Ich kann gerade deinen ganzen if Schleifen nicht folgen, aber ich würde statt dem Code:

    if($username_in == $aLogin && $pwd_in == $aPassword) {echo"alles happy! $login_data[1],$login_data[2]";}
         else {echo"none login"; }

    eher das nehmen:

    if(($username_in == $aLogin) && ($pwd_in == $aPassword)) {echo "alles happy! ".$login_data[1].", ".$login_data[2];}
         else {echo"none login"; }

    Sonst würde ich oben im Query Alle Strings die du einbindest, so aufführen:

    $query = "lalala '".$string."' lalala";

    Wenn du mysql_fetch_array benutzt, kannst du auf die Spalten auch per

    $login_data[name]
    $login_data[pass]

    zugreifen. Abhängig davon, wie deine Spalten in der DB heißen.

    Vergiss nicht, dass der Array von 0 nummeriert wird.
    Der erste Wert ist demnach $login_data[0].

    M.f.G