标题与表单操作

时间:2013-06-19 12:57:37

标签: php http-headers

我目前正在深入研究php和html,只是为了通过url显示数据库内容而进行简单的重定向。

我知道你可以用两种方式生成一个URL,可能更多,但这两个是我开始这个问题的原因:

PHP:

<?php
    header('Location: example.php?parameter');
?>

HTML:

<form action="example.php" method="post">
<!--input fields etc -->
<input type="submit">

但现在我想知道“关于这两个选项的最佳做法是什么”。这只是个人意见,你喜欢什么是最好的,什么是最适合的情况,或者是我忽视的其他东西。

我不想在这里开始讨论,只是对“正常/普遍”使用的内容感兴趣。

提前致谢!

3 个答案:

答案 0 :(得分:2)

这两段代码完全不同,即使在某些情况下用户观察到的行为可能非常相似。

这是服务器启动的重定向:

<?php
    header('Location: example.php?parameter');
?>

基本上这是服务器告诉浏览器它应该浏览到另一个位置的方式。 (浏览器可以忽略它,但实际上没有理由忽略它。)可以在响应中添加其他详细信息,以告知浏览器此重定向是临时的还是永久的,或者有其他相关条件。但最简单的只是服务器说“我这里没有任何东西给你,请到那里查询你的信息。”

这是客户端发起的表单POST:

<form action="example.php" method="post">

嗯,“客户端启动”,因为POST表单的实际操作来自浏览器。服务器可能会将HTML标记提供给客户端以告诉它执行此操作,但客户端可以根据需要随意更改它。 (但没有理由这样做。)这里的要点是,这是客户端向example.php发送数据的一种方式。它与重定向无关,它只是将数据发送到服务器上的特定资源。

服务器可以使用重定向或呈现的页面或任何其他响应来响应该数据。

这些可以通过多种方式结合使用。假设您有page1.phppage2.php。在page1上有一个表单,在提交该表单后,您希望用户看到page2。这是用户观察到的结果可能无法区分的地方。

page1可以发布到page2page2可以处理提交的数据然后显示。 page1可以回复page1,处理提交的数据,然后重定向到page2。对最终用户来说,基本上没有区别。主要区别在于您如何组织代码。在这方面,当然,个人偏好发挥作用。但这并不是唯一采用这些工具的方案。例如,出于完全不同的原因,您可能希望将值提交到完全不同的页面,或者由于客户端完全不知道的某些服务器端原因而重定向页面请求。

当您开发更复杂的Web应用程序时,您会发现某些模式在某些情况下运行良好,并且个人偏好将开始符合这些模式。最后,这些只是执行操作的工具(将客户端重定向到另一个位置,将数据发送到服务器),而您的总体模式和实践只是使用这些工具。

答案 1 :(得分:1)

HTTP location标头和HTML表单实际上不具有可比性。

如果要在执行PHP期间创建重定向,则应使用标头。如果要从客户端(浏览器)向服务器端提交用户输入,则应使用该表单。

HTML锚点是在网页上提供链接的最佳方式:

<a href="example.php?parameter">Click</a>

答案 2 :(得分:1)

在大多数情况下,您使用html表单或链接。 header()主要用于在执行代码后重定向用户(例如,在成功登录后,或者未授权访问受限页面时)