无法访问包含文件ajax中的会话


cannot access session in include file ajax

我有一个类似这样的Ajax脚本,其中包括一个要处理的文件getvar.php:

<script type="text/javascript">
    $(document).ready(function() {
        $(".jenisdata").change(function() {
            var jenisdata =$(this).val();
            var dataString = 'jenisdata='+jenisdata;
            $.ajax({
                type: "POST",
                url: "includes/analisis/getvar.php",
                data: dataString,
                cache: false,
                success: function(html) {
                    $(".variabel").html(html);
                } 
            });
        });
    });
</script>

获取Ajax传递的变量的getvar.php如下所示:

<?php
include ('../../../config/config.php');
$id_user=$_SESSION['id_user'];
if($_POST['jenisdata']) {
    $id= $_POST['jenisdata'];
    $query      = "SELECT var.id_var, var.nama_var
FROM var, hak_akses
WHERE var.id_var = hak_akses.id_var
AND id_user ='$id_user' AND id_data ='$id'";
    $results    = mysql_query( $query);
    $total      = mysql_num_rows($results);
    if ($total >0) {
        while ($rows = mysql_fetch_assoc($results)) {
                echo '<option     value="'.$rows['id_var'].'">'.$rows['nama_var'].'</option>';
        }
    } else {
        echo '<option value="" selected="selected">Data variabel belum diisi     dijenisdata Ini</option>';
    }
}
?>

此处无法读取变量$_SESSION['id_user']。问题出在哪里?如何在包含Ajax的文件中获取会话?

您必须在任何时候使用会话变量时包含session_start();

就像这样…

<?php
session_start();
include ('../../../config/config.php');

//rest of your code
?>

也就是说……假设您在较早的时候设置了$_SESSION['id_user'],并且它实际上存在。。。

尝试回显Session变量并查看返回的内容,但当然,首先要确保像KyleK所说的那样启动会话。此外,如果设置了会话变量,进行验证也不会有什么害处。