ajax 或session方法判断页面是否登录,并跳转至相应页面

方法一:讲述了jQuery基于ajax实现页面加载后检查用户登录状态的方法。分享给大家供大家参考,具体如下:

拥有会员功能的网站,如果会员已经登录,那么要显示相应的登录状态,而且这种显示的需求是在网站的每个页面都有的(目前国内网站貌似都是这么做的,还没有见过其他形式的状态显示方式),这样,在打开一个新的页面时就要知道这个会员是否已经登录,需要判断登录的状态。

1、解决方案。

为了能够实现在每一个页面判断会员登录状态的功能,我采用了页面时通过ajax传递参数通过后端返回的登录状态结果进行判断,当然,这种方式实现的前提是登录状态在后端可以保持或者能够查询到并且不利用页面向后端发送特别参数。

2、代码部分。

(1)html部分

?

1

<div id="state_content"></div>

(2)jquery部分

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

jQuery(document).ready(function ()

{

  getUserData();

});

function getUserData()

{

  var Option =

   {

    url: encodeURI('/Handler/AuthAccounts.ashx?action=getloginstate'),

    type: "post",

    dataType: 'text',

    cache: false, //设置为 false 将不会从浏览器缓存中加载请求信息。

    async: true, //(默认: true),所有请求均为异步请求。发送同步请求,请将此选项设置为 false。同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

    timeout: 150000, //设置请求超时时间(毫秒)。此设置将覆盖全局设置。

    error: function ()

    {

    },

    success: function (data, textStatus)

    {

     if (data == null || data == undefined)

     {

      return false;

     }

     jsondata = eval('(' + data + ')');

     if (jsondata.state == "success")

     {

      var weburl = '<a class="username">欢迎你,' + jsondata.message.split('|')[1] + '</a><a class="go_out" onclick="ExitLoginState()">退出</a>';

      $("#state_content").html(weburl); //内容

     }

     else

     {

      var textList = '<a href="/Login/index.shtml" rel="external nofollow" rel="external nofollow" >【登录】</a><a href="/Register/index.shtml" rel="external nofollow" rel="external nofollow" >【注册】</a>';

      $("#state_content").html(textList); //内容

     }

    },

    beforeSend: function ()

    {

    }

   };

  jQuery.ajax(Option);

  return false;

}

function ExitLoginState()

{

  var Option =

   {

    url: encodeURI('/Handler/AuthAccounts.ashx?action=exitloginstate'),

    type: "post",

    dataType: 'text',

    cache: false, //设置为 false 将不会从浏览器缓存中加载请求信息。

    async: true, //(默认: true),所有请求均为异步请求。发送同步请求,请将此选项设置为 false。同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

    timeout: 150000, //设置请求超时时间(毫秒)。此设置将覆盖全局设置。

    error: function ()

    {

    },

    success: function (data, textStatus)

    {

     if (data == null || data == undefined)

     {

      return false;

     }

     jsondata = eval('(' + data + ')');

     if (jsondata.state == "success")

     {

      alert("已经退出");

      var textList = '<a href="/Login/index.shtml" rel="external nofollow" rel="external nofollow" >【登录】</a><a href="/Register/index.shtml" rel="external nofollow" rel="external nofollow" >【注册】</a>';

      $("#state_content").html(textList); //内容

     }

    },

    beforeSend: function ()

    {

    }

   };

  jQuery.ajax(Option);

  return false;

}

 

 

方法二:session

 

方法二讲述了js判断登录与否并确定跳转页面的方法。分享给大家供大家参考。具体如下:

使用session存储,确定用户是否登录,从而确定页面跳转至哪个页面。

判断本地有无customerID:

function jumpTo(p, url) { 
   var customerId=sessionStorage.customerId; 
   if (customerId == undefined) { 
     p.attr("href", "page/Login/login.html"); 
<span style="white-space:pre">  </span>} else { 
      p.attr("href", url); 
    } 
} 
 function infoJumpTo() { 
   var $info = $("#info"); 
   jumpTo($info, "http://localhost/page/AmountAscension/amountAscension.html"); 
} 
 function starJumpTo() { 
   var $star = $("#star"); 
   jumpTo($star, "http://localhost/page/MyAccount/myAccount.html"); 
 }

html中,相应的a标签中,写οnclick="infoJumpTo"等就可以了。

但登录页面的customerID是如何存储到本地的session中的呢?

function confirm(){ 
  var tel=$tel.val();//获取页面中登录名和密码 
  var pwd=$pwd.val(); 
  if(tel==""|| pwd==""){//判断两个均不为空(其他判断规则在其输入时已经判断) 
    alert("手机号密码均不能为空!") 
    return false; 
  }else{//以上均符合要求,则调用登录esb接口 
     $.ajax({ 
       url:config.baseServerUrl + '/account/login',//相对应的esb接口地址
       type:'post',  
       data:{mobile:tel,password:pwd},//向服务器(接口)传递的参数
       success:function(data){//服务器(接口)返回来的数据
         if(data.success){//如果返回来的信息说明提交的信息为正确的 
           var customerId = data.attr.customerInfo.id;//将数据中用户信息的ID赋值给变量 
           sessionStorage.customerId = customerId;//将变量存储到本地sessionStorage中,并且value为customerID 
           window.location.href='http://localhost/index.html';//正确登录后页面跳转至 
         } 
         else{//如果返回来的信息说明提供的信息为错误的 
           if(tel != data.tel){//判断是用户名还是密码错误,提示相应信息 
             alert(data.message); 
             $tel.val(""); 
             $pwd.val(""); 
             return false; 
            } 
            if(pwd != data.pwd){ 
             alert(data.message); 
             $pwd.val(""); 
             return false; 
            } 
         } 
       } 
    }) 
  } 
}

登录页面,人们一般习惯输完信息后,直接点击enter免除手动点击登录按钮,则js代码如下:

//判断是否敲击了Enter键 
$(document).keyup(function(event){ 
    if(event.keyCode ==13){ 
      $("#login").trigger("click"); 
    } 
});
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Ajax是一种用于创建动态Web应用程序的Web开发技术。在使用Ajax时,可以使用session完成强制登录。下面是一个简单的示例,演示如何使用Ajaxsession实现强制登录。 HTML代码: ```html <!DOCTYPE html> <html> <head> <title>Ajax Session Demo</title> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script> $(document).ready(function() { // 检查用户是否登录 $.ajax({ url: "check_login.php", success: function(response) { // 如果用户没有登录,则跳转登录页面 if (response == "false") { window.location.href = "login.php"; } } }); }); </script> </head> <body> <h1>Ajax Session Demo</h1> <p>这是一个演示如何使用Ajaxsession实现强制登录的示例。</p> </body> </html> ``` 在上面的HTML代码中,我们使用Ajax向服务器发送一个请求,检查用户是否已经登录。如果用户没有登录,则跳转登录页面。 PHP代码: ```php <?php session_start(); if (isset($_SESSION["username"])) { echo "true"; } else { echo "false"; } ?> ``` 在上面的PHP代码中,我们使用session判断用户是否已经登录。如果用户已经登录,则返回true,否则返回false。 当用户访问HTML页面时,JavaScript代码会自动向check_login.php发送一个Ajax请求。如果用户已经登录,则返回true,否则返回false。如果返回false,则JavaScript代码将自动跳转登录页面。这样就可以实现强制登录了。 需要注意的是,为了能够使用session,必须在每个PHP文件的开头调用session_start()函数。这样才能够在不同的PHP文件中共享session
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值