我想为我的网站制作一个PHP/JavaScript聊天系统。如何在不刷新页面的情况下做到这一点?制作一个PHP JavaScript聊天室
JavaScript可以: - 动态添加文本到文本框。
PHP可以: - 与聊天记录文件保持聊天,并更新聊天室,以便每个人都可以看到它。
第二部分似乎要求您刷新页面。我不想每次用户说什么都刷新页面。 有没有办法在后台运行PHP而无需执行POST或GET?我是否需要使用不同的服务器端语言,如Python或Ruby?任何帮助,将不胜感激。
我想为我的网站制作一个PHP/JavaScript聊天系统。如何在不刷新页面的情况下做到这一点?制作一个PHP JavaScript聊天室
JavaScript可以: - 动态添加文本到文本框。
PHP可以: - 与聊天记录文件保持聊天,并更新聊天室,以便每个人都可以看到它。
第二部分似乎要求您刷新页面。我不想每次用户说什么都刷新页面。 有没有办法在后台运行PHP而无需执行POST或GET?我是否需要使用不同的服务器端语言,如Python或Ruby?任何帮助,将不胜感激。
如果你不希望页面刷新,你可以使用Ajax post。这是一个实现。
http://css-tricks.com/jquery-php-chat/
如果是小规模的网站,然后它的罚款。否则,我会建议使用Erlang或Go编程来为您的聊天提供动力!
AJAX应该适合您的需求;它可以发送来自JS的数据以供PHP处理,并且可以接收任何返回的对象以再次由JS处理。
教程:http://css-tricks.com/jquery-php-chat/或 http://code.jenseng.com/jenChat/
有几种方式使用JavaScript和PHP来做到这一点。最基本的是通过Javascript的XMLHttpRequest函数发送您的Javascript POST请求。这使您可以在不重新加载页面的情况下发送和接收数据。谷歌“AJAX”有关如何以这种方式发送数据并处理结果的信息。
PHP将这些作为常规的POST请求,因此您可以根据返回的数据在后端执行任何操作。但是你使用PHP来返回数据,而不是发送一个新的网页,所以你可以通过网络发送文本,这是最简单的方式。
出于聊天室的目的,AJAX需要您的JavaScript代码每隔几秒轮询服务器以查看是否有新的聊天记录进来。这不是非常有效。你真正想要的是服务器上的某些东西,它可以保持与客户端的连接并告诉它什么时候发生了变化。为此,您需要在JavaScript中使用Websockets,并创建一个PHP套接字服务器。如何实际做这两件事情超出了这个答案的范围。但是使用你所谈论的技术是可能的。
您可以在msg.php文件中检索聊天消息,并使用jQuery进行刷新并将其添加到您的主文件中(您的主页不会加载,但会刷新)。 您可以使用原型为这与它相同的jQuery,但非常容易使用。
而且我们希望没有必要再把每个单词都用上! – moonwave99
如果您想制作只使用一个日志文件的聊天室应用程序,即您网站上的每个人都登录到同一个房间,那么使用php和ajax以及一些jquery并不难。这里是一个过程:你想让用户输入一条消息并发送它,对吗?,你所需要的是一种形式:
<form name="message" action="">
<input name="usermsg" type="text" id="usermsg" size="63" />
<input name="submitmsg" type="submit" id="submitmsg" value="Send" />
</form>
这是窗体的标记,接下来,你需要的东西,无缝需要在用户输入,无论用户输入到文本框中,并将其发送一个脚本,这就是AJAX进来:这样做后
<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script type="text/javascript" >
//when the user clicks the button with the id submitmsg, the input is taken
$("#submitmsg").click(function(){
var clientmsg = $("#usermsg").val();
//after the input's value is taken, it's sent to a script called
//pst.php
$.post("post.php", {text: clientmsg});
//after the message is sent, the input's value is set to null
//to allow the user to type a new message
$("#usermsg").attr("value", "");
return false;
});
</script>
,我们需要看到剧本post.php中的样子和它做什么,基本上,它抓住通过Ajax和发送给它的输入将其写入文件,然后将文件加载到网页上,然后可以查看用户之间发送的所有消息,并在一段时间后使用ajax进一步重新加载文件,以便使用的r是始终与它包含的任何消息的速度,这里的PHP脚本:
<?
session_start();
if(isset($_SESSION['name'])){
$text = $_POST['text'];
$fp = fopen("log.html", 'a');
fwrite($fp, "<div class='msgln'><b>".$_SESSION['name']."</b>: ".stripslashes(htmlspecialchars($text))."<br></div>");
fclose($fp);
}
?>
注意,我使用的会话,这是获取用户的是登录名,并输出到日志file.i'm确保您可以看到登录系统将如何适应这个,反正,将数据写入到文件后,我们需要上传它,因此用户可以看到:
<div id="chatbox">
<?php
if(file_exists("log.html") && filesize("log.html") > 0){
$handle = fopen("log.html", "r");
$contents = fread($handle, filesize("log.html"));
fclose($handle);
echo $contents;
}
?>
</div>
这就是师在那里日志文件将被加载,现在,只剩下一件事,我们需要在一段时间后重新加载文件,并且可能添加自动滚动功能:
//Load the file containing the chat log
function loadLog(){
var oldscrollHeight = $("#inner").attr("scrollHeight") - 20;
$.ajax({
url: "log.html",
cache: false,
success: function(html){
$("#inner").html(html); //Insert chat log into the #chatbox div
var newscrollHeight = $("#inner").attr("scrollHeight") - 20;
if(newscrollHeight > oldscrollHeight){
$("#inner").animate({ scrollTop: newscrollHeight }, 'normal'); //Autoscroll to bottom of div
}
},
});
}
setInterval (loadLog, 2500); //Reload file every 2.5 seconds
就是这样,这应该工作,希望这有助于在您还没有得到有用的答案,你会等待很长时间。
这是肯定不会做聊天室。你直接写入html文件?为什么不是TXT或更好呢,像你应该使用MySQL。通过AJAX聊天室,您不会显示,如何避免多次调用服务器问题。另外,是什么阻止它双击服务器? –
嗯,这不是最好的方式,但它的工作原理。如果你读到这个问题,他暗示他想使用日志文件:“PHP可以: - 保存聊天日志文件的聊天,并更新聊天室,以便每个人都可以看到它。”所以我给出了一个可以使用这种方法的答案。最好的方法是使用网络套接字,但我再次根据他所寻找的内容给出了答案;一种使用文件的方法。要保存到TXT,只需将扩展名从html更改为txt。 – 2014-03-06 15:10:10
欢迎来到SO!传统的答案是Ajax(异步Javascript)。互联网上有成千上万的Ajaxified PHP聊天室教程。未来的网络套接字将接管,但那一天还没有到来。 –
实时聊天是一个复杂的系统来设计和实施,特别是如果你不了解底层技术如何工作。最好的建议是搜索第三方聊天系统现成的整合。 –
php + js不是这个任务的最佳堆栈imo,[node.js + js](http://chat.nodejs.org/)是。 – moonwave99