页眉与表单动作


header vs form action

我目前正在深入研究php和html,并致力于通过url显示数据库内容的简单重定向。

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

php:

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

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

但是现在我想知道"关于这两个选项的最佳实践是什么"。这仅仅是个人的观点,你最喜欢什么,在某种情况下什么是最合适的方式,还是我忽视了别的什么?

我不是想在这里开始讨论,只是对"通常/常用"的用法感兴趣。

提前感谢!

这两段代码所做的事情根本不同,尽管在某些情况下,用户观察到的行为可能非常相似。

这是一个服务器发起的重定向:

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

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

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

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

嗯,"客户端发起的"是指发送表单的实际操作来自浏览器。服务器可能将HTML标记提供给客户端,告诉它这样做,但客户端可以根据需要自由更改它。(不过,没有理由这么做。)这里的要点是,这是客户端向example.php发送数据的一种方式。它与重定向无关,它只是将数据发送到服务器上的特定资源。

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

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

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

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

HTTP location标头和HTML表单并没有可比性。

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

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

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

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