在文件加载之前初始化会话变量

时间:2015-07-07 19:18:26

标签: php ajax session

这是我的 login.php 文件中存在的代码的一小部分,该文件是用于登录我的系统的表单(用户名 - 密码):

<script type="text/javascript"> 
      $.ajax({
        method:"POST",
        url:"check_read_status.php"
      });
 </script>
<?php
    include "index.php";
    exit;
?>

而check_read_status.php的代码如下:

<?php  
session_start();
if (isset($_SESSION['valid_user']))
{
  $db=new mysqli('localhost', 'root','','apeirosto');         
  if (!($db->connect_errno)) 
  {
     $usermail=$_SESSION['valid_user'];
     $query="SELECT * FROM INBOX WHERE receiver='$usermail' AND status_read=0";
     $result=$db->query($query);
     if ($result->num_rows>=1)
       $_SESSION['unread_messages']=1;
     else
       $_SESSION['unread_messages']=0;    
  }
}
?>

我的问题是我想将会话变量 $ _ SESSION ['unread_messages'] 传递给index.php( index.php )将创建新的DOM,因为login.php文件的HTML部分将不会被执行(因为退出命令)。但是,由于AJAX的异步特性,index.php不会立即获知上述会话变量的值。我已经尝试了很多但是我没有成功地找到推迟执行 include“index.php”; 的方法。你有什么好主意吗?

谢谢

1 个答案:

答案 0 :(得分:0)

问题是PHP代码在Javascript代码执行开始之前完成执行。解决方案是不使用AJAX并在login.php中嵌入check_read_status.php的代码。就这么简单!!