Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中存储PHP会话id以进行AJAX授权?_Php_Mysql_Ajax_Authorization_Sessionid - Fatal编程技术网

在MySQL中存储PHP会话id以进行AJAX授权?

在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,他们就被视为授权

不太清楚如何使用session\u id或任何$\u session变量授权PHP AJAX调用

是否应该在登录时将其存储在数据库中,并在每次AJAX调用时根据$\u会话存储进行引用

我知道这些问题可能已经被无限地讨论过了,但我似乎找不到一个明确的答案

提前谢谢

启示录


哇,所以授权仅限于是否有会话?吓人的。让我想知道.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()
。真正地