2016-05-03 22 views
-2

は私がパスワードを投稿し、簡単なログインスクリプトを持って仕事してデータベースPHP:セッションベースのログインスクリプトは

session_start(); 
include 'core/config.php'; 
include 'core/db.php'; 
$checkPWD = $DB_CON -> query('SELECT * FROM users'); 
$checkPWD->execute(); 
$pwd = $checkPWD->fetchAll(); 
if($_POST['password']) { 
    $md5pwd = md5($_POST['password']); 
    if($md5pwd == $pwd[2]) { 
     $_SESSION['login'] = 'true'; 
     $_GET['page'] = 'dashboard'; 
    } else { 
     $_GET['error'] = 'true'; 
    } 
} 

この出口でcorrispondenceをチェックして、$ _GET [「エラーは」]に設定され持っていないだろう本当。 パスワードはデータベースのmd5に保存されます。

どうもありがとう

+0

エラーは何ですか? – Mohini

+0

パスワードが正しい場合でも、スクリプトはelseを終了して$ _GET ['error'] = 'true'を取得します – andreaem

+1

このスクリプトは大変です。あなたはusersテーブル全体を選択していますか?そして、あなたはMD5のパスワードを入力します(これは[NOT SECURE](http://security.stackexchange.com/questions/52461/how-weak-is-md5-as-a-password-hashing-function)です)。あなたのデータのループもありません。 [password_hashへの切り替えを検討する](http://stackoverflow.com/questions/14992367/using-php-5-5s-password-hash-and-verify-function-am-i-doing-it-right) – Machavity

答えて

1

あなたはあなたにそれを行う必要があります照会:

$md5pwd = md5($_POST['password']); 

$checkPWD = $DB_CON->query("SELECT * FROM users WHERE password = '{$md5pwd}' LIMIT 1"); 
$pwd = $checkPWD->fetchAll(); 

if ($pwd) { 
    // Has find someone 
} else { 
    // Hasn't find no one 
} 
+0

コードを変更しましたが、結果は同じです、それは任意のセッション値を格納しません – andreaem

+0

彼は、表。だから、これが最初のレコードと一致しない場合は、 – Machavity

+0

私はそれを変更しました。ちょうど2番目の行が正しいことを知っていると思っただけです – Grommy

関連する問題