2012-03-26 150 views
0

に送信してください。私は、ユーザーが彼/彼女のセキュリティ質問を更新することができるフォームを持っており、また、変更を進めるためにユーザーが彼/彼女の参照番号を入力することを要求します。PHPがパスワードが一致するかどうかを確認し、一致する場合はそのデータを

次のようにフォームの私のコードは次のとおりです。

<?php 
$secret_question = mysql_real_escape_string($_REQUEST['secret_question']); 
$secret_anwser = mysql_real_escape_string($_REQUEST['secret_anwser']); 

$sql= "UPDATE public SET secret_question = '$secret_question', secret_anwser = '$secret_anwser' WHERE active = 'activated' AND ni = '". $_SESSION['ni']."'"; 

if (!mysql_query($sql)) 
    { 
     die('Error: ' . mysql_error()); 
    } 
    else 
    { 
     echo '<hr /><h3 align="center">Security Question Has Been Updated</h3><hr />'; 

    } 
?> 

私はそれがいるかどうかを確認できるように、それをコーディングする方法を知っているいけないものを次のように

<form action="securityupdated.php" method="post"> 

<table width="80%" border="0"> 
    <tr> 
    <td><label for="secret_question">Secret Question</label></td> 
    <td><span id="spryselect1"> 
     <select name="secret_question" id="secret_question"> 
     <option selected="selected">Please Select Your Secret Question</option> 
     <option id="secret_question" value="What Is Your Mothers Maiden Name?">What Is Your Mothers Maiden Name</option> 
     <option id="secret_question" value="What Was The Name Of Your First Pet?">What Was The Name Of Your First Pet</option> 
     <option id="secret_question" value="What Was Your First Car?">What Was Your First Car</option> 
     <option id="secret_question" value="What Is Your Favourite Colour?">What Is Your Favourite Colour</option> 
     </select> 
     <span class="selectRequiredMsg">*</span></span></td> 
    </tr> 
    <tr> 
    <td><br /><label for="secret_anwser">Your Anwser</label></td> 
    <td><br /><span id="sprytextfield1"> 
     <input type="text" name="secret_anwser" id="secret_anwser" /> 
     <span class="textfieldRequiredMsg">*</span></span></td> 
    </tr> 
    <tr> 
    <td><br /><label for="password">Your Reference</label> 
</td> 
    <td><br /> 
     <span id="sprytextfield2"> 
     <input type="text" name="ref" id="ref" /> 
     <span class="textfieldRequiredMsg">*</span></span></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td><br /><input name="" type="submit" value="Update" /></td> 
    </tr> 
</table> 
</form> 

私のPHPスクリプトがありますユーザーが入力したrefが自分のデータベースのrefフィールドと一致するかどうかを確認し、そうであれば更新を続行し、そうでなければ再度パスワードを入力する必要がありますか?

答えて

0

私は「セキュリティ上の疑問」を信じていませんが、誰かがこの点に遭遇した場合、実際のユーザーがパスワードの復元を要求するのをブロックする可能性があるため、それを使用しています。だから、うん、(新しいパスワードフィールドを追加します)パスワードを取得(?私はそれがSHA1ハッシュであると思います)と入力するどんなユーザーにそれを比較するためにmysql_fetch_rowを使用

HTML:

<tr> 
    <td><label for="password_check">Your password</label></td> 
    <td><input type="text" name="password_check" id="password_check" /></td> 
    </tr> 

とPHP:

$result = mysql_query("SELECT `password` FROM public WHERE ni = '". $_SESSION['ni']."'"); 
if (!$result) { 
    echo 'Could not run query: ' . mysql_error(); 
    exit; 
} 
$row = mysql_fetch_row($result); 

if(strlen($row[0])>0 && $row[0]==sha1($_POST['password_check'])){ 

.. your existing update code goes here 
} 
フォームの
+0

こんにちは、おかげでいますが、心をいけない場合、私は試合をチェックして、ユーザーのセキュリティ保護用の質問を更新する方法を知らないと、あなたは私のためにそれをコーディングしてください可能性があります。 – user1291802

+0

そこに行く..何も想像しない –

0
<?php 
     if(isset($_POST['submit'])){ 
      $ref_number = $_POST['reference_number']; 
      $query = "SELECT * FROM table_name WHERE reference_number = 'ref_number'"; 
      $result = mysql_query($query); 
      $output = mysql_num_rows($result); 
      if($output > 0){ 
       //Proceed in registration or whatever you want to do here 
      }else{ 
       echo "<script type='text/javascript'>alert('Please put your whatever again')</script>"; 
      } 
     } 

?> 

パート

<input type='text' name='reference_number'><br /> 
<input type='submit' name='submit' value='Submit'>; 
0

誰にでも参照番号が1つだけありますか?

すべてのユーザーが独自の参照を持っている場合: $Result = mysql_query("SELECT * FROM table WHERE user_id = 'user_id' AND ref_number = '$Ref_Number'");

それとも唯一の参照番号がある場合:提供参照番号がデータベースに1に等しい場合 $Result = mysql_query("SELECT * FROM table WHERE ref_number = '$Ref_Number'");

は、その後、あなたが買ってあげます行を返します。

if (mysql_num_rows($Result) != 0)){ 
// your update code 

} else { 
// present password form 
} 

誰もが参照番号を1つだけ持っている場合は、その値を変数に格納するほうが面白いかもしれません。

$Query = mysql_query("SELECT * FROM table"); 
$R = mysql_fetch_array($Result); 
$RealRef_number = $R['ref_number']; 

if ($_POST['Ref_number'] == $RealRef_number){ 
    // proceed to updating 
} else { 
    // they were not equal.. 
} 
関連する問題