18910140161

PHP-如何根据接收到的变量重定向到特定的页面?-堆栈溢出

顺晟科技

2022-10-19 13:08:26

158

所以我有两个页面,您可以从那里输入文本,并将其发送到一个名为NewPost的页面。如何重定向到提交数据的页面?例如:如何从一个页面上发布一些内容,以便在提交时将其重定向回我提交数据的页面?


顺晟科技:

如果我理解你的问题,你有2页,让我们举个例子:

  • your-site.com/page-one
  • your-site.com/page-two

它们都包含带有and输入的a。两者都将发布到相同的PHP脚本,比如在your-site.com/submit-name.

好吧,如果您的提交URL是用一些PHP处理的,那么您有几个选项:

a)读取HTTP引用器标头

当您单击链接或提交表单时,浏览器通常会从其所在位置发送URL。这是HTTP引用器标头。在PHP中,可以如下所示:

然后您可以在处理之后使用它将用户重定向到那里。 我只想验证它来自你的网站,而不是从任何地方。应该进行此检查,因为任何人都可以使用action属性创建指向提交URL的。在这种情况下,您不应该处理提交,除非它是您想要的。

b)添加一个隐藏的输入字段,其中包含您来自哪里的信息

如果不想读取HTTP referer标头,还可以添加一个隐藏的表单输入,其中包含PHP脚本可用于重定向到相应页面的信息。示例:

安全良好做法

我刚刚在表单中添加了一个构建id(也称为表单标记)。这不是你问题的一部分,也不是强制性的,这只是一个很好的练习。其思想是,当您处理来自用户的数据时,通常是为了更改用户的名称或对其个人数据做任何事情,您应该保护自己免受跨站点请求伪造的攻击。这可以通过使用instead of和将随机生成的值存储在插入窗体隐藏输入的用户会话中来实现。当您重复提交时,您将所重复的内容与会话中的内容进行比较。如果它们不匹配,那么您不应该处理提交。检查引用程序还可以提高安全性。

PHP重定向

在PHP中,要告诉浏览器重定向到另一个页面,只需执行以下操作:

因此,通常为根网站URL创建常量或定义值,然后使用验证步骤和逻辑构建位置URL。

还可用于根据协议和服务器名称动态重建URL。只需小心,这可能是您自己的网站域名以外的东西,因为攻击者可以通过发送另一个主机名头向您的服务器发送请求。如果您的站点是服务器的默认web站点,那么您的重定向可能指向攻击者域,而不是您的域。但在大多数情况下,如果您将站点托管在一个相互化的服务器上,则不会发生这种情况,因为您的域是一个虚拟主机,默认虚拟主机通常应该是托管公司设置的空页。

  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航