Javascript PHP AJAX重置$\u会话变量
我正在进行简单的php ajax聊天,不知何故我的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
$\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()">