OK、PHP 5.4 スクリプトと MySQL を使用して、パスワードで保護された Web ページを作成しようとしています。サンプルを実行すると、予期しない結果が得られました。
以下を使用してパスワードを作成しました。
$salt = "";
$salt.=substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",mt_rand(0,63), 1);
$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1);
$pw1 = crypt($pw,$salt);
$pw1 を MySQL データベースに保存しました。
次に、認証ページで db パスワードを取得し、フォームからのユーザー入力を使用してユーザーを検証し、次のように確認しました。
get $db_pw from database then...
if (crypt($user_password,$db_pw) == $db_pw) ... proceed
すべて正常に機能しましたが、パスワードよりも長い文字列を入力しても問題ありませんでした。例: パスワードが「stack」の場合、「stackoverflow」と入力すると OK になります。「stac」と入力すると、意図したとおりに停止します。
これについて検索してみましたが、同じようなものは見つかりませんでした。私は何を間違っていますか?