-1
您好,我已經通過長輪詢,websockets和APE,Ajax推送,Ajax Pull。由於websockets的技術目前還沒有在我們的萬維網中引入。我想我會使用正常的setInterval函數來檢查數據庫。這是一個聊天應用程序,我的代碼: -如果在數據庫中添加新記錄,從數據庫檢索數據
上Home.php: 的Javascript:
$(document).ready(function(){
setInterval(function(){
var id = $id; // this is the id of the last message inserted in the database
var data = 'id='+id;
$.ajax({
type : "POST",
url : "check.php",
data : data,
success : function(data){
if(data)
{
$(".comments").append(data);
}
}
});
},1000);
和check.php PHP代碼:
$id = $_POST['id'];
$get = mysql_query("SELECT * FROM messages WHERE id>'$id' ORDER BY id DESC");
$num2 = mysql_num_rows($get);
$get2 = mysql_fetch_assoc($get);
$id = $get2['id'];
if($num2!=0)
{
$username = $get2['username'];
$a = mysql_query("SELECT * FROM people WHERE username='$username'");
$n = mysql_num_rows($a);
$b = mysql_fetch_assoc($a);
$file = $b['filename'];
$pic = "<img src=\"images/" .$file. "\" width=\"40\" height=\"40\">";
$name = $get2['fullname'];
$message = $get2['message'];
echo $pic.$message."<br/>";
}
else
{
}
如果在數據庫中插入了新記錄,我會t回顯正常,但它不會更新home.php頁面中的$ id,所以它會一次又一次地發送舊的id,並且評論會一次又一次地追加。
我想要的是。每隔一段時間。 home.php的$ id應該被更新,以便它僅將當前消息ID發送到check.php頁面。
消毒您的輸入!我可以通過提交check.php來清除你的數據庫?id ='; drop table messages; - – 2011-12-16 20:39:33
yea yea lol。我第一次做它作爲一個測試的事情,如果一切都會解決,那麼將進入安全部分;-)。反正謝謝你的提醒:) – Samir 2011-12-16 23:44:23