原創:PHP利用session,實現用戶登錄後回到點擊的頁面(本文以TP為例)
阿新 • • 發佈:2017-05-15
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為例)