我发现很多网站描述PRG,但没有简单的PHP代码示例。
下面是我实现的:
form.php
有一个操作:validate.php
.
1.用户从未看到validate.php
;if验证所有$_GET
,如果有效,则将其写入数据库并生成确认页面的HTML/如果无效,则生成错误页面的HTML,解释错误。
1.生成的HTML存储在$_SESSION
变量中,然后validate.php
调用header('Location: <as appropriate>);
。invalid_input.php
的submitted.php
(在用户读取URL的情况下)仅由echo $_SESSION['form_html'];
组成。
在我看来,这似乎是对页面重载和后退按钮问题的保护。
我是不是因为试图重新发明轮子而搞砸了?
6条答案
按热度按时间z6psavjg1#
最简单的场景:
使用
REQUEST_URI
。不要使用PHP_SELF
,因为在大多数CMS系统和框架中,PHP_SELF
指的是/index.php
。4szc88ey2#
代码片段:
zi8p0yeb3#
一个常见的用法是登录验证。这是用户提交登录表单时的流程。PHP应用程序通过$_POST变量验证用户。当用户成功验证时,将303标头发送回浏览器。因此用户被重定向到一个新页面。
68bkxrlz4#
我想向您介绍一种方法,它在框架中的使用范围更广,使用的细节也更多。
我们要做的
我们有一个名为
index.php
的文件。index.php
并显示通知。代码
mwyxok5s5#
这里是
form.php
6mw9ycah6#
来电者.htm
Callee.php(被调用两次。)
请注意,其中涉及两个查询字符串
看看var_dump对$_GET是怎么说的:
将标题 * 放在POST部分的末尾 * 时出现问题,如下所示:
php手册上说:“请记住,在发送任何实际输出之前,必须调用header(),无论是通过普通HTML标记、文件中的空行还是从PHP。使用include、require函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行,这是一个非常常见的错误。使用单个PHP/HTML文件时也存在同样的问题。”
但是如果你需要根据POST部分的情况来构建Query 2,那么它可能需要放在POST部分的底部,这是可以的,只要你不试图在它上面插入任何echo,即使是测试也不行。