我有一个只在AJAX调用上执行的PHP文件(approvals.php)。它有一个postgresql查询,用于搜索表并使用客户ID,该客户ID被设置为会话变量。问题是,似乎我无法在此文件中访问此会话变量。我的查询如下:
$query = "SELECT merchant_id FROM ndovu_merchant_users WHERE customer_id={$_SESSION['customer_id']}";
$result = pg_query($query);
我试图回应会话变量$_SESSION['customer_id']
,但没有。但是,在将固定值传递给查询时,它会返回结果。
答案 0 :(得分:1)
在你的情况下,我会检查会话是否设置在第一位。
//this should be put at the header of the page
session_start();
if(isset($_SESSION['customer_id']) && !empty($_SESSION['customer_id'])){
echo $_SESSION['customer_id'];
}else{
echo 'session is not set';
}
答案 1 :(得分:0)
您需要将session_start();
放在使用它的代码部分之上;页面顶部通常是放置它的最佳位置。
另外,应该注意;通过传入未转义的数据,你可能会遇到一个很大的安全漏洞。
如果可能,你应该考虑使用准备好的陈述;或者至少逃避你的投入。
答案 2 :(得分:0)
当ajax请求调用脚本时,不会加入用户会话。 php要求获取会话数据的会话令牌存储在会话cookie内的客户端(用户)中。 你可以在这里阅读更多 https://stackoverflow.com/a/1535712/3922692
只需在ajax请求中使用GET或POST传递用户ID。
没有提供足够的代码,但如果你真的需要从会话中获取id,你可以使用iframe(不推荐),处理获取数据服务器端并将其输出到iframe中。