PHP AJAX重置$ _SESSION变量

时间:2015-08-02 18:03:45

标签: javascript php jquery ajax session

我正在制作简单的php ajax聊天,不知怎的,我的call_wrapper正在取消。 第一个php脚本$_SESSION['currentNum']正在检查mysql数据库(raspberry pi-raspbian os)中的更改。

checkMessages.php

下一个php脚本header('Content-type: application/json; charset=utf-8'); session_start(); class Message{ public $name; public $surname; public $email; public $mesgVal; public $msgTime; } $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"); $mesgList = array(); //first time when user is logged if(!isset($_SESSION['currentNum'])){ $sql = "SELECT * FROM ( SELECT u.name, u.surname, u.email,m.id_message, m.value, m.ts FROM users u, message m WHERE m.user_id = u.id_user ORDER BY m.id_message DESC LIMIT 10 ) q ORDER BY q.ts ASC;"; $query = mysql_query($sql, $conn); while($row = mysql_fetch_assoc($query, MYSQL_ASSOC)){ $item = new Message(); $item->name = $row['name']; $item->surname = $row['surname']; $item->email = $row['email']; $item->mesgVal = $row['value']; $item->msgTime = $row['ts']; $mesgList[] = $item; $_SESSION['currentNum'] = $row['id_message']; } $currentNum = $_SESSION['currentNum']; //rest of time }else{ $currentNum = $_SESSION['currentNum']; $sql = "SELECT u.name, u.surname, u.email, m.value, m.ts FROM users u, message m WHERE m.user_id = u.id_user AND m.id_message > '$currentNum' ORDER BY m.id_message ASC"; $query = mysql_query($sql, $conn); if(mysql_num_rows($query) > 0){ //mysql_data_seek($query, 1); while($row = mysql_fetch_assoc($query, MYSQL_ASSOC)){ $item = new Message(); $item->name = $row['name']; $item->surname = $row['surname']; $item->email = $row['email']; $item->value = $row['value']; $item->msgTime = $row['ts']; $mesgList[] = $item; $_SESSION['currentNum'] = $row['id_message']; } } } echo json_encode($mesgList); mysql_close($conn); 正在将用户发布的消息保存到数据库。

saveMessage.php

接下来是JQuery的ajax调用脚本的javaScript代码。

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

从html doc调用函数 $( 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); } }); }

sendData()

我的问题是。当ajax和<input type="button" name="sendChatText" id="sendChatText" value="Odoslať" onClick="sendData()"> 正在检查数据库中的更改时,它会设置checkMessages.php。但是当我发布消息($_SESSION['currentNum']被调用)saveMessage.php取消设置时,我不知道为什么。有什么想法吗?

更新..问题不在会话中。在$_SESSION['currentNum']中,第二个SELECT不正确。正确是

  

SELECT u.name,u.surname,u.email,m.id_message,m.value,m.ts                   来自用户u,消息m                   WHERE m.user_id = u.id_user                   AND m.id_message&gt; '$ currentNum'                   ORDER BY m.id_message ASC;

0 个答案:

没有答案