Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP AJAX重置$\u会话变量_Javascript_Php_Jquery_Ajax_Session - Fatal编程技术网

Javascript PHP AJAX重置$\u会话变量

Javascript PHP AJAX重置$\u会话变量,javascript,php,jquery,ajax,session,Javascript,Php,Jquery,Ajax,Session,我正在进行简单的php ajax聊天,不知何故我的$\u会话['currentNum']不稳定。 第一个php脚本checkMessages.php正在检查mysql数据库(raspberry pi-raspbian os)中的更改 下一个php脚本saveMessage.php将从用户发送的消息保存到数据库 header('Content-type: text/html; charset=utf-8'); session_start(); ini_set('display_error

我正在进行简单的php ajax聊天,不知何故我的
$\u会话['currentNum']
不稳定。 第一个php脚本
checkMessages.php
正在检查mysql数据库(raspberry pi-raspbian os)中的更改

下一个php脚本
saveMessage.php
将从用户发送的消息保存到数据库

header('Content-type: text/html; charset=utf-8');

    session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);

$dbhost = 'localhost:3036';
$dbuser = '*********';
$dbpass = '************';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
  die('Could not connect: ' . mysql_error());
}

if(!mysql_select_db('forum')){
    die("Database does not exist " . mysql_error());
}
mysql_query("SET CHARACTER SET utf8");


$message = test($_POST['message']);


if($message !== ""){
    $logged = $_SESSION['login_user'];
    $idOfMessageWriter;

    $sql = "SELECT id_user FROM users WHERE email = '$logged'";
    $query = mysql_query($sql, $conn);

    if (!$query) {
        die("Could not successfully run query ($sql) from DB: " . mysql_error());
    }
    while( $row = mysql_fetch_assoc($query, MYSQL_ASSOC)){
        $idOfMessageWriter = $row['id_user'];
    }


    $sql = "INSERT INTO message (value, user_id) VALUES ('$message','$idOfMessageWriter')";
    if(!mysql_query($sql, $conn)){
        die("Sprava neuložená" . mysql_error());
    }
}
function test($data){
    $data = trim($data);
    $data = stripcslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}



mysql_close($conn);
接下来是javaScript代码,JQuery的ajax在其中调用脚本

  $( document ).ready(function(){
    setInterval(check, 2000);

});

function check(){

    $.ajax({
        type:'GET',
        url:'checkMessages.php',
        dataType:'json',
        success: function(result){
            $("#messageBox").append(result);

            for(var i in result){
                $("#messageBox").append(result[i].email + ": " + result[i].mesgVal + "<br>");
            }
        },
        error: function(/*jqXHR, exception"*/ts){
            //  $('#sendInfo').html("Error check " + ts.responseText);
            }   
    });
}

function sendData(){

        var textData = $('#chatText').val();
        console.log(textData);
        $.ajax({
            type:'POST',
            url:'saveMessage.php',
            data: {
                message:textData
            },
            dataType: 'text',
            success: function(data){
                $('#sendInfo').html(data);
            },
            error: function(/*jqXHR, exception"*/ts){
                $('#sendInfo').html("Error send" + ts.responseText);
            }       
        });
}
我的问题是。当ajax和
checkMessages.php
检查数据库中的更改时,它可以工作
$\u会话['currentNum']
已设置。但是当我发布消息时(
saveMessage.php
被调用)
$\u会话['currentNum']
会取消设置,我不知道为什么。有什么想法吗

更新。。问题不在会议中。在
checkMessages.php
中,第二次选择不正确。正确的是

选择您的姓名、姓氏、电子邮件、m.id\u消息、m.value、m.ts 来自用户u,消息m 其中m.user\u id=u.id\u user 和m.id_消息>“$currentNum” 按m.id_消息ASC订购


您是否使用
session_start()启动会话?[]是的。。我愿意。。。但是当我发布消息时,如果您在每个文件的开头打开会话,那么$\u SESSION['currentNum']就会重置。请不要使用
mysql.*
函数。他们已经被弃用超过3年了,现在尝试在每个文件的第一行调用
session\u start()
。。。如果在之前调用
header()
,则在启动会话之前输出文本,这可能导致该故障。。。
  $( document ).ready(function(){
    setInterval(check, 2000);

});

function check(){

    $.ajax({
        type:'GET',
        url:'checkMessages.php',
        dataType:'json',
        success: function(result){
            $("#messageBox").append(result);

            for(var i in result){
                $("#messageBox").append(result[i].email + ": " + result[i].mesgVal + "<br>");
            }
        },
        error: function(/*jqXHR, exception"*/ts){
            //  $('#sendInfo').html("Error check " + ts.responseText);
            }   
    });
}

function sendData(){

        var textData = $('#chatText').val();
        console.log(textData);
        $.ajax({
            type:'POST',
            url:'saveMessage.php',
            data: {
                message:textData
            },
            dataType: 'text',
            success: function(data){
                $('#sendInfo').html(data);
            },
            error: function(/*jqXHR, exception"*/ts){
                $('#sendInfo').html("Error send" + ts.responseText);
            }       
        });
}
<input type="button" name="sendChatText" id="sendChatText" value="Odoslať" onClick="sendData()">