我目前正在深入研究php和html,只是为了通过url显示数据库内容而进行简单的重定向。
我知道你可以用两种方式生成一个URL,可能更多,但这两个是我开始这个问题的原因:
PHP:
<?php
header('Location: example.php?parameter');
?>
HTML:
<form action="example.php" method="post">
<!--input fields etc -->
<input type="submit">
但现在我想知道“关于这两个选项的最佳做法是什么”。这只是个人意见,你喜欢什么是最好的,什么是最适合的情况,或者是我忽视的其他东西。
我不想在这里开始讨论,只是对“正常/普遍”使用的内容感兴趣。
提前致谢!
答案 0 :(得分:2)
这两段代码完全不同,即使在某些情况下用户观察到的行为可能非常相似。
这是服务器启动的重定向:
<?php
header('Location: example.php?parameter');
?>
基本上这是服务器告诉浏览器它应该浏览到另一个位置的方式。 (浏览器可以忽略它,但实际上没有理由忽略它。)可以在响应中添加其他详细信息,以告知浏览器此重定向是临时的还是永久的,或者有其他相关条件。但最简单的只是服务器说“我这里没有任何东西给你,请到那里查询你的信息。”
这是客户端发起的表单POST:
<form action="example.php" method="post">
嗯,“客户端启动”,因为POST表单的实际操作来自浏览器。服务器可能会将HTML标记提供给客户端以告诉它执行此操作,但客户端可以根据需要随意更改它。 (但没有理由这样做。)这里的要点是,这是客户端向example.php
发送数据的一种方式。它与重定向无关,它只是将数据发送到服务器上的特定资源。
服务器可以使用重定向或呈现的页面或任何其他响应来响应该数据。
这些可以通过多种方式结合使用。假设您有page1.php
和page2.php
。在page1
上有一个表单,在提交该表单后,您希望用户看到page2
。这是用户观察到的结果可能无法区分的地方。
page1
可以发布到page2
,page2
可以处理提交的数据然后显示。 或 page1
可以回复page1
,处理提交的数据,然后重定向到page2
。对最终用户来说,基本上没有区别。主要区别在于您如何组织代码。在这方面,当然,个人偏好发挥作用。但这并不是唯一采用这些工具的方案。例如,出于完全不同的原因,您可能希望将值提交到完全不同的页面,或者由于客户端完全不知道的某些服务器端原因而重定向页面请求。
当您开发更复杂的Web应用程序时,您会发现某些模式在某些情况下运行良好,并且个人偏好将开始符合这些模式。最后,这些只是执行操作的工具(将客户端重定向到另一个位置,将数据发送到服务器),而您的总体模式和实践只是使用这些工具。
答案 1 :(得分:1)
HTTP location
标头和HTML表单实际上不具有可比性。
如果要在执行PHP期间创建重定向,则应使用标头。如果要从客户端(浏览器)向服务器端提交用户输入,则应使用该表单。
HTML锚点是在网页上提供链接的最佳方式:
<a href="example.php?parameter">Click</a>
答案 2 :(得分:1)
在大多数情况下,您使用html表单或链接。 header()主要用于在执行代码后重定向用户(例如,在成功登录后,或者未授权访问受限页面时)