-1

パスワードを入力して送信ボタンをクリックするとフォームエラーが発生しますクエリが実行されましたが、データベースのパスワード行は空です:(

私が試したが解決しなかったこの問題を整理するのを手伝ってください。phpには、二重引用符を介してhtmlが含まれています

<?php echo errormessage();


      if(isset($_REQUEST['email']) && !empty($_REQUEST['email']) AND isset($_REQUEST['token']) && !empty($_REQUEST['token'])){
        // Verify data
        $email = mysql_prep($_REQUEST['email']); // Set email variable
        $token = mysql_prep($_REQUEST['token']); // Set hash variable

        $result = mysqli_query($connection,"SELECT email, hash FROM job_seeker WHERE email='".$email."' AND hash='".$token."'"); 
        $num_rows  = mysqli_num_rows($result);

        if($num_rows > 0){



        echo '<form method="post" action=""><table class="table table-bordered" width="100%" >
        <tr>
          <td width="40%">New Password :</td>
          <td width="60%"><input type="password" required="" value="" name="pass"></td>
        </tr>
        <tr>
          <td>Confirm New Password  : </td>
          <td><input type="password" required="" value="" name="cpass"></td>
        </tr>
        <tr>
          <td></td>
          <td><input type="submit" name="submit" value="Update"></td>
        </tr>

      </table></form>';



//<?php          //var_dump($_POST);

          @$pass = mysql_prep($_POST['pass']);
          @$cpass = mysql_prep($_POST['cpass']);

         if(isset($_POST)){

           if($pass == $cpass)
          {
          //echo $hashed_password = password_encrypt($pass); 
            $hashed_password = $pass; 
          $result = mysqli_query($connection,"UPDATE job_seeker SET hashed_password='$hashed_password', hash='' WHERE email='".$email."' AND hash='".$token."'");
          if ($result) {
        // Success
          $_SESSION["message"] = "Password Successfully Changed.";

          } else {
            // Failure
            $_SESSION["message"] = "Oops... Something went wrong.";
          }
         }
          }
        }else{
           $_SESSION["message"] = "OOPS: Link Expired. Please check your inbox.";
        }
      }else{
        //var_dump($_REQUEST);
       redirect_to('index.php');
       }
      ?>
4

4 に答える 4

1

コード行:

 if(isset($_REQUEST['email']) && !empty($_REQUEST['email']) AND isset($_REQUEST['token']) && !empty($_REQUEST['token'])){

パスワードをチェックし、パスワード (トークン) がポストされた場合にのみクエリを実行します。次のように更新してください。

 if(isset($_REQUEST['email']) && !empty($_REQUEST['email'])){

そして、あなたのコードは機能します。

于 2013-08-23T09:53:39.477 に答える
0

フォームに値が事前定義されている可能性があります。

これを変更してみてください:

 echo '<form method="post" action=""><table class="table table-bordered" width="100%" >
    <tr>
      <td width="40%">New Password :</td>
      <td width="60%"><input type="password" required="" value="" name="pass"></td>
    </tr>
    <tr>
      <td>Confirm New Password  : </td>
      <td><input type="password" required="" value="" name="cpass"></td>
    </tr>
    <tr>
      <td></td>
      <td><input type="submit" name="submit" value="Update"></td>
    </tr>

  </table></form>';

このため:

echo '<form method="post" action=""><table class="table table-bordered" width="100%" >
    <tr>
      <td width="40%">New Password :</td>
      <td width="60%"><input type="password" required="" name="pass"></td>
    </tr>
    <tr>
      <td>Confirm New Password  : </td>
      <td><input type="password" required="" name="cpass"></td>
    </tr>
    <tr>
      <td></td>
      <td><input type="submit" name="submit" value="Update"></td>
    </tr>

  </table></form>';

値属性なし

于 2013-08-23T10:12:37.677 に答える
0

コードの「パスワード変更」部分にエラーがあります。

 $result = mysqli_query($connection,"UPDATE job_seeker SET hashed_password='$hashed_password', hash='' WHERE email='".$email."' AND hash='".$token."'");

PHP の設定によっては、パスワード列が次のように設定される場合があります。

"$hashed_pa​​ssword"

または変数にあったものに$hashed_password

おそらくこれを行うつもりでした:

 $result = mysqli_query($connection,"UPDATE job_seeker SET hashed_password='".$hashed_password."', hash='' WHERE email='".$email."' AND hash='".$token."'");

しかし、これは sql インジェクションに対して脆弱であるため、依然としてひどい考えです。

また、列名が文字まで正しいことを確認してください。(私はあなたのためにそれをチェックすることはできません)

于 2013-08-23T10:00:06.047 に答える