0

単純なコードであるべきものがうまくいきません。HTML Woo! を表示しています。メッセージですが、実際にはデータを送信していません。

$forgetKeyEmail = mysql_real_escape_string($_GET['key']);
$resetUsername = mysql_real_escape_string($_POST['inputUser']);
if ($_GET['do'] == "update") 
{
    $hasher = new PasswordHash(10, false);
    $resetPassword = $hasher->HashPassword(mysql_real_escape_string($_POST['inputPassword']));
    if ($_POST['inputPassword'] !== "")
    {
        mysql_query("UPDATE users SET password = '$resetPassword' WHERE forgetKey = '$forgetKeyEmail'");
        ?>
            <div class="alert alert-success" style="margin:0;">
            <strong>Woooo!</strong> Your password has been changed, you can now <a href="login.php">login.</a>
            </div>
            <?php
    }
    else 
    {
             ?>
            <div class="alert alert-error" style="margin:0;">
            <strong>Woops!</strong> You need to fill out a password!
            </div>
            <?php
    }
}

参照用のフォーム HTML は次のとおりです。

<form method="POST" class="form-horizontal" action="?do=update" >
  <div class="control-group">
    <label class="control-label" for="inputPassword">New Password</label>
    <div class="controls">
      <input type="text" id="inputPassword" name="inputPassword" placeholder="Password">
    </div>
  </div>
  <div class="control-group">
    <div class="controls">
      <button type="submit" class="btn btn-primary">Reset!</button>
    </div>
  </div>
</form>
4

2 に答える 2

0

次の行に小さな誤りがありました。

<form method="POST" class="form-horizontal" action="?do=update" >

フォームが送信されるたびに、URL は ..?do=update.

したがって、キー値をGET変数として収集 (取得)しています。

$forgetKeyEmail = mysql_real_escape_string($_GET['key']);

したがって、URL にキー$forgetKeyEmailがないため、空の文字列です。つまり、設定されていません。$_GET['key']

したがって、上記の html コードを次のように変更します。

<form method="POST" class="form-horizontal" action=?do=update&key=<?php echo $forgetKeyEmail; ?>

チャームのように機能します。

于 2013-04-01T20:33:32.757 に答える