Как избежать 500 внутренних ошибок сервера, если переменная сеанса JS пусто

Я создал этот скрипт для чтения из различных веб-источников. Этот скрипт обновляет все уведомления (почта, почта, друзья) и их собственные детали раскрывающегося окна, а также две боковые панели обновления вместе. Я использовал этот скрипт на своей главной странице manu.php.

Этот скрипт хорошо работает для авторизоваться пользователь.

Теперь я передаю переменную id сессии с помощью JavaScript var uid = '<? echo $session->id; ?>'; Поэтому, когда пользователь не вошел в систему, в консоли браузера отображается 500 Internal Server Error потому что здесь у сеанса нет идентификатора, поэтому он передает uid = »

Как мне преодолеть эту проблему?

Вот мой скрипт JavaScript:

var uid = '<? echo $session->id; ?>';
function addmailno(type, msg){
//Do something for display mail/friend/post notification
}

function addmailup(type, msg){
//Do something for display mail/post/friend drop-down.
}

function addside(type, msg){
//Do something for display all friend/new post in side bar.
}

function waitFormailno(){
$.ajax({
type: "GET",
url: "serverforupandside.php",
cache: false,
async : false,
dataType : 'json',
data: "uid="+ uid,
timeout:15000,
success: function(data){
addmailno("MyDivClass", data);
addmailup("MyDivClass", data);
addside("MyDivId", data);
setTimeout(waitFormailno, 15000);
},
error: function(){
setTimeout(waitFormailno, 15000);
}
});
}

$(document).ready(function(){
waitFormailno();
});

serverforupandside.php

<?php
include("db.php");
include_once("mysession.php");

while (true) {
if($_GET['uid']){
global $dbh;

//All php query is here one after one

//Output is here by data
$data = array();

$data['upmail'] = $upmail;
$data['upfollow'] = $upfollow;
$data['uppost'] = $uppost;
// etc all

if (!empty($data)) {
echo json_encode($data);
flush();
mysqli_close($dbh);
}
}
mysqli_close($dbh);
}
?>

0

Решение

Ваш Javascript код следует изменить на:

function waitFormailno(){
$.ajax({
type: "GET",
url: "serverforupandside.php",
cache: false,
async : false,
dataType : 'json',
data: "uid="+ uid,
timeout:15000,
success: function(data){
addmailno("MyDivClass", data);
addmailup("MyDivClass", data);
addside("MyDivId", data);
}
});
}

$(document).ready(function(){
setInterval(waitFormailno, 15000); // calls a function or evaluates an expression at specified intervals (in milliseconds)
});

PHP-код:

<?php
include("db.php");
include_once("mysession.php");

if (!empty($_GET['uid'])) {
global $dbh;

//All php query is here one after one

//Output is here by data
$data = array();

$data['upmail']   = $upmail;
$data['upfollow'] = $upfollow;
$data['uppost']   = $uppost;
// etc all

if (!empty($data)) {
echo json_encode($data);
}}

Кроме того, вы должны добавить проверки перед заполнением $data массив.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]