JS+PHP登录后自动执行之前的操作X操作需要用户登录后才能访问,所以系统引导用户进入登录页面,然后让用户登录后继续执行操作X。有分析操作X中有两种情况,1:跳转到页面B;2:执行操作。进入B页面时,需要在B页面入口判断用户是否登录,如果登录则进入,否则进入登录页面,登录成功后进入B页面。假设A页面的url为url-a,B页面的url为url-b,登录页面的url为url-l,则浏览器的地址为url-a、url-b、url-l,url-b。所以本系统就是要解决如何在登录模板中记录url-b,成功后输入url-b。执行操作的情况。在执行操作之前,判断用户的登录状态。如果是,执行操作。否则先跳转到登录页面。登录成功后,返回页面A,页面A继续执行之前的操作。此时登录页面要记录A页面,登录成功后返回A,A页面要记录用户的操作和参数,从登录页面返回后继续执行。在页面跳转和页面跳转的情况下,B页面负责判断是否跳转到登录页面,是否需要通过重定向来完成。标题(“位置:$loginURL”);退出;在登录页面,需要知道自己是从哪个页面跳转的,并保存起来,以便登录成功后跳转回原来的页面。在PHP中,可以通过$_SERVER['HTTP_REFERER']获取到你从哪个页面进入的登录页面。$referer=$_SERVER['HTTP_REFERER'];必须记录进入登录页面时获取的$referer,以便登录成功后跳回上一页。跨调用保存信息有四种方式:1.保存在session中;2、保存在cookie中;3.作为参数放在url中;4.生成页面时,作为页面的隐藏信息。它放在session中,只能通过php获取。因此,登录成功后跳转回原页面的操作只能在php中进行,这样就无法通过ajax调用验证用户登录信息后直接跳转至前端指定页面。cookie的使用方式需要前后端共同确定一个约定,用什么来表示页面的跳转信息,前端需要添加cookie处理逻辑。这种方法可以同时支持前端和后端跳转。放在url中作为参数可以实现前端跳转,但是会导致url看起来有点怪怪的,另外还需要考虑url编码的问题。直接在登录页面生成(使用页面模板)作为前端参数。该方法支持前端跳转,需要定义前后端约定好的参数。执行操作执行操作的情况应该是页面A判断用户是否登录,或者根据执行操作X的返回结果,页面A直接跳转到登录页面,登录界面记录该页面跳跃的来源。标题(“位置:$loginURL”);退出;A页面跳转到登录页面之前,先记录要执行的操作,比如:操作的名称,这个信息必须是跨请求可以访问的。操作相关信息可以通过url、session、cookie传递,也可以通过localStorage、sessionStorage保存在客户端。如果用url指定要执行的操作(把url换成history.pushState),只能带简单的参数(放在history里好不好?不想懂),通用性不好。session和cookie需要向服务器传输数据,不方便获取预留参数。最后决定选择sessionStorage来保存要执行的方法。保存跳转到登录界面前要执行的操作:if(window.sessionStorage){varmethod=JSON.stringify({name:'要执行的方法名',args:[参数一,参数二]});window.sessionStorage.setItem('pending.method',method);}从登录界面跳回页面,取出要执行的操作执行:if(window.sessionStorage){varpendingMethod;如果(pendingMethod=window.sessionStorage.getItem('pending.method')){window.sessionStorage.removeItem('pending.method');pendingMethod=JSON.parse(pendingMethod);窗口[pendingMethod.name].apply($scope,pendingMethod.args||[]);}}总结一下,使用的方法是通过HTTP_REFERER和cookie记录登录后跳转的页面,通过sessionStorage记录返回页面后执行的javascript方法和参数。