Php 重定向引用头

Php 重定向引用头,php,http,http-headers,Php,Http,Http Headers,我在PHP中有一个登录脚本,可以将客户端重定向到。当客户端登录时,我想将用户返回到302将其重定向到登录页面的页面 我希望保持url尽可能干净(最好是只使用/login),而且我不想使用cookie,比如会话cookie 我试图依赖$\u服务器['HTTP\u referer'],但我有一个问题,当我单击需要登录的链接时,$\u服务器['HTTP\u referer']设置为单击链接的页面,而不是发送302重定向的目标页面。(FF4) 如果未设置$\u服务器['HTTP\u referer'](

我在PHP中有一个登录脚本,可以将客户端重定向到。当客户端登录时,我想将用户返回到302将其重定向到登录页面的页面

我希望保持url尽可能干净(最好是只使用/login),而且我不想使用cookie,比如会话cookie

我试图依赖
$\u服务器['HTTP\u referer']
,但我有一个问题,当我单击需要登录的链接时,
$\u服务器['HTTP\u referer']
设置为单击链接的页面,而不是发送302重定向的目标页面。(FF4)

如果未设置
$\u服务器['HTTP\u referer']
(https、书签或其他),则我会将GET url与返回url(/login/return/myurl)混在一起。对于所有其他情况(浏览器在重定向到/登录的请求上提供HTTP\U引用),我真的希望仅依靠
$\u服务器['HTTP\u HEADER']
来生成一个干净的url


有没有办法礼貌地要求浏览器使用重定向标题发送“正确”的推荐人,或者我一直在阻塞所有重定向的url?

您无法指定在
推荐人
标题中发送的url。你有三个选择

  • 将URL存储在会话中
  • 将URL存储在cookie中
  • 将URL存储在请求参数中

request参数是最合适的,因为用户可能打开了多个窗口(共享会话和cookie),您可以很容易地将它们区分开来。

否,无法向浏览器询问任何与referer相关的信息


若我是你们,我不会将任何人重定向到任何地方,只会在适当的位置显示登录表单(在模板驱动的站点上,这非常容易),将当前位置存储在隐藏字段中

不要依赖于
HTTP\u REFERER
。没有其他更适合的重定向代码,因此客户端正在发送实际REFERER的HTTP\u REFERER?我不知道任何规范会强制执行此类行为。还要注意拼写错误:存储引用者的标题称为
Referer
,并使用
$\u服务器['HTTP\u Referer']
访问。这不会污染登录框的搜索引擎结果吗?@Jon search engines?如果我错了,请纠正我:在您当前的场景中,一个搜索引擎被重定向到登录页面,并面对同一个登录框,您没有发现任何问题[显然]。同一个登录框但并没有重定向有什么问题?在我看来,你们会有10个页面有相同的内容-索引中有10个点击,而不是10个页面指向一个页面-例如索引中有一个页面?还是我错了?@Jon在我看来,如果这是一个私人区域,任何搜索引擎都不应该要求这个页面。如果是带有登录选项的公共区域,我看不出有任何理由从该页面重定向任何人。