1、以下内容纯属原创,请谨慎选择:
①目的:用户登录超时,session过期,点击后跳转到登录页,登录成功再跳转到鼠标点击的页面。
②流程:用户登录---session过期---点击跳转到登录页---再次登录成功---跳转回点击的页面
③思路:利用TP自带session默认开启,只要我们的url有变化,那么久将变化的url存入【同名】的session变量中;
用户登录过期,session失效,点击任意url,将该url重新存入session变量中,再次登录成功,redirect到该url即可
④代码:
html页面:
* 账号
* 密码
JS:
$(document).ready(function(){
do_login_user();
});
function do_login_user()
{
var ajaxurl = $("form[name=‘user_login_form‘]").attr("action");
var query = $("form[name=‘user_login_form‘]").serialize() ;
$.ajax({
url: ajaxurl,
dataType: "json",
data:query,
type: "POST",
success: function(ajaxobj){
if(ajaxobj.status==1)
{
location.href = ajaxobj.jump; //php传过来的session地址url
}
});
}
PHP代码(TP框架):
核心的BaseModule.class.php:
class BaseModule{
public function __construct()
{
/* 系统判断是否默认开启session -xzz0419 */
if(!isset($_SESSION)){
session_start();
}
set_gopreview(); //将当前页面url存入session();
/* other code */
}
PHP的common方法:
function get_current_url()
{
$url = $_SERVER[‘REQUEST_URI‘].(strpos($_SERVER[‘REQUEST_URI‘],‘?‘)?‘‘:"?");
$parse = parse_url($url);
if(isset($parse[‘query‘])) {
parse_str($parse[‘query‘],$params);
$url = $parse[‘path‘].‘?‘.http_build_query($params);
}
return $url;
}
function set_gopreview()
{
$url = get_current_url();
session("gopreview",$url);
}
function get_gopreview()
{
$gopreview =session("gopreview");
if(!isset($gopreview)||$gopreview=="")
{
$gopreview = session(‘before_login‘)?session(‘before_login‘):url("index");
}
session("before_login",null);
session("gopreview",null);
return $gopreview;
}
PHP处理登录功能代码:
public function do_login(){
if(!$_POST){
app_redirect(APP_ROOT."/");
}
foreach($_POST as $k=>$v){
$_POST[$k] = strim($v);
}
$ajax = intval($_REQUEST[‘ajax‘]);
$jump_url = get_gopreview();//获取点击的url,已存入session中
if($ajax==1){
$return[‘status‘] = 1;
$return[‘info‘] = "登录成功";
$return[‘data‘] = $result[‘msg‘];
$return[‘jump‘] = $jump_url;
ajax_return($return);
}
}
原文:http://www.cnblogs.com/xuzhengzong/p/6857259.html