ログインページ用のAPIを作成しています。パスワードは暗号化され、データベースに「$ 2y $ 08 $ NwjkR19Vafs28PuSmVrd6OIpL2ix2hUZn4cFwwJqseUQJZqJIXpia」という名前で保存されています。 、私は以下のコードを使用して試してみましたが、関係なく、私はここで入力したものをパスワードには有効なパスワードを示していないモバイルAPIで入力したパスワードを確認する方法
if (isset($postdata)) {
$request = json_decode($postdata);
$username = $request->username;
$password = $request->password;
if($username === NULL && $password === NULL) {
$json = array("status" => 0, "message" => "Please enter username and password");
}
else {
$select_sql = "SELECT `id`, `first_name`, `last_name`, `email`, `phone`, `username`, `password`, `created_on`, `active`, `activation_code` FROM `users` WHERE `email` = '".$username."' AND `password` = '".$password."';";
$select_query = mysqli_query($con,$select_sql);
$count = mysqli_num_rows($select_query);
$fetch_obj = mysqli_fetch_array($select_query,MYSQLI_BOTH);
if($count>0) {
$userId = $fetch_obj["id"];
$userEmail = $fetch_obj["email"];
$userDisplayName = $fetch_obj["first_name"]." ".$fetch_obj["last_name"];
$userPhone = $fetch_obj["phone"];
$userName = $fetch_obj["username"];
$userPass = $fetch_obj["password"];
$userCreatedOn = $fetch_obj["created_on"];
$userActive = $fetch_obj["active"];
$userActivationCode = $fetch_obj["activation_code"];
$userDetails = array("UserID" => "$userId", "UserDisplayName" => "$userDisplayName", "UserEmail" => "$userEmail", "UserPhone" => "$userPhone", "UserName" => "$userName", "UserPassword" => "$userPass", "UserCreatedOn" => "$userCreatedOn","UserActive" => "$userActive", "UserActivationCode" => "$userActivationCode");
$json = array("status" => 1, "message" => "Login success.", "UserDetails" => $userDetails);
}
else {
$json = array("status" => 0, "message" => "Invalid username or password.", "query" => $select_sql);
}
}
}
mysqli_close($con);
: は、私は、SQLクエリを使用して入力されたパスワードに対してこれを確認するにはどうすればよい、以下の私のAPIコードです
<?php
echo $password = "[email protected]";
echo $hash = password_hash($password, PASSWORD_BCRYPT);
if (password_verify($password, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>
入力したパスワードを確認してユーザーをホームページにリダイレクトする方法はありますか? 私を助けてください、過去2日からこれでつかまっています。事前に感謝します
パスワードの暗号化に使用した暗号方式は何ですか。 – ashanrupasinghe
**警告**:独自のアクセス制御レイヤーを作成するのは簡単ではなく、重大な誤りを犯す機会がたくさんあります。 [Laravel](http://laravel.com/)のような最新の[開発フレームワーク](http://codegeekz.com/best-php-frameworks-for-developers/)がある場合は、独自の認証システムを作成しないでください。強力な[認証システム](https://laravel.com/docs/5.4/authentication)が組み込まれています。 – tadman
**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'、' $ _GET'、**任意の**ユーザデータを直接クエリーに入れないでください。誰かがあなたのミスを悪用しようとすると非常に危険です。 – tadman