我来抛玉,想做一个 登陆后跳转到登陆前需要登陆页面的功能

说的白一点……

就是说:一个页面用户需要登陆A,用户点之进之后发现用户没有登陆

后,跳到登陆页面,用户登陆成功后,跳到A

Over!

欢迎指导。
[b]问题补充:[/b]
谢谢大家

目前这个问题还有一点点的功能补充:

情况是这样的

目前有一个查询的页面,就是搜索,用户填写表单然后提交的那种

用户在没有登陆的情况下来搜索信息,搜索完成后,翻了几页

然后左边有一个登陆框,这个时候他登陆了,跳的话,应该是跳转到他刚刚翻到的那个页面上的,可是我是根据浏览器的地址来跳转的,而分页的时候是POST的表单提交,在这个时候,浏览器的地址只是平时的一串地址,没跟后面的页数参数等等,所以呢,这个时候跳转是不成功的。

不知道我这么多大家能不能听得懂。

我在想,有没有一种办法得到POST提交时的请求地址呢。
[b]问题补充:[/b]
jansel (资深程序员)
playfish (架构师)
说得都有道理,对于我们来说

可能就是没有必要去GET提交了。

这样的话,我说的功能只有CANCEL掉了。

不过很感激大家的帮助。同时也让我学到了很多的知识,THX ALL。

这个原理其实不难,就是判断一下来源网址,http referer。

简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

不知道你是什么语言,如果是java的话,String referrer = request.getHeader("referer");就可以得到。如果是js的话,document.referer可以得到。

用户点之进之后发现用户没有登陆后,在跳到登陆页面之前,给登陆页面传参数嘛

参数就是之前没登陆的url

比如
用户先访问http://xxxx/a ,
跳转到登陆页面http://xxxx/b?preurl=http://xxxx/a

如果记住URL可能还不够,还需要记住当时的Request信息,然后重定向时重新构造request到该URL才可行。

URL的记录方式如上面两位所说,但是LZ一定要考虑快照当时的request信息,否则页面不一定正确。

[size=large]我不是已经提了吗?要记录request的信息,然后重新构造request到该URL,否则页面不一定正确[/size]

你只要把表单post的参数,改成get,这样通过判断referer的方法就依然有效。你看看像一些论坛程序都是这样做的,discuz,他们的分页都是用get方法。

不过这个方法有些缺点,就是会影响url的美观,不过,我个人认为url美观比起可用性来说,比较次要。

此外,改成get方法的话,别人还可以直接将地址保存下来,下次再用。比如说贴到自己博客上面。使用get方法,对于SEO也更有利。

[quote]
你只要把表单post的参数,改成get,这样通过判断referer的方法就依然有效。你看看像一些论坛程序都是这样做的,discuz,他们的分页都是用get方法。

不过这个方法有些缺点,就是会影响url的美观,不过,我个人认为url美观比起可用性来说,比较次要。

此外,改成get方法的话,别人还可以直接将地址保存下来,下次再用。比如说贴到自己博客上面。使用get方法,对于SEO也更有利。
[/quote]

同意。

POST不利于用户保存供下次访问,也不利于网站的传播,这一点看看google合baidu就知道了,全是GET,这样你可以直接复制地址发给你朋友,你朋友点击直接得到搜索结果页面。
所以应该以GET为主。

按照playfish兄所讲的话,美观嘛,baidu和google应该拿0分了。。

出于安全考虑,post无非是为了隐藏某些参数,不想让用户知道,或者某些数据量比较大的以及中文参数的使用POST,其他情况能用GET的用GET,你用POST方式,如果搜索引擎抓只能抓你一个页面,因为无法直观的到达你第几页。

over...