こんにちは、ロングポーリング、Webソケット、APE、Ajaxプッシュ、AjaxプルWebSocketの技術はまだWorld Wide Webで紹介されていません。私は通常の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
{
}
データベースに新しいレコードが挿入されている場合i echoは正しく出力されていますが、home.phpページの$ idを更新しないので、古いIDを何度も送信して、コメントを何度も追加します。
私は何が欲しいですか?毎間隔ごとにhome.phpの$ idは、現在のメッセージIDだけをcheck.phpページに送るように更新する必要があります。
あなたの入力をサニタイズしてください!私はcheck.phpを送信するだけであなたのデータベースを拭くことができますか?id = ';ドロップテーブルメッセージ; - –
yea yea lol。私は最初にすべてのことがうまくいくならテストのこととしてそれをやっていたが、セキュリティの部分に入るだろう;-)。とにかくリマインダーのためにありがとう:) – Samir