2017-04-24 3 views
0

Ich benutze XAMPP für mySQL und Apache Webserver. Die Datenbank scheint verbunden zu sein, aber wenn ich versuche, mich einzuloggen, nachdem ich einen Eintrag für Benutzername und Passwort auf der Datenbank erstellt habe. Es heißt, melden Sie sich nicht an.Anmelden in MySQL-Datenbank mit PHP?

<form action ="process.php" method ="POST"> 
    <p><label>Username:</label> 
     <input type="text" id="user" name="username"/>   
    </p> 
    <p><label>PassWord</label> 
     <input type="password" id="pass" name="password"/>   
    </p> 
    <p> 
     <input type="submit" id="btn" value="Login"/> 
    </p> 
</form> 

Das ist mein process.php

<body> 
    <?php 
    $username =$_POST['username']; 
    $password =$_POST['password']; 
    $connectionString = mysqli_connect('localhost', 'root','', 'a7'); 
    $result=mysqli_query($connectionString, "select * from table1 where 
    username = '$username' and password ='$password'") or die("failed to 
    find db ".mysql_error()); 

    if($row['username']==$username && $row['password']==$password){ 
     echo "success welcome ".$row['username']; 
    } 

    else{ 
     echo "failed login"; 
    } 
?> 

Es kommt immer:

Hinweis: Nicht definierte Variable: Zeile in C: \ xampp \ htdocs \ assignment7b \ process.php on line 30 fehlgeschlagen Login

Zeile 30: if($row['username']==$username && $row['password']==$password)

+0

Sie versuchen, auf ein Array namens $ Zeile zuzugreifen, das Sie nicht speziell erstellt haben. Normalerweise würde man jedes $ Ergebnis als $ Zeile durchlaufen, um auf die zurückgegebenen Daten zuzugreifen. Außerdem verwenden Sie mysql_error, wenn Sie hauptsächlich die Bibliothek mysqli verwenden. Sie können diese Bibliotheken nicht mischen und abgleichen. – cteski

+0

*** Bitte [stoppen Sie die Verwendung von mysql_ * 'Funktionen] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). *** [Diese Erweiterungen ] (http://php.net/manual/en/migration70.removed-exts-sapis.php) wurden in PHP 7 entfernt. Erfahren Sie mehr über [prepared] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen für [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) und [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared- Statements.php) und erwäge die Verwendung von PDO, [es ist wirklich ziemlich einfach] (http://jayblanchard.net/demystifying_php_pdo.html). –

+0

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php) ***. Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

Antwort

0

Sie verwenden die $row Variable, die vorher nicht deklariert ist. Ihre MySQL-Abfrageergebnisse befinden sich in der Variablen $result. Sie müssen diese Ergebnisse in eine $row Variable holen zuerst, dann über sie iterieren und für Ihre Benutzername und Passwort wie folgt überprüfen:

while($row = mysqli_fetch_assoc($result)) { 

    if($row['username'] == $username && $row['password'] == $password){ 
    echo "success welcome ".$row['username']; 
    }else{ 
    echo "failed login"; 
    } 
} 

Im Grunde ist dies innerhalb der while-Schleife gewickelt einfach Ihr ursprünglicher Code ist. Wenn Sie nur die While-Schleife um diesen Code herum kopieren, sollte alles funktionieren.

+0

Danke. Wow, ich war nicht so einfach. Ich habe versucht, es für die letzten 3 Stunden zu beheben! – FlyR