使用JSON和AJAX的PHP会话

时间:2012-10-31 10:54:16

标签: php jquery ajax json session

所以,我正在尝试为Web应用程序创建一个登录功能。

登录由JSON接口处理。用户输入已检查的用户名和密码,如果它们正确,则JSON接口会发回一个令牌。我猜这是会议开始的地方。

<script>  
  $(document).ready(function(){
   $("#loginForm").validate({
    rules: {
      username: {
        required: true,
        digits: true
      },
      password: {
        required: true
      }
    },

    submitHandler: function(form) {
      data = JSON.stringify({
        "jsonrpc": "2.0",
        "method": "login",
        "params": {
          "params": {
            "username": $('#username').val(),
            "password":  $('#password').val()
          }
        }
      });

      $.ajax({
        url:"http://domain.local:1234/trip",
        type:"POST",
        crossDomain: true,
        dataType: "json",
        data : data,
        headers: {
          'Content-Type': "application/json; charset=utf-8"
        },
        success: function(data){
          if(data.result.token != null) {
            window.location.href = "functions/login.php?token=" + data.result.token;
          }

          else $("#result").html("Invalid username and/or password."); 
        }
      });
      return false;
      }
    });
  });
</script>

我的login.php是应该进行会话处理的地方(对吧?)。如果可能的话,我不想使用cookies。到目前为止,这是我唯一得到的东西(这是我第一次参加会议)。

<?php
  session_start();
  $token = $_POST['token'];
?>

当用户登录时,我需要将它们发送到overview.php。如果有令牌,是应该从login.php文件中完成,还是应该从index.php而不是前往login.php完成?

另外,如何检查用户访问的网页上是否有活动会话?我需要在每个页面上使用令牌来对JSON接口进行新的调用。

最后,当用户需要注销时,我想我会将它们转到logout.php或类似的东西并结束那里的会话?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

这些是您可以用于简单(非安全)登录系统的基本设置。

的login.php:

<?php
    session_start();
    if(isset($_GET['token']) && !empty($_GET['token']))
        $_SESSION['token']== $_GET['token'];

    if(isset($_SESSION['token'] && [OTHER CHECKS YOU MIGHT WANT TO DO TO SEE WETHER HE IS LOGGED IN]){
        header('Location: overview.php');
    }
?>

logout.php

<?php
    session_start();
    unset($_SESSION['token']);
    //redirect to desired page
?>

同样在每个页面上,您只想向登录用户显示,您需要添加session_start();并检查是否仍然使用$_SESSION['token']登录。如果他不再登录,您需要将他重定向到其他地方。