2016-04-18 8 views
0

私はPHPログインを作成しています。以前は動作していましたが、ユーザー名の大文字と小文字を区別しないようにしました。 iestrtolower()。大文字と小文字を区別しないようにするために追加したすべてのものを削除しました。ページに表示されるのは「ユーザー名とパスワードを入力してください」です。私はポップアップしてログインを破棄するはずのhtmlファイルを持っています。私はまた、mysqliのを接続するための最新の方法があり、SQLインジェクションにPHPログインの問題。不明

を防ぐために、あなたのポストの値の周りmysql_real_escape_string()を入れている

<?php 

session_start(); 

$username = $_POST["username"]; 
$password = $_POST["password"]; 

if ($username&&$password) 
{ 
    $connect = mysql_connect("","","") or die("No Database"); 
    mysql_select_db("") or die("Couldn't find database"); 

    $query = mysql_query("SELECT * FROM login WHERE  username='$username'"); 

$numrows = mysql_num_rows($query); 

if($numrows !=0) 

{ 
    while ($row = mysql_fetch_assoc($query)) 
    { 
     $dbusername = $row['username']; 
     $dbpassword = $row['password']; 
    } 
    if ($username==$dbusername&&$password==$dbpassword) 
    { 
     echo "Login succesful. <a href='/memberarea.php'>Members</a>"; 
     $_session['username']=$dbusername; 

    } 
    else 
     echo "Incorrect Password"; 
} 

else 
    die("Username does not exist"); 
} 
else 
    die("Please enter a username and password."); 

?> 
+0

あなたはワイドに開いている[** SQLインジェクション**](https://www.owasp.org/index.php/SQL_Injection)。また、コードにスペースを入れてください。 '$ username && $ password'は読みにくいです。 –

+0

これはページにのみ表示されるエラーが表示されますか? http://prntscr.com/atldqb –

+0

また、ユーザ名とパスワードを受け入れる前にこのページを投稿する必要があります。表示されるように、 '$ _POST'パラメータを設定しないというエラーがあります。 (ああ、セッションクッキーにユーザー名を格納するのは*とても悪い考えです!) –

答えて

0

:ここにコードがある(私は、MySQLでのパーソナルデータベースの情報接続面積を取り出しました)しかし、MySQLデータベースに私はあなたのコードに追加していない:

session_start(); 

$username = mysql_real_escape_string($_POST["username"]); 
$password = mysql_real_escape_string($_POST["password"]); 

if ($username&&$password) 
{ 
    $connect = mysql_connect("","","") or die("No Database"); 
    mysql_select_db("") or die("Couldn't find database"); 

    $query = mysql_query("SELECT * FROM login"); 

    while ($row = mysql_fetch_assoc($query)) 
    { 
     $dbusername = $row['username']; 
     $dbpassword = $row['password']; 

    if ($username == $dbusername && $password == $dbpassword) 
    { 
     echo "Login succesful. <a href='/memberarea.php'>Members</a>"; 
     $_session['username']=$dbusername; 

    } 
    } 

    else { 
     echo "Incorrect Password"; 
    } 
} 
+0

なぜwhere句なしのクエリを使用しましたか?データが1000個あり、一致が最後のものである場合、この "while"ループは999回実行されますが無用です。 –