php - PHP 中的 session 与 JSON 和 AJAX

标签 php jquery ajax json session

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

登录由 JSON 接口(interface)处理。用户输入用户名和密码并进行检查,如果正确,JSON 接口(interface)会发回一个 token 。我想这就是 session 应该开始的地方。

<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是 session 处理应该发生的地方(对吗?)。如果可能的话,我不想使用cookie。到目前为止,这是我唯一拥有的东西(这是我第一次尝试 session )。

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

当用户登录时,我需要将它们发送到overview.php。当存在 token 时,应该从 login.php 文件完成此操作,还是应该从 index.php 完成此操作,而不是前往 login.php?

此外,如何检查用户访问的页面上是否有事件 session ?我需要每个页面上的 token 才能对 JSON 接口(interface)进行新调用。

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

非常感谢您的帮助!

最佳答案

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

登录.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');
    }
?>

注销.php

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

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

关于php - PHP 中的 session 与 JSON 和 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156260/

相关文章:

作为字符串的 Javascript 网络错误

php - mysql select something 因为 where is not null

javascript - 如何强制 jQuery 向服务器发出 GET 请求以刷新缓存资源

javascript - 使用 Javascript 查询 Google Distance Matrix API

javascript - 如何使 e.target 的 HTML 标签不可点击?

javascript - jQuery 无法将数组作为 JSON 内容类型发送

php - 数据库连接和功能?

PHP 获取 HTTP 400 响应的内容

php - 如何在mysqli prepare语句查询中使用 'or'

javascript - Ajax 在 </body> 之前尽快请求,还是在文档准备好时?