PHP会话变量不可用

时间:2014-10-10 08:46:45

标签: php postgresql session

我有一个只在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'],但没有。但是,在将固定值传递给查询时,它会返回结果。

3 个答案:

答案 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中。