php登录后返回登录前页面功能实现!

fire-rain 2011-09-06 12:24:56
在我的站点中有一个搜索页,搜索功能是用POST传递关键字,现在用户搜索关键字“电影”,获得搜索结果后,点击了此页面中的登录连接,登录成功后,我是用JS语句:window.history.go(-1);window.location.reload()返回登录前页面,但这时候页面会提示:

若要再次显示该网页,web浏览器需要重新改善您以前提交的信息,如果您正在交易,应单击“取消”避免重复交易,否则,请单击“重试”再次显示该网页。

这个提示影响用户体验,如何解决这个问题呢?在其他页面中都正常。
...全文
1306 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄袍披身 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 doraprince 的回复:]

很感谢各位前辈的热心指点,现在决定把表单改造成用GET方式提交来完成搜索,之前也是因为看到别人说GET方式不太安全才决定要用POST的,谁知道现在又碰到这个问题。还是用回GET吧,
[/Quote]

不安全 要说不安全 都不安全。要安全都安全.
fire-rain 2011-09-07
  • 打赏
  • 举报
回复
很感谢各位前辈的热心指点,现在决定把表单改造成用GET方式提交来完成搜索,之前也是因为看到别人说GET方式不太安全才决定要用POST的,谁知道现在又碰到这个问题。还是用回GET吧,
maquan 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 doraprince 的回复:]
这些方法都不行啊,用JS的history.back()会跳到搜索页的上一页,也就是丢失了用户的搜索结果,而且如果是首页的话,这样会跳转到其他网站页面上去,比如我打开我的IE进入主页:www.xx.com,然后再输入loclhost/index.php进入我的站点,然后登录,这样的话,会跳转到www.xx.com,这不是很可笑?
history.go(-2)也是一样,至于一楼的$_SERVER['referer']方法我没测试,因为我是用的ajax,也就是js,不懂怎么使用PHP方法。还望高人指点。[/Quote]
刚注意到这个说法。啥意思啊?你的“登录”不是一个独立的页面,而是用 AJAX 在当前页面里弹出对话框来完成,是吗?如果是这样的话,所谓“登录前的页面”,就是“当前页面”啊,那就别 history back 什么的了,只要 window.location.reload() 就够了,唯一需要做的就是把“当前页面”改造成用 GET 方式获取。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
maquan 2011-09-07
  • 打赏
  • 举报
回复
再说一次,把搜索页改造成以 GET 方式提交关键词

凡是以 POST 方式获得的页面,当用 history back 回到这个页面的时候,浏览器都会提醒是否重新提交 FORM 数据,用 GET 方式就没这个问题。

至于说 GET 泄漏密码,是有这个问题,但搜索页不会有什么密码。

另外,不要用 JS 来处理“返回到登录前的页面”。应该是在点击“登录”链接的时候,把当前页面的 URL 携带过去(或者通过 $_SERVER['referer']),等登录验证成功后,用 header('Location: ...') 跳转过去。

--------
With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is
hard to be sure where they are going to land, and it could be dangerous sitting under them as they
fly overhead.

————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
码无边 2011-09-07
  • 打赏
  • 举报
回复
搜索完,将你搜索的值绑定,之后传回来就可以的。
gsprest 2011-09-07
  • 打赏
  • 举报
回复
Window history back()没用么。简单又实惠
maquan 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 doraprince 的回复:]
很感谢各位前辈的热心指点,现在决定把表单改造成用GET方式提交来完成搜索,之前也是因为看到别人说GET方式不太安全才决定要用POST的,谁知道现在又碰到这个问题。还是用回GET吧,
[/Quote]
也好,来回多折腾几次,也就都弄明白了 ^_^

所谓安全不安全,不是简单地给一个结论就完了。如果谁说 GET 不安全,那要讲清楚为什么不安全,在什么情况下不安全,然后你再看你自己的应用场景是不是符合他说的情况。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
kyzy_yy_pm 2011-09-06
  • 打赏
  • 举报
回复
那是因为你用表单了把
黄袍披身 2011-09-06
  • 打赏
  • 举报
回复

用php 的header来跳转吧

header('Location: http://www.example.com/');

另外用js

window.history.go(-2);window.location.reload()
看看行不.

kyzy_yy_pm 2011-09-06
  • 打赏
  • 举报
回复
history.go(-1)或者history.back()这两个js的方法就能实现,也可以通过$_SERVER['referer']存储来实现
fire-rain 2011-09-06
  • 打赏
  • 举报
回复
这些方法都不行啊,用JS的history.back()会跳到搜索页的上一页,也就是丢失了用户的搜索结果,而且如果是首页的话,这样会跳转到其他网站页面上去,比如我打开我的IE进入主页:www.xx.com,然后再输入loclhost/index.php进入我的站点,然后登录,这样的话,会跳转到www.xx.com,这不是很可笑?

history.go(-2)也是一样,至于一楼的$_SERVER['referer']方法我没测试,因为我是用的ajax,也就是js,不懂怎么使用PHP方法。还望高人指点。
fenyao 2011-09-06
  • 打赏
  • 举报
回复
GET方式提交可能会暴露密码
fenyao 2011-09-06
  • 打赏
  • 举报
回复
造成现在这种情况的原因是因为你的提交方式为POST提交
有这样一个办法:
在登录成功的页面中用$_SERVER['HTTP_REFERER']获取到来源的页面地址,然后header跳转至该页面即可

//登录成功后,需要跳转
$src_page = $_SERVER['HTTP_REFERER'];
header("location:".$src_page);
maquan 2011-09-06
  • 打赏
  • 举报
回复
最简单的办法就是把你的“搜索页”改造成用 GET 方式提交。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
xiexie10o 2011-09-06
  • 打赏
  • 举报
回复
就用window.history.back()就可以了,不要那么复杂
xsxs89757 2011-09-06
  • 打赏
  • 举报
回复
当调用登陆的那个页面的时候就记录上个页面的COOKIE
然后登陆完成以后跳转COOKIE

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧