2016-11-07 8 views
0

私は暗号化機能を使用しているので、このコードではログインできません。パスワードチェックにログインする際にパスワードフォームデータベースのエンコードに問題があり、パスワードと一致すると入力されました:パスワードで暗号化されたパスワードでログインします

$username = $_POST['username']; 
$password = $_POST['password']; 
$check_error=0; 
include ('connect-db.php'); 

$username = mysql_real_escape_string($username); 
$password = crypt($password, '$2a$07$usesomesillystringforsalt$'); 
if (crypt($user_input, $digest) == $digest) 
if ($check_error != 1){  
    $result = mysql_query ("SELECT * FROM user WHERE username = '$username' AND password = '$password'"); 

    $count = mysql_num_rows($result); 
    if($count > 0){ 

     session_start(); 
     $_SESSION['username'] = $_POST['username']; 
     $_SESSION['password'] = $_POST['password']; 

     echo "login<br /><br />"; 
    } 
    else{ 
     echo "not login!<br />"; 
    } 
} 
+3

ワウ...ここには非常に多くのものがあります。なぜあなたは$ _SESSIONにパスワードを入れていますか? '$ user_input'とは何ですか?' $ digest'は何ですか?それらの変数のどれもがあなたのコードに含まれていないからです。また、 'if(crypt($ user_input、$ digest)== $ digest)'のあとに開始キャレットがありません。また、あなたはそれをマッチさせる前に '$ password'でcrypt()を実行しているようですが、これは間違っています。あなたは 'if(crypt($ _ POST ['password']、$ valuefromdatabase))=== $ valuefromdatabase)' – junkfoodjunkie

+5

のようなものを実行します。1.古いAPIを使用していますので、mysqli_またはPDO準備されたステートメント**で**。セッション中にパスワードを保存することは悪い考えです。 – Qirel

+2

**警告**:あなた自身のアクセスコントロールレイヤーを書くことは容易ではなく、間違ったことをする機会がたくさんあります。 [Laravel](http://laravel.com/)のような最新の[開発フレームワーク](http://codegeekz.com/best-php-frameworks-for-developers/)がある場合は、独自の認証システムを作成しないでください。強力な[認証システム](https://laravel.com/docs/5.2/authentication)が組み込まれています。絶対に[推奨されるセキュリティのベストプラクティス](http://www.phptherightway.com/#security)に従ってください。パスワードはプレーンテキスト**として保存しないでください。 – tadman

答えて

0

私はそれを作った!

$username = $_POST['username']; 
$password = $_POST['password']; 
include ('connect-db.php'); 

$username = mysql_real_escape_string($username); 
$hash= 'atvfbgirejgtjrgjdfpgkjdpfkjgdSTYjj!'; 
$check=password_verify($password,$hash); 
$load=mysql_query ("SELECT * FROM users WHERE username='$username' AND password='$password'"); 

if($load){ 

    session_start(); 
    $_COOKIE['username'] = $_POST['username']; 
    $_COOKIE['password'] = $_POST['password']; 

    echo "You Are Login<br /><br />" 

} 
else{ 

    echo "Wrong Information! Not Login<br />"; 
} 

mysql_close(); 
+0

ウェブサイト上の私のパスワードは通常 '\' OR 1 = 1または1 = \ '2'です – Martin

+1

上記のコメントを読まれましたか? –

関連する問題