码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-05-15 17:26:33      阅读:556      评论:0      收藏:0      [点我收藏+]

标签:pos   val   跳转   strpos   同名   serialize   password   post   pat   

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

标签:pos   val   跳转   strpos   同名   serialize   password   post   pat   

原文地址:http://www.cnblogs.com/xuzhengzong/p/6857259.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!