0

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

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

php:

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

html:

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

但现在我想知道“关于这两个选项的最佳实践是什么”。这只是您最喜欢什么以及在某种情况下最合适的方式的个人意见,还是我忽略了其他一些东西。

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

提前致谢!

4

3 回答 3

3

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

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

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

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

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

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

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

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

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

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

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

于 2013-06-19T13:09:31.393 回答
1

HTTPlocation标头和 HTML 表单并没有真正的可比性。

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

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

<a href="example.php?parameter">Click</a>
于 2013-06-19T13:02:38.400 回答
1

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

于 2013-06-19T13:02:58.003 回答