如果JS会话变量为null,如何避免500内部服务器错误

How to avoid 500 Internal Server Error if a JS session variable null

本文关键字:何避免 内部 服务器 错误 会话 JS 变量 null 如果      更新时间:2023-09-26

我创建这个脚本是为了从各种web源读取。这个脚本更新所有通知(邮件、帖子、朋友)和他们自己的下拉窗口的详细信息,还一起更新两侧的更新栏。我在最上面的manu.php页面中使用了这个脚本。

此脚本适用于登录用户。

现在我用JavaScript var uid = '<? echo $session->id; ?>';传递一个会话id变量,所以当用户没有登录时,我的浏览器控制台会显示500 Internal Server Error,因为这里会话没有id,所以它传递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();
});

服务器upandside.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);
}
?>

您的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数组之前添加验证。