如果(session)用户已登录,如何使用flush()?
我尝试使用下面的代码来检查用户登录时的通知,但有一个问题:如果我使用session,Flush不工作。to
= '$iam' and $iam is user id.
<?php
session_start();//Start session
ob_start();
include("../system/connect.php");
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");//It means don't use session, so it's almost oposite of session_start();
if(isset($_SESSION['user'])){
$iam=$userRow['user_id'];
$id=int($_GET['id']);
if($id>=1){
$result = mysqli_query($con, "SELECT * FROM `notification` WHERE `to` = '$iam' `seen` = '1' order by `id`");
$c=mysqli_num_rows($result);
echo "data: " . $c . "\n\n";// Send it in a message
flush();
}
}
?>
还有一个更简单的方法,也是太有可能了:我可以用$_GET['i']作为用户id,但这样一来,用户就可以计算另一个用户的通知,这只是一个bug。
include("../system/connect.php"); header("Content-Type: text/event-stream"); header("Cache-Control: no-cache"); $iam=int($_GET['i']); $id=int($_GET['id']); if($id>=1){ $result = mysqli_query($con, "SELECT * FROM `notification` WHERE `seen` = '1' order by `id`"); $c=mysqli_num_rows($result); echo "data: " . $c . "\n\n"; // Send it in a message flush(); } ?>
总之,我需要第一种方式的正确形式,请帮我。
已解决
<?php
include("../system/connect.php");
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
session_start();
ob_start();
ob_flush();
if(isset($_SESSION['user'])){
$iam=$_SESSION['user'];//Query replaced with SESSION
$result = mysqli_query($con, "SELECT * FROM `notification` WHERE `to` = '$iam' and `seen` = '1' order by `id`");
$c=mysqli_num_rows($result);
echo "data: " . $c . "\n\n";// Send it in a message
flush();
}
?>