【问题标题】:Initialise session variable before file loading在文件加载之前初始化会话变量
【发布时间】:2015-07-07 19:18:26
【问题描述】:

这是我的 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 部分不会被执行(因为 exit 命令)。但是,由于 AJAX 的异步特性,index.php 不会立即获知上述会话变量的值。我已经尝试了很多,但我没有成功找到推迟执行 include "index.php"; 的方法。你有什么好主意吗?

谢谢

【问题讨论】:

  • 任何会话变量都可以立即用于 index.php,因为它可以访问会话。至于延迟,你查过 JavaScript deferred 的吗?

标签: php ajax session


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-10-14
    • 1970-01-01
    • 2018-10-09
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多