我在这里使用js和php的消息传递应用程序的代码。消息正在正确地发送和保存在数据库中,但它们仅在屏幕上显示大约一秒钟然后消失。我不明白为什么会发生这种情况,因为消息存在于我的数据库中的表中。有人可以帮助我吗?
index1.php
</head>
<body onload="checkcookie(); update();">
<div id="whitebg"></div>
<div id="loginbox">
<h1>Pick a username:</h1>
<p><input type="text" name="pickusername" id="cusername" placeholder="Pick a username" class="msginput"></p>
<p class="buttonp"><button onclick="chooseusername()">Choose Username</button></p>
</div>
<div class="msg-container">
<div class="header">Messenger</div>
<div class="msg-area" id="msg-area"></div>
<div class="bottom"><input type="text" name="msginput" class="msginput" id="msginput" onkeydown="if (event.keyCode == 13) sendmsg()" value="" placeholder="Enter your message here ... (Press enter to send message)"></div>
</div>
<script type="text/javascript">
var msginput = document.getElementById("msginput");
var msgarea = document.getElementById("msg-area");
function chooseusername() {
var user = document.getElementById("cusername").value;
document.cookie="messengerUname=" + user
checkcookie()
}
function showlogin() {
document.getElementById("whitebg").style.display = "inline-block";
document.getElementById("loginbox").style.display = "inline-block";
}
function hideLogin() {
document.getElementById("whitebg").style.display = "none";
document.getElementById("loginbox").style.display = "none";
}
function checkcookie() {
if (document.cookie.indexOf("messengerUname") == -1) {
showlogin();
} else {
hideLogin();
}
}
function getcookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
function escapehtml(text) {
return text
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
function update() {
var xmlhttp=new XMLHttpRequest();
var username = getcookie("messengerUname");
var output = "";
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var response = xmlhttp.responseText.split("\n")
var rl = response.length
var item = "";
for (var i = 0; i < rl; i++) {
item = response[i].split("\\")
if (item[1] != undefined) {
if (item[0] == username) {
output += "<div class=\"msgc\" style=\"margin-bottom: 30px;\"> <div class=\"msg msgfrom\">" + item[1] + "</div> <div class=\"msgarr msgarrfrom\"></div> <div class=\"msgsentby msgsentbyfrom\">Sent by " + item[0] + "</div> </div>";
} else {
output += "<div class=\"msgc\"> <div class=\"msg\">" + item[1] + "</div> <div class=\"msgarr\"></div> <div class=\"msgsentby\">Sent by " + item[0] + "</div> </div>";
}
}
}
msgarea.innerHTML = output;
msgarea.scrollTop = msgarea.scrollHeight;
}
}
xmlhttp.open("GET","get-message.php?username=" + username,true);
xmlhttp.send();
}
function sendmsg() {
var message = msginput.value;
if (message != "") {
// alert(msgarea.innerHTML)
// alert(getcookie("messengerUname"))
var username = getcookie("messengerUname");
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
message = escapehtml(message)
msgarea.innerHTML += "<div class=\"msgc\" style=\"margin-bottom: 30px;\"> <div class=\"msg msgfrom\">" + message + "</div> <div class=\"msgarr msgarrfrom\"></div> <div class=\"msgsentby msgsentbyfrom\">Sent by " + username + "</div> </div>";
msginput.value = "";
}
}
xmlhttp.open("GET","update-message.php?username=" + username + "&message=" + message,true);
xmlhttp.send();
}
}
setInterval(function(){ update() }, 2500);
</script>
</body>
</html>
&#13;
更新message.php
<?php
$db = new mysqli("localhost","root","","het_msg");
if ($db->connect_error) {
die("couldnt connect");
}
$username = stripslashes(htmlspecialchars($_GET['username']));
$message = stripslashes(htmlspecialchars($_GET['message']));
if ($username == "" || $message == "") {
die();
}
$result = $db->prepare("INSERT INTO messages VALUES('',?,?)");
$result->bind_param("ss", $username, $message);
$result->execute();
&#13;
GET-message.php
<?php
$db = new mysqli("localhost","root","","het_msg");
if ($db->connect_error) {
die("couldnt connect");
}
$username = stripslashes(htmlspecialchars($_GET['username']));
$result = $db->prepare("SELECT * FROM messages");
$result->execute();
$result = $result->get_result();
while($r = $resut->fetch_row()) {
echo $r[1];
echo "\\";
echo $r[2];
echo "\n";
}
&#13;