原创:PHP利用session,实现用户登录后回到点击的页面(本文以TP为例)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原创:PHP利用session,实现用户登录后回到点击的页面(本文以TP为例)相关的知识,希望对你有一定的参考价值。

1、以下内容纯属原创,请谨慎选择:

  ①目的:用户登录超时,session过期,点击后跳转到登录页,登录成功再跳转到鼠标点击的页面。

  ②流程:用户登录---session过期---点击跳转到登录页---再次登录成功---跳转回点击的页面

  ③思路:利用TP自带session默认开启,只要我们的url有变化,那么久将变化的url存入【同名】的session变量中;

             用户登录过期,session失效,点击任意url,将该url重新存入session变量中,再次登录成功,redirect到该url即可

  ④代码:

html页面:

<script src="{$TMPL}/js/ajax_user_login.js"></script>
<form id="user_login_form" name="user_login_form" action=‘{url r="user#do_login"}‘ >
	<span class="lh40 w100 mr20"><i class="color-red">* </i>账号</span>
	 <input name="email" id="email"  placeholder="手机号/会员名/邮箱" type="text"   class="textbox"/>
	<span class="lh40 w100  mr20"><i class="color-red">* </i>密码</span>
	<input  name="user_pwd" id="user_pwd" placeholder="请输入密码" type="password" class="textbox"/>
	<input type="button" value="登录" name="submit_form"id="btn_do_login" />
	<input type="hidden" value="1" name="ajax" />
</form>

  

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);
         }
}

  

















以上是关于原创:PHP利用session,实现用户登录后回到点击的页面(本文以TP为例)的主要内容,如果未能解决你的问题,请参考以下文章

shiro的session失效后重新登录,怎么回到首页

php怎样在首页显示登录昵称

单点登录的简单实现

asp.net怎么利用session对象使用户在登录页面实现登录之后,然后首页显示用户名

PHP $_Session ,JS在成功插入用户名和密码后不允许会员登录

利用缓存实现session共享