PHP if语句在输入标记值,并且表单不处理

时间:2015-09-11 20:11:31

标签: php

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

我认为第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'); ?>

1 个答案:

答案 0 :(得分:2)

可能你有一些错字。试试吧。

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