注册验证,同一页面上显示错误消息

时间:2015-07-19 16:07:05

标签: php html

我目前正在创建注册页面并检查错误。我有错误正常工作,但当我报告它们时,它们最终会出现在新页面上。我想知道如何让它不重定向到另一个页面?

我回应了一个div,我认为它会出现在表单旁边但不会发生。这是我的表单和错误验证:

<form action="signup.php" method="post">
                <input type="text" name="First_name" placeholder="First Name" />
                <input type="text" name="Last_name" placeholder="Last Name" />
                <input type="text" name="Email" placeholder="Email Address" />
                <input type="text" name="Email2" placeholder="Comfirm Email Address" />
                <input type="password" name="Password" placeholder="Password" />
                <input type="submit" value="Submit" name="submit"/>
</form>

这是我的php文件的一部分。

if (isset($_POST['submit'])) {
$error = array();
$firstname=$_POST['First_name'];
$lastname=$_POST['Last_name'];
$email=$_POST['Email'];
$email2=$_POST['Email2'];
$password=$_POST['Password'];

if (strlen($password) <= 6 and strlen($password) >= 1) {
    if (strlen($password) >= 20) {
        if (strlen($email) >= 1 and strlen($email) <= 55) {
            if ($email == $email2) {
                if (ereg('^[a-zA-Z0-9\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $email)) {
                        $sql = "INSERT INTO Users (First_Name, Last_Name, Email, Password) VALUES ('$firstname','$lastname','$email','$password')";
                            echo "Regiration Complete. Check Email for Validation.";
                            exit;
                    } else {
                        $error[] = 'Email is wrong';
                    }
                } else {
                    $error[] = 'Email addresses are not the same';
                }
            } else {
                $error[] = 'Email Address is too long';
            }
        } else {
            $error[] = 'Password is too long';
        }
    } else {
        $error[] = 'Password must be 6 Characters';
    }
}
echo '<div class="errormsgbox"> <ol>';
    foreach ($error as $key => $values) {
        echo '  <li>'.$values.'</li>';
    }
echo '</ol></div>';

3 个答案:

答案 0 :(得分:2)

如果您想将表单包含在同一页面上,则需要将其包含在main signup.php文件中,如此;

.
.
.    
void GLWidget::keyPressEvent(QKeyEvent *event)
{
   qDebug() << event->text() << " is pressed ...";
}

void GLWidget::keyReleaseEvent(QKeyEvent * event)
{
    qDebug() << event->text() << " is released ...";

     //ui->textEdit->setText("hhh"); <- ????????????????

}

.php文件中PHP开始和结束标记之外的任何内容都将被视为HTML标记。

答案 1 :(得分:1)

我建议你看一下这个插件: http://rickharrison.github.io/validate.js/

以其他方式使用简单的jquery或js,如果没有页面正在加载新的...

但你必须通过php进行第二次检查,因为人们可以轻松操纵客户端的js代码...... 祝你好运:)

edit1:你总是可以使用ajax来发送和验证php中的数据,如果你想要优雅的方式(ajax也是客户端......)。

只是阅读和学习

答案 2 :(得分:1)

您可以使用HTML5在没有PHP的情况下验证这些数据 - 因此,如果表单违反您的标准,则表单甚至无法发送。

您可以在此处详细了解:

http://www.the-art-of-web.com/html/html5-form-validation/

问题:

您加载了其他页面。这意味着,如果你想在那里展示它,你也必须在那里包含表格。否则它不会显示。