2017-02-27 7 views
-2

自分のウェブサイトのパスワードをリセットする機能を作成しようとしています。既に登録されているメールを挿入してランダムなOTPを生成し、PHPを使ってmysqlの特定の行の特定の列を更新していますか?

id firstname lastname username email resetpassword 
1 name  last  user  email OTP 
などのユーザーの詳細と同じ列に保存されます

これは私のコードですが、動作しません。私はこれをしようとしています

<?php 
require 'dbh.php'; 
session_start(); 

$random = mt_rand(1000,1000000); 

$email = $_POST['email']; 

$sql = "SELECT Email FROM registeredusers WHERE Email='$email'"; 
$result = mysqli_query($connection,$sql); 
$emailCheck = mysqli_num_rows($result); 

if (empty($email)) 
{ 
    echo "please fill out all the fields"; 
} 

else{ 

    $result = mysqli_query($connection,$sql); 
    $sql = "UPDATE registeredusers SET ResetPassword='$random' WHERE Email='$email'"; 
Header("Location: submitOTP.php"); 
} 

?> 

ので、フォームでは、SQLコードassigne firtsと後

$sql = "UPDATE registeredusers SET ResetPassword='$random' WHERE Email='$email'"; 
$result = mysqli_query($connection,$sql); 

がそうでなければあなたは、単に繰り返しクエリを実行する必要があります。この

<form action="resetPassword.php" method="POST"> 

<input type="text" value="email" name="email"></input> 
<input type="submit" value="submit"></input> 

</form> 
+3

[Little Bobby](http://bobby-tables.com/)は*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。 ://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)*** [prepared]について学ぶ(http://en.wikipedia.org/wiki/Prepared_statement) [MySQLi]に関する記述(http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! [それを信じていない?](http://stackoverflow.com/q/38297105/1011527) –

答えて

1

ようになります前の(選択)クエリ..

注意してくださいSQLインジェクションを避ける準備されたクエリとバインディングのパラメータを見てください

関連する問題