在MySQL中存储PHP会话id以进行AJAX授权?
不太清楚如何使用session\u id或任何$\u session变量授权PHP AJAX调用 是否应该在登录时将其存储在数据库中,并在每次AJAX调用时根据$\u会话存储进行引用 我知道这些问题可能已经被无限地讨论过了,但我似乎找不到一个明确的答案 提前谢谢 启示录在MySQL中存储PHP会话id以进行AJAX授权?,php,mysql,ajax,authorization,sessionid,Php,Mysql,Ajax,Authorization,Sessionid,不太清楚如何使用session\u id或任何$\u session变量授权PHP AJAX调用 是否应该在登录时将其存储在数据库中,并在每次AJAX调用时根据$\u会话存储进行引用 我知道这些问题可能已经被无限地讨论过了,但我似乎找不到一个明确的答案 提前谢谢 启示录 哇,所以授权仅限于是否有会话?吓人的。让我想知道.net的web.config的deny=“?”是否就是这么做的。谢谢大家的帮助 会话始终存在,因为会话数据是服务器端的。只要他们拥有授予他们该会话的cookie,他们就被视为授权
哇,所以授权仅限于是否有会话?吓人的。让我想知道.net的web.config的deny=“?”是否就是这么做的。谢谢大家的帮助 会话始终存在,因为会话数据是服务器端的。只要他们拥有授予他们该会话的cookie,他们就被视为授权用户 在通过AJAX调用文件的开头,只需执行以下操作:
<?php
session_start();
if(!isset($_SESSION['id'])) {
exit;
}
?>
除非有活动会话,否则在该点之后不会执行任何操作
您也可以阻止人们直接访问您的AJAX文件,只需添加以下内容:
<?php
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) OR ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest')) {
exit;
}
?>
有人仍然可以解决这个问题,但总比没有好。首先,感谢您的帮助。但这不仅仅是一个活动会话吗?难道我们不至少需要知道我们在和谁说话来防止劫机吗?否则,我不理解会话id的意义。会话存储在服务器端,但浏览器包含一个cookie,授权它们访问该会话。如果只允许有效用户创建活动会话,则永远不会有无效会话。会话数据不能由用户操作。我弄不懂的是如何授权对php文件的ajax调用仅限于登录用户。php如何知道session_id X连接到用户Y。我似乎错过了确保session_id X不属于用户Z或任何其他用户的步骤。再次感谢您我文章中的第二段代码仅限制对AJAX请求的访问。第一段代码检查会话,如果会话未登录,AJAX请求将失败。一旦您确认他们有一个会话ID,该ID应该是他们在数据库中的主键,您就可以使用它来限制他们在AJAX调用期间可以做什么或不能做什么:mysql\u query(“updateusers SET name='John'WHERE ID='$\u session[ID]'LIMIT 1”)。那么光靠课程本身是不够的?没有办法单独和他们核对吗?将会话id存储到数据库中以确保用户与id匹配是正确的/最佳做法?tyvmAjax-Auth?然后,您需要确定会话是否存在,然后根据此响应,您将向
javascript
发送JSON
响应。然后,在每个请求上,您都会发送http
请求,以查看该请求是否具有适当的值以显示为“authorized”。没那么复杂。你不需要session\u id()
。真正地