datatables/jquery/session变量/登录表单

datatables/jquery/session变量/登录表单,datatables,Datatables,情景: 1) login.php验证用户名和密码,并使用用户id设置会话 $_SESSION['id'] = $id; 2) datatables/jquery调用action.php文件,用数据填充表 "ajax":{ url:"action.php", type:"POST", data:{action:'listTable'}, dataType:"json" }, 3) php文件调用函数listTable() 4) listT

情景:

1) login.php验证用户名和密码,并使用用户id设置会话

$_SESSION['id'] = $id;
2) datatables/jquery调用action.php文件,用数据填充表

"ajax":{
      url:"action.php",
      type:"POST",
      data:{action:'listTable'},
      dataType:"json"
    },
3) php文件调用函数listTable()

4) listTable函数(table.php)返回降落在datatable中的所有数据

$output = array(
      "draw"        =>  intval($_POST["draw"]),
      "recordsTotal"    =>  $numRows,
      "recordsFiltered"   =>  $numRows,
      "data"          =>  $tableData
    );
    echo json_encode($output);
5) 使用sql命令选择数据并将其放入tableData变量中

在那种情况下一切正常

想法:

我想在sqlselect命令中访问会话变量。这是不可能的,因为jquery/action.php api。这些是完全不同的文件,无法访问该会话。可以在隐藏的公式字段中设置用户id,但这并不安全,也不容易操作。cookie文件也是用户可编辑的。此外,Javascript无法读取服务器端会话变量

问题:

在该场景中,我如何使用/访问该php会话变量

更新:

这也不起作用:/

overview.php

$userID = $_SESSION['id'];
data.js

"ajax":{
      url:"action.php",
      type:"POST",
      data:{userID:userID, action:'listTable'},
      dataType:"json"
    },
table.php

$userID = $_POST["userID"];

我真的不理解这里的问题,因为即使ajax调用php文件,
$\u SESSION
变量在php文件中也是可用的。在您从同一浏览器调用AJAX调用并且AJAX调用包含cookie(其中一个cookie将是会话ID)之前,您将能够在PHP端的SQL查询中访问您的用户ID,而无需将用户ID传递给javascript/jquery。 正如您在login.php中所写:

$_SESSION['id'] = $id;
在SQL命令所在的table.php中:

echo isset($_SESSION['id']) ? "I'm existing!" : "I'm NOT existing!";

如果用户登录,它将打印“我存在!”,如果用户未登录,它将打印“我不存在!”。在服务器从浏览器(cookie)获取会话ID之前,php文件中的所有$\u会话变量都是可用的。如果您调用同一域,Cookie将自动发送。

我已经尝试访问会话变量,但它不起作用。另外,echo命令也不起作用,因为我没有直接包含table.php文件。这将是一个愚蠢的问题,但是在设置值和尝试读取值之前,您是否调用了
session\u start()
?(每个请求只需调用一次,即在文件开头)。无论你做什么,Echo都会工作。错误的情况下,它会扰乱您的响应,例如
var_dump()
也会这样做。
session_start()$userID=$\u会话['id']//echo isset($\u会话['id'])?“我存在!”:“我不存在!”//变量转储($userID)//回声“测试”var_dump和两个echo命令导致以下错误:DataTables警告:table id=listTable-无效JSON响应。有关此错误的更多信息,请参见“是”,如果查看浏览器的网络日志,您将看到这些命令打印的消息,然后是JSON消息。这就是为什么会得到无效的JSON响应。因为DataTables只需要JSON。但是,您仍然可以通过使用这些方法进行调试,并查看浏览器的“网络”选项卡(忽略错误消息),在该选项卡中,您可以显式地看到来自服务器的响应。谢谢您的帮助。我通过在table.php类中实现登录过程解决了这个问题。另一个单独的登录文件不起作用,因为我无法访问会话。
echo isset($_SESSION['id']) ? "I'm existing!" : "I'm NOT existing!";