私は、mysql の下で完全に正常に動作する単純なログイン スクリプトを持っていました。現在、それを mysqli に移植しようとしていますが、動作させることができません。
login($username, $password) {
$link = mysqli_connect('localhost', 'user', 'pw', 'db');
$user_id = user_id_from_username($username);
$username = sanitize($username);
$password = md5($password);
$loginquery = "SELECT COUNT(DISTINCT user_id) FROM users WHERE username='$username' AND password = '$password'";
$count = mysqli_query($link, $loginqueryquery);
$countarray = mysqli_fetch_array($count, MYSQLI_BOTH);
$countarrayres = $countarray[0];
if($countarrayres == 1) {return true ;} else {return false ;}
}
テストページですべて試してみました。$username = test、$password = test を設定しました。これは、データベースの「テスト」ユーザーと一致します。これは、印刷時に $countarrayres = 1 を生成します。pwまたはユーザー名のいずれかを存在しないものに変更すると、同じように0の出力が得られるため、機能することが示唆されますが、困惑しています。
このスクリプトが動作するページは次のとおりです。
$login = login($username, $password);
if( $login === false ) { "wrong password/username bro"; } else { //log in based on session user_id;}
false を true に変更しようとしましたが、「パスワード/ユーザー名が間違っています」というメッセージが引き続き表示されるため、おそらく関数よりも大きな問題があることを示唆していますか? 変更されたのは mysql -> mysqli 関数だけであり、他には何もないため、ここで何が起こっているのかについて私は腹を立てています。何か案は?
編集: $test はタイプミスでした。実際には私のスクリプトでは $login です。ごめんなさい。