我可以在PHP中通过header()方法设置请求方法吗?

我可以在PHP中通过header()方法设置请求方法吗?,php,http,Php,Http,我已经构建了一个表单,它除了基于表单元素值构建一个url来“重定向”用户之外什么都不做 表单包含分类法中的值,该分类法包含每个城市的国家和城市 因此,当用户选择一个国家时,表单将构建url,将用户发送到显示该国家所有记录的适当页面。如果用户选择和城市字段,则表单将生成url,将用户发送到显示此国家/地区>城市记录的相应页面 该表单使用“post”作为方法 在这里之前一切都很好 问题是当用户尝试刷新结果页面,或尝试从后续页面使用后退按钮时 为了解决这个问题,我尝试在将表单提交到同一表单后重定向用户

我已经构建了一个表单,它除了基于表单元素值构建一个url来“重定向”用户之外什么都不做

表单包含分类法中的值,该分类法包含每个城市的国家和城市

因此,当用户选择一个国家时,表单将构建url,将用户发送到显示该国家所有记录的适当页面。如果用户选择和城市字段,则表单将生成url,将用户发送到显示此国家/地区>城市记录的相应页面

该表单使用“post”作为方法

在这里之前一切都很好

问题是当用户尝试刷新结果页面,或尝试从后续页面使用后退按钮时

为了解决这个问题,我尝试在将表单提交到同一表单后重定向用户,但我担心会出现无休止的重定向。因此,我想知道是否可以通过
header()
函数更改修改请求方法

这可以帮助我检查
$\u服务器[REQUEST\u METHOD]
是否设置为
POST
,从而执行重定向。

如果您知道,
标题(“Location:…”
设置了一个状态码,该状态码会显式地导致浏览器使用
GET
请求,而不是它使用的任何方法

事实上,如果要强制浏览器使用相同的方法重新发送请求,则必须手动将状态代码设置为308

所以,不要担心:)

如果您这样做,您就会知道
标题(“位置:…”
设置了一个状态代码,该代码会显式地导致浏览器使用
GET
请求,而不是它使用的任何方法

事实上,如果要强制浏览器使用相同的方法重新发送请求,则必须手动将状态代码设置为308


所以,不用担心:)

函数设置响应头,而不是请求头!!你说得对(函数
headers()
设置响应头,而不是请求头sop!!你说得对!!:(另外,你应该
die()
exit()
紧跟在
头('Location:…')之后)
;@phihag你能提供一些代码来说明如何手动设置308的状态码吗?@jkushner这个问题涉及到切换到GET。如果你想发送308,但不知道如何在php中发送,为什么不发送呢。这样,将来有同样问题的搜索者会找到你的问题并从中受益。如果你愿意,你可以放弃我带有新问题URL的注释。此外,您应该在
标题('位置:…')之后立即
die()
exit()
;@phihag你能提供一些代码来说明如何手动设置308的状态码吗?@jkushner这个问题涉及到切换到GET。如果你想发送308,但不知道如何在php中发送,为什么不发送呢。这样,将来有同样问题的搜索者会找到你的问题并从中受益。如果你愿意,你可以放弃我带有新问题URL的注释。