0

在 PHP 中,我想使用保存在单独文件中的脚本来处理表单并验证它。如果有错误,我希望表单显示错误和原始值以供用户更改。目前验证脚本与表单在同一页面上,一切正常。但是,我希望它远离表单,并使用表单中的“操作”将表单变量发送到脚本。但是,如果我这样做了,我如何才能返回到带有错误消息和原始值的表单 - 我是否只是在脚本中使用 $_POST 和标题位置?或者有没有更好的方法。如果表单验证正常,我将转到单独的页面(使用标题)。

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

4

2 回答 2

0

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

于 2012-09-15T07:09:22.160 回答
0

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

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

登录.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";
    }
?>

登录-view.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(表单),这次包含错误消息和之前输入的用户名。

于 2012-09-15T07:14:44.983 回答