处理和验证表单正确的过程


process and validate form - correct process

在PHP中,我希望使用保存在单独文件中的脚本来处理表单并对其进行验证。如果出现错误,我希望表单显示错误和原始值,以便用户更改。目前,验证脚本与表单在同一页上,一切正常。但是,我希望将其从表单中删除,并使用表单中的"action"将表单变量发送到脚本。但是,如果我这样做,我如何返回到带有错误消息和原始值的表单—我只是在脚本中使用$_POST和标头位置吗?或者有更好的方法。如果表单验证正常,我将转到另一个页面(使用页眉)。

有人能帮我理解我应该尝试实现的过程/逻辑吗?以及页面之间过去变量的函数($_GET?)

如果您想在多个页面上跟踪变量,那么调查会话可能是可行的。您可以将$_GET或$_POST中的变量分配给会话,并且可以跨页面访问这些变量。

我认为您正在寻找一个名为模型-视图-控制器(MVC)的框架。在您的情况下,您的表单是"视图",处理数据的脚本是"控制器",然后控制器可以选择向用户显示什么(视图),即带有错误消息的表单或带有成功消息的其他页面。但是MVC比这要复杂一些。如果你想学习MVC,请阅读一些文章,并选择使用MVC框架,如CakePHP、CodeIgniter、Zend框架等。

如果你正在学习PHP的基础知识,你可能不想开始使用框架,在这种情况下,你可以做这样的事情(登录示例):

login.php

<?php
    $error = "";
    $username = "";
    $password = "";
    //POST method used. The user is trying to login
    if(isset($_POST))
    {
        $username = $_POST["username"];
        $password = $_POST["password"];
        //process login here
        //check database
        if($success == true)
        {
            header( 'Location: home.php' ) ;
        }
        else
        {
            include "login-view.php";
            $error = "Either username or password is incorrect.";
        }
    }
    else //GET method used. The user visits the login page
    {
        include "login-view.php";
    }
?>

登录视图.php

<p><?php echo $error; ?></p>
<form method="post" action="login.php">
     <input type="text" name="username" value="<?php echo $username ?>" />
     <input type="password" name="password" />
     <input type="submit" value="send" />        
</form>

上面的代码如下:

1) 用户访问登录页面。login.php将检测到使用的方法是GET——点击链接、打开书签或在地址栏中键入URL。login.php将包含登录视图,其中包含表单.

2) 用户键入用户名和密码,然后单击提交按钮。login.php将检测到请求是POST,然后验证用户名和密码,必要时提供错误消息。如果有效,则重定向到主页;如果无效,则包括login-view.php(表单),这次包含错误消息和以前键入的用户名。