0

我正在创建一个在线聊天框,供我和我在大学的朋友在线使用。在当前配置中,聊天消息存储在主机(我的)上的纯文本文件中,并且每秒通过 AJAX 获取,但是,有时它很慢且有故障,并且并不总是有效。

为了发送消息,它将消息传递给 JavaScript 函数,该函数将值传递给 PHP 脚本,将其连同用户的唯一颜色(存储在本地 cookie 中)一起写入文件。这是functions.js文件(pastebin):http://pastebin.com/CpGxj5cP

这是发送消息的 php 文件:

<?php
session_start();
require_once('mysql_connect.php');
date_default_timezone_set("EST");

//Format the message
$date = date('n/j g:i A');
$username = $_SESSION['username'];
$color = $_COOKIE[$username];

$message  = "<font color='" . $color . "'>" . $username . "</font> (" .  $date . "): ";
$message .= $_GET['m'] . "\n";

$file = '../messages.txt';

$handle = fopen($file, 'a');
fputs($handle, $message);

fclose($handle);

//Reset timeout
//$_SESSION['timeout'] = 300;
?>

正如我上面所说,问题是它非常非常慢。如果有比文本文件/AJAX 更好的方法,请告诉我!

4

2 回答 2

0

查看这个使用 PHP 的聊天框的完整代码。下载源代码或查看本网站的现场演示。

版主注:这个链接已经失效,archive.org 似乎也没有副本。 http://purpledesign.in/blog/?p=19

    function getLoginBox() {
    ob_start();
    require_once('login_form.html');
    $sLoginForm = ob_get_clean();

    $sLogoutForm = '<a href="'.$_SERVER['PHP_SELF'].'?logout=1">logout</a>';

    if ((int)$_REQUEST['logout'] == 1) {
        if (isset($_COOKIE['member_name']) && isset($_COOKIE['member_pass']))
            $this->simple_logout();
    }

    if ($_REQUEST['username'] && $_REQUEST['password']) {
        if ($this->check_login($_REQUEST['username'], MD5($_REQUEST['password']))) {
            $this->simple_login($_REQUEST['username'], $_REQUEST['password']);
            return 'Hello ' . $_REQUEST['username'] . '! ' . $sLogoutForm;
        } else {
            return 'Username or Password is incorrect' . $sLoginForm;
        }
    } else {
        if ($_COOKIE['member_name'] && $_COOKIE['member_pass']) {
            if ($this->check_login($_COOKIE['member_name'], $_COOKIE['member_pass'])) {
                return 'Hello ' . $_COOKIE['member_name'] . '! ' . $sLogoutForm;
            }
        }
        return $sLoginForm;
    }
}

当然,您需要创建一个登录框。请检查我分享的链接。它有所有的细节

于 2013-12-11T10:17:43.723 回答
0

是的,如果您使用支持 HTML 5 的浏览器,有更好的方法

网络套接字

http://www.tutorialspoint.com/html5/html5_websocket.htm

于 2013-09-17T21:27:19.617 回答