私は暗号化機能を使用しているので、このコードではログインできません。パスワードチェックにログインする際にパスワードフォームデータベースのエンコードに問題があり、パスワードと一致すると入力されました:パスワードで暗号化されたパスワードでログインします
$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 />";
}
}
ワウ...ここには非常に多くのものがあります。なぜあなたは$ _SESSIONにパスワードを入れていますか? '$ user_input'とは何ですか?' $ digest'は何ですか?それらの変数のどれもがあなたのコードに含まれていないからです。また、 'if(crypt($ user_input、$ digest)== $ digest)'のあとに開始キャレットがありません。また、あなたはそれをマッチさせる前に '$ password'でcrypt()を実行しているようですが、これは間違っています。あなたは 'if(crypt($ _ POST ['password']、$ valuefromdatabase))=== $ valuefromdatabase)' – junkfoodjunkie
のようなものを実行します。1.古いAPIを使用していますので、mysqli_またはPDO準備されたステートメント**で**。セッション中にパスワードを保存することは悪い考えです。 – Qirel
**警告**:あなた自身のアクセスコントロールレイヤーを書くことは容易ではなく、間違ったことをする機会がたくさんあります。 [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