PHP If语句中输入标签值,窗体不处理


PHP If statement in input tag value, and form not processing

我的表单没有处理。一旦我输入了详细信息,或者即使没有,我也会在第95行看到else语句回显"您的密码重置密钥无效"。关键是正确的,但是…

我认为第160-164行if语句对于输入标记的值有问题。我认为它需要包装在一个php标签,但我不确定什么是错的…?

希望有人能帮忙。谢谢。

<?php
$objForm = new Form();
$objValid = new Validation($objForm);
$objUser = new User();

// Was the form submitted?
if (isset($_POST["ResetPasswordForm"]))
{
        // Form Fields Check
        if ($objForm->isPost('email')) {
            $objValid->_expected = array(
            'email',
            'password',
            'confirm_password'
            );
            $objValid->_required = array(
                'email',
                'password',
                'confirm_password'
                );

            $objValid->_special = array(
                'email' => 'email'
                );

            $objValid->_post_remove = array(
                'confirm_password'
                );

            $objValid->_post_format = array(
                'password' => 'password'
                );
            $email = $objForm->getPost('email');
            $user = $objUser->getByEmail($email);
            if (empty($user)) {
                $objValid->add2Errors('e-mail_not_found');
            }
        }

    // Gather the post data
        $email = $_POST["email"];
        $password = $_POST["password"];
        $confirmpassword = $_POST["confirmpassword"];
        $hash = $_POST["q"];    

    // validate password
    $password = $objForm->getPost('password');
    $confirmpassword = $objForm->getPost('confirmpassword');
    if (!empty($password) && !empty($confirmpassword) && $password != $confirmpassword) {
        $objValid->add2Errors('password_mismatch');
    }
    // Use the same salt from the forgot_password.php file
    $salt = "---blank for demo---";
    // Generate the reset key
    $resetkey = hash('sha512', $salt.$email);
    // Does the new reset key match the old one?
    if ($resetkey == $hash)
    {
        if ($password == $confirmpassword)
        {
            //hash and secure the password
            $password = hash('sha512', $password);
            // Update the user's password
                $query = $conn->prepare('UPDATE clients SET password = :password WHERE email = :email');
                $query->bindParam(':password', $password);
                $query->bindParam(':email', $email);
                $query->execute();
                $conn = null;
            Helper::redirect('/?page=password_changed');
        }
        else
            $objValid->add2Errors('password_mismatch');
    }
    else
        echo "Your password reset key is invalid.";
}

require_once('_header.php'); ?>
<div id="cat_prod"><h1>- CHANGE PASSWORD -</h1></div>
    <br /><br />

    <form action="" method="POST">
        <table cellpadding="0" cellspacing="0" border="0" class="tbl_insert">
            <tr>
                <th>
                    <label for="email">E-mail : *</label>
                </th>
                <td>
                    <?php echo $objValid->validate('e-mail_not_found'); ?>
                    <input type="text" name="email" id="login_email" class="fld" 
                    value="<?php echo $objForm->stickyText('e-mail_not_found'); ?>" /> 
                </td>
            </tr>
            <tr>
                <th>
                    <label for="password">Password : *</label>      
                </th>
                <td>
                    <?php echo $objValid->validate('password'); ?>
                    <?php echo $objValid->validate('password_mismatch'); ?>
                    <input type="password" name="password" id="password" class="fld" value="" />
                </td>
            </tr>
            <tr>
                <th>
                    <label for="confirm_password">Confirm Password : *</label>      
                </th>
                <td>
                    <?php echo $objValid->validate('confirm_password'); ?>
                    <input type="password" name="confirmpassword" id="comfirm_password" class="fld" value="" />
                </td>
            </tr>

            <tr>
                <th>
                     
                </th>
                <td>
                    <label for="change_pass" class="sbm_blue fl_l">
                    <input type="hidden" name="q" value="';
                                if (isset($_GET["q"])) {                        
                                echo $_GET["q"];                            
                            }                           
                                echo '" />
                    <input type="submit" name="ResetPasswordForm" id="btn_login" class="btn" value=" Reset Password " />
                    </label>
                </td>
            </tr>

        </table>
    </form>

<?php require_once('_footer.php'); ?>

可能是你打错了。像这样试试。

<input type="hidden" name="q" value="<?php echo isset($_GET["q"]) ? $_GET["q"]: '' ;?>"/>