Как использовать flu sh (), если (сессия) пользователь вошел в систему? - Уведомление в реальном времени - PullRequest
0 голосов
/ 23 апреля 2020

Как использовать flu sh (), если пользователь (сеанс) вошел в систему?

Я пытался использовать следующий код для проверки уведомлений, когда пользователь вошел в систему, но существует проблема: Flu sh не работает, если я использую сеанс Не могу получить запрос без сеанса, потому что to = '$ iam' и $ iam - это идентификатор пользователя

<?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'] в качестве идентификатора пользователя, но, кстати, пользователь сможет считать уведомления других пользователей, это просто ошибка

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();
}

?>

В заключение, мне нужен первый способ в правильной форме, помогите мне, пожалуйста

1 Ответ

0 голосов
/ 24 апреля 2020

Решено

<?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();
}

?>   
...