1. 程式人生 > >原創:PHP利用session,實現用戶登錄後回到點擊的頁面(本文以TP為例)

原創:PHP利用session,實現用戶登錄後回到點擊的頁面(本文以TP為例)

con gop query php代碼 自帶 ttr strpos 手機 roo

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為例)