Heim >php教程 >php手册 >ajax php 聊天室实例代码

ajax php 聊天室实例代码

WBOY
WBOYOriginal
2016-05-25 16:57:28926Durchsuche

<?php
/*
ajax php 聊天室实例代码
但是必须基于以下条款:
* 署名。你必须明确标明作者的名字。.
* 非商业用途。 你不可将当前作品用于商业目的。
* 保持一致。 如果你基于当前作品更改、变换或构造新作品,你应当按照与当前协议完全相同的协议分发最终作品
* 对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款
* 在得到作者的明确允许下,这里的某些条款可以放弃
此约定是法律文本 (完整的协议)的简单易读概要 
****************************************/
//****************参数设置****************
//显示在线用户
$disonline = true;
//新登陆时显示最近内容的条数(默认为30条)
$leastnum = 30;
//默认的房间名(默认是每天换一个文件),如果去掉d,则是每月换一个文件
$room = date("y-m-d");
//房间保存路径,必须以/结尾
$roomdir = "rooms/";
//编码方式
$charset = "utf-8";
//客户端最大显示内容条数(建议不要太大)
$maxdisplay = 300;
//语言
$lang = array(
    //聊天室描述
    "description" => "欢迎来到迷你ajax聊天室。最新版本 1.2。下载请到<a href=&#39;http://phprm.com&#39; target=_blank>www.phprm.com</a>",
    //聊天室标题
    "title" => "mini ajax chatroom by longbill",
    //第一个到聊天室的欢迎
    "firstone" => "<span style=&#39;color:#16a5e9;&#39;>welcome to longbill&#39;s mini ajax chatroom!</span>",
    //当信息有禁止内容时显示
    "ban" => "i am a pig!",
    //关键字
    "keywords" => "聊天室,迷你,小型,ajax,chat,chatroom,longbill,phprm.com,php,网页特效",
    //发言提示
    "hereyourwords" => "在这里发言!"
);
error_reporting(e_all ^ e_notice ^ e_warning);
header("content-type:text/html; charset=utf-8");
$get_past_sec = 3; //如果发现丢话,可以适当调大这个值
$touchs = 10; //检查在线人数的时间间隔
if (!function_exists("file_get_contents")) {
    function file_get_contents($path) {
        if (!file_exists($path)) return false;
        $fp = @fopen($path, "r");
        $all = fread($fp, filesize($path));
        fclose($fp);
        return $all;
    }
}
if (!function_exists("file_put_contents")) {
    function file_put_contents($path, $val) {
        $fp = @fopen($path, "w");
        fputs($fp, $val);
        fclose($fp);
        return true;
    }
}
$title = $lang["title"];
$earlier = 10;
$description = $lang["description"];
$origroom = $room;
$least = ($_get["dis"]) ? intval($_get["dis"]) : $leastnum;
$touchme = $_post[&#39;touchme&#39;];
if (!is_dir($roomdir)) @mkdir($roomdir) or die("error when creating folder $roomdir");
$room = $_get[&#39;room&#39;];
if (!$room) $room = $_post["room"];
$room = checkfilename($room);
if (!$room) $room = $origroom;
$filename = $roomdir . $room . ".dat.php";
$datafile = $roomdir . $room . ".php";
if (!file_exists($filename)) @file_put_contents($filename, &#39;<?php die();?>&#39; . " " . time() . "|" . $lang["firstone"] . " ");
if (!file_exists($datafile)) @file_put_contents($datafile, &#39;<?php die();?>&#39; . " ");
$action = $_post["action"];
function checkfilename($file) {
    if (!$file) return "";
    $file = trim($file);
    $a = substr($file, -1);
    $file = eregi_replace("^[./]*", "", $file);
    $file = eregi_replace("[./]*$", "", $file);
    $arr = array(
        "../",
        "./",
        "/",
        "",
        "..",
        "."
    );
    $file = str_replace($arr, "", $file);
    return $file;
}
function get_ip() {
    global $_server;
    if ($_server) {
        if ($_server[http_x_forwarded_for]) $realip = $_server["http_x_forwarded_for"];
        else if ($_server["http_client_ip"]) $realip = $_server["http_client_ip"];
        else $realip = $_server["remote_addr"];
    } else {
        if (getenv(&#39;http_x_forwarded_for&#39;)) $realip = getenv(&#39;http_x_forwarded_for&#39;);
        else if (getenv(&#39;http_client_ip&#39;)) $realip = getenv(&#39;http_client_ip&#39;);
        else $realip = getenv(&#39;remote_addr&#39;);
    }
    return $realip;
}
function array2json($arr) {
    $keys = array_keys($arr);
    $isarr = true;
    $json = "";
    for ($i = 0; $i < count($keys); $i++) {
        if ($keys[$i] !== $i) {
            $isarr = false;
            break;
        }
    }
    $json = $space;
    $json.= ($isarr) ? "[" : "{";
    for ($i = 0; $i < count($keys); $i++) {
        if ($i != 0) $json.= ",";
        $item = $arr[$keys[$i]];
        $json.= ($isarr) ? "" : $keys[$i] . &#39;:&#39;;
        if (is_array($item)) $json.= array2json($item);
        else if (is_string($item)) $json.= &#39;"&#39; . str_replace(array(
            " ",
            " "
        ) , "", $item) . &#39;"&#39;;
        else $json.= $item;
    }
    $json.= ($isarr) ? "]" : "}";
    return $json;
}
function keeponline() {
    global $disonline, $datafile;
    if (!$disonline) return;
    $name = $_post[&#39;name&#39;];
    $ip = get_ip();
    $onlines = @file_get_contents($datafile);
    $s1 = "|{$name}|{$ip}|";
    if (strpos($onlines, $s1) === false) {
        if (strpos($onlines, "|" . $name . "|") === false) {
            $fp = @fopen($datafile, "a+");
            if ($fp) {
                if (@flock($fp, lock_ex)) {
                    @fputs($fp, time() . "|" . time() . $s1 . " ");
                    @flock($fp, lock_un);
                }
                @fclose($fp);
            }
        } else {
            echo "name";
            die();
        }
    }
}
if ($action == "write") {
    $color = $_post["color"];
    if (!eregi("[0-9a-fa-f]{6}", $color) || $color == "#000000") $color = "";
    $color = "#" . $color;
    $size = intval($_post["size"]);
    $name = htmlspecialchars(str_replace(array(
        " ",
        " "
    ) , "", $_post[&#39;name&#39;]));
    if (!$name) die("no name!!");
    $ip = get_ip();
    keeponline();
    $s = "";
    $style = "";
    $font = $_post["font"];
    if ($font == "songti") $font = "宋体";
    else if ($font == "heiti") $font = "黑体";
    else if ($font == "kaiti") $font = "楷体_gb2312";
    else $font = "";
    $style.= (!$font) ? "" : "font-family:" . $font . ";";
    $style.= (!$_post["bold"]) ? "" : "font-weight:bold;";
    $style.= (!$color || $color == "#") ? "" : "color:{$color};";
    $style.= (!$size || $size == "16") ? "" : "font-size:{$size}px;";
    $t = time();
    $arr = explode(" ", $_post[&#39;content&#39;]);
    if (count($arr) > 20) die(&#39;error&#39;);
    for ($i = 0; $i < count($arr); $i++) {
        $content = $arr[$i];
        $content = trim($content);
        $content = str_replace(array(
            " ",
            " "
        ) , "", $content);
        if (!$content) continue;
        $content = htmlspecialchars($content);
        $content = preg_replace("~[img](http://[a-za-z0-9.-_+%?]*)[/img]~i", "<img  src=&#39;$1&#39; / alt="ajax php 聊天室实例代码 " >", $content);
        $content = ($style) ? "<span style=&#39;{$style}&#39;>{$content}</span>" : $content;
        $s.= $t . "|" . $name . ":" . $content . " ";
    }
    if (!$s) die("no content!!");
    $fp = @fopen($filename, "a+");
    if (!$fp) die("repeat");
    $re_time = 0;
    while (!@flock($fp, lock_ex)) {
        sleep(1);
        $re_time++;
        if ($re_time >= 4) break;
    }
    if ($re_time < 4) {
        @fputs($fp, $s);
        @flock($fp, lock_un);
    } else die("repeat");
    @fclose($fp);
    echo "ok";
} else if ($action == "read") {
    $first = $_post["first"];
    $lastmod = intval($_post["lastmod"]) - $get_past_sec; //得到两秒以内的所有发言,
    $alastmod = @filemtime($filename);
    if ($lastmod - $alastmod > 360 * 48) die;
    $name = $_post[&#39;name&#39;];
    $name = str_replace(" ", "", $name);
    $ip = get_ip();
    $json = array();
    $json["lastmod"] = time();
    $item = array();
    $newonline = array();
    $offline = array();
    $fp = @fopen($filename, &#39;r&#39;);
    flock($fp, lock_ex);
    $s = fread($fp, filesize($filename));
    flock($fp, lock_un);
    fclose($fp);
    $lines = explode(" ", $s);
    if ($alastmod >= $lastmod && !$first) {
        foreach ($lines as $l) {
            $item2 = array();
            $l = str_replace(array(
                " ",
                " "
            ) , "", $l);
            if (strpos($l, "|") === false) continue;
            $arr = explode("|", $l);
            $t = intval($arr[0]);
            if ($t >= $lastmod) {
                $item2["time"] = date("h:i:s", $t);
                $item2["word"] = addslashes($arr[1]);
                $item[] = $item2;
            }
        }
    } else if ($first) {
        $item = array();
        $total = count($lines);
        for ($i = $total - 1; $i >= $total - $least; $i--) {
            if ($i <= 0) break;
            $item2 = array();
            $l = str_replace(array(
                " ",
                " "
            ) , "", $lines[$i]);
            if (strpos($l, "|") === false) continue;
            $arr = explode("|", $l);
            $t = intval($arr[0]);
            $item2["time"] = (date("m-d", time()) == date("m-d", $t)) ? date("h:i:s", $t) : date("m-d h:i", $t);
            $item2["word"] = addslashes($arr[1]);
            $item[] = $item2;
        }
        $item = array_reverse($item);
    }
    $s = "";
    $nt = time();
    $onlines = array();
    if ($disonline && $touchme) {
        $users = @file($datafile);
        foreach ($users as $l) {
            $l = str_replace(array(
                " ",
                " "
            ) , "", $l);
            if (strpos($l, "|") === false) {
                $s.= $l . " ";
                continue;
            }
            $arr = explode("|", $l);
            if ($nt - intval($arr[1]) < $touchs * 3) {
                if (trim($name) == trim($arr[2])) {
                    $s.= $arr[0] . "|" . time() . "|" . $name . "|" . get_ip() . "| ";
                } else $s.= $l . " ";
                $onlines[] = htmlspecialchars($arr[2]);
            }
        }
        @file_put_contents($datafile, $s);
        $json["onlines"] = $onlines;
    }
    $json["lines"] = $item;
    echo array2json($json);
} else if ($action == "keep") {
    keeponline();
    echo "keep ok";
} else if ($action == "quit") {
    $name = $_post[&#39;name&#39;];
    if ($disonline) {
        $users = @file($datafile);
        foreach ($users as $l) {
            $l = str_replace(array(
                " ",
                " "
            ) , "", $l);
            if (strpos($l, "|") === false) {
                $s.= $l . " ";
                continue;
            }
            $arr = explode("|", $l);
            if (trim($name) == trim($arr[2])) continue;
            else $s.= $l . " ";
        }
        @file_put_contents($datafile, $s);
        echo "ok";
    }
    die();
} else {
?>
<html>
<head>
 <title>迷你php+ajax聊天室演示 <?php echo $title; ?></title>
 <meta http-equiv=&#39;pragma&#39; content=&#39;no-cache&#39; />
 <meta http-equiv=content-type content="text/html; charset=<?php echo $charset; ?>" />
 <meta name="keywords" content="<?php echo $lang["keywords"]; ?>">
 <meta name="description" content="mini ajax chatroom by longbill. <?php echo $description; ?>">
<style type=&#39;text/css&#39;>
body { text-align:center; color:#333333; font-size:12px; font-family:宋体;}
a { text-decoration:none; color:#a2b700; }
.mydiv { text-align:left; margin:5px; padding:5px; border:1px solid #ff8c05; background-color:#fdd283; width:600px; }
.inputtext { border:0px; border-bottom:1px solid #333333; background-color:transparent;}
.submit { border:1px solid #ff8c05; background-color:transparent; }
.contents { border:1px solid #ff8c05;margin:5px; margin-top:10px;background-color:#ffffff; overflow:auto;word-break:break-all;word-wrap :break-word;}
.bg { background-color:#ffffff; }
.content { border:0px;background-color:transparent;width:auto; font-size:16px; font-family:fixedsys; margin:2px; padding:1px; }
.time { color:#aaaaaa; font-size:10px; font-family:arial;}
.online { margin:5px; padding:0px; display:inline; }
.mybut { width:20px; height:20px; background-color:#ff8c05; text-align:center; font-size:18px; color: #333333;}
</style>
<script>
function $(obj) {
    return document.getelementbyid(obj);
}
function setcookie(name, value, t) {
    var cookieexp = 5 * 30 * 24 * 60 * 60 * 1000; //5 months
    var cookiestr = name + "=" + escape(value) + ";";
    var expires = "";
    var d = new date();
    var t2 = (!t) ? cookieexp : t * 60 * 1000;
    d.settime(d.gettime() + cookieexp);
    expires = "expires=" + d.togmtstring() + ";";
    document.cookie = cookiestr + expires;
}
function getcookie(name) {
    var start = document.cookie.indexof(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length)))
        return "";
    if (start == -1)
        return "";
    var end = document.cookie.indexof(";", len);
    if (end == -1)
        end = document.cookie.length;
    return unescape(document.cookie.substring(len, end));
}
function createajax() {
    if (window.xmlhttprequest) {
        var ohttp = new xmlhttprequest();
        return ohttp;
    } else if (window.activexobject) {
        var versions = [
            "msxml2.xmlhttp.6.0",
            "msxml2.xmlhttp.3.0"
        ];
        for (var i = 0; i < versions.length; i++) {
            try {
                var ohttp = new activexobject(versions[i]);
                return ohttp;
            } catch (error) {}
        }
    }
    throw new error("your browser doesn&#39;t support xmlhttprequest");
}
function pickcolor() {
    if (!window.isie)
        return;
    var scolor = $(&#39;dlghelper&#39;).choosecolordlg();
    var color = scolor.tostring(16);
    while (color.length < 6)
        color = "0" + color;
    window.color = color;
    color = "#" + color;
    $(&#39;div_color&#39;).style.backgroundcolor = color;
    $(&#39;div_color&#39;).value = color;
}
var isie = (document.all && window.activexobject) ? true : false;
</script>
</head>
<body >
<center>
<div class=mydiv style=&#39;text-align:center; border:0px; background-color:transparent; font-size:25px; color:#ff8c05;&#39;><?php echo $title; ?></div>
<div class="mydiv login" id=&#39;div_description&#39;>
<?php
    echo $description; ?>
</div>
<div class="mydiv rooms" id=&#39;div_msg&#39;>
<div class=&#39;contents&#39; style=&#39;height:350px;&#39; id=&#39;div_contents&#39;>loading...</div>
</div>
<div class="mydiv login" id=&#39;div_name&#39; style=&#39;display:block;&#39;>
name:<input type=text class="inputtext bg" size=8 id=&#39;chat_user&#39; value=&#39;&#39; maxlength=30 /> 
<object id=dlghelper classid="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px"></object>
<input class="inputtext" style=&#39;width:50px;cursor:hand;10px;background-color:#000000;color:#ffffff;&#39; id=&#39;div_color&#39; onclick="pickcolor()" value="#000000" onblur="this.style.backgroundcolor=this.value;window.color=this.value.replace(&#39;#&#39;,&#39;&#39;);" />
 size:<input class="inputtext bg" type=text style=&#39;width:20px&#39; maxlength=3 id=&#39;input_size&#39; value=&#39;16&#39; />(px)
 font:<select id=&#39;input_font&#39; class=&#39;inputtext bg&#39; style=&#39;width:70px;&#39;>
<option value=&#39;fixedsys&#39;>fixedsys</option>
<option value=&#39;heiti&#39;>黑体</option>
<option value=&#39;songti&#39;>宋体</option>
<option value=&#39;kaiti&#39;>楷体</option>
</select>
bold:<input type=checkbox id=&#39;input_bold&#39; class=&#39;inputtext&#39; style=&#39;border-bottom:0px;&#39; />
window:<a class=&#39;mybut&#39; href=&#39;#&#39; onclick=&#39;resize(1)&#39;>+</a>
 <a class=&#39;mybut&#39; href=&#39;#&#39; onclick=&#39;resize(0)&#39;>-</a>
 <a class=&#39;mybut&#39; style=&#39;width:25px;font-size:16px;&#39; href=&#39;#&#39; onclick=&#39;clearall()&#39;>clear</a>
</div>
<div class="mydiv login" id=&#39;div_word&#39;>
<textarea type=text class="inputtext bg" rows=1 scrolling=no style=&#39;height:20px;overflow:hidden;width:500px;&#39; id=&#39;chat_word&#39; onfocus="if (this.value == &#39;<?php echo $lang["hereyourwords"]; ?>&#39;) this.value=&#39;&#39;; window.editing=0; " 
 onkeydown="return check_send(event);" ><?php echo $lang["hereyourwords"]; ?></textarea>
<input type=button class=submit value=&#39;send&#39; onclick="chat_send();$(&#39;chat_word&#39;).style.height=20;" onfocus="this.blur();"/>
</div>
<div class=&#39;mydiv&#39; style=&#39;display:<?php
    if (!$disonline) echo "none"; ?>&#39; id=&#39;div_online&#39;>loading online...</div>
<script>
var debug = 0;
var lastmod =  <  ? php echo time() - $earlier * 60;
 ?  > ;
var login = 1;
var loading = false;
var olduser = getcookie(&#39;chatusername&#39;);
if (olduser != "")
    $(&#39;chat_user&#39;).value = olduser;
var room = "<?php echo $room; ?>";
var first = 1;
var dis = "<?php echo $least; ?>";
var lastword;
var color = &#39;&#39;;
var touchs =  <?php echo $touchs;?> ;
var dotouch = true;
var maxdisplay =  <?php echo $maxdisplay;?> ;
var nowdisplay = 1;
var sending = 0;
var loaded_lines = [];
var editing = 0;
function encode(s) {
    return (encodeuricomponent) ? encodeuricomponent(s) : s;
}
$(&#39;chat_user&#39;).onfocus = setonfocus;
$(&#39;input_size&#39;).onfocus = setonfocus;
function setonfocus() {
    window.editing = 1;
}
function setonblur() {
    window.editing = 0;
}
var keep_ajax;
function keeponline() {
    var name = $(&#39;chat_user&#39;).value;
    if (!name)
        return;
    keep_ajax = createajax();
    keep_ajax.open(&#39;post&#39;, &#39;<?php echo basename(__file__); ?>&#39;, 1);
    keep_ajax.setrequestheader("content-type", "application/x-www-form-urlencoded");
    keep_ajax.onreadystatechange = function () {
        if (keep_ajax.readystate == 4 && keep_ajax.status == 200) {
            //alert(keep_ajax.responsetext);
        }
    }
    keep_ajax.send("action=keep&name=" + encode(name));
}
setinterval("keeponline()", touchs * 1000);
function quitroom() {
    if (confirm("你真的要离开聊天室吗?")) {
        var ajax = createajax();
        ajax.open(&#39;post&#39;, &#39;<?php echo basename(__file__); ?>&#39;, 0);
        ajax.setrequestheader("content-type", "application/x-www-form-urlencoded");
        ajax.send("action=quit&name=" + encode($(&#39;chat_user&#39;).value));
        //alert("sending close  action=quit&name="+encode($(&#39;chat_user&#39;).value));
        //alert("response:"+ajax.responsetext);
    } else
        return &#39;&#39;;
}
document.body.onbeforeunload = quitroom;
setinterval(" load_word()", (debug) ? 6000 : 1000);
var load_word_ajax;
//下载完成后的处理函数
function load_word_change() {
    if (load_word_ajax.readystate == 4) {
        if (load_word_ajax.status != 200) {
            load_word_error();
            return;
        }
        window.loading = false;
        var body = $(&#39;div_contents&#39;);
        try {
            if (debug)
                alert(load_word_ajax.responsetext);
            eval("var arr = " + load_word_ajax.responsetext);
        } catch (e) {
            alert(&#39;error 101 json syntax error! &#39; + load_word_ajax.responsetext);
            return;
        }
        if (!arr || !arr.lastmod || typeof(arr.lastmod) == "undefined") {
            return;
        }
        var html = "";
        var line = arr.lines;
        var i = 0;
        var v1 = 0;
        var div_online = $(&#39;div_online&#39;);
        if (window.first) {
            body.innerhtml = "";
            window.first = false;
        }
        if (arr.onlines) {
            $(&#39;div_online&#39;).innerhtml = "";
            for (var i = 0; i < arr.onlines.length; i++)
                addonline(arr.onlines[i]);
        }
        for (var i = 0; i < line.length; i++) {
            var linekey = line[i].word.substring(line[i].word.length - 20, line[i].word.length) + line[i].time;
            if (window.loaded_lines[linekey] === true) {
                if (debug)
                    alert("jump:" + linekey);
                continue;
            }
            var div1 = document.createelement("div");
            window.nowdisplay++;
            if (window.nowdisplay > window.maxdisplay)
                window.nowdisplay = 1;
            if ($("contentitem" + window.nowdisplay))
                body.removechild($("contentitem" + window.nowdisplay));
            div1.classname = "content";
            div1.id = "contentitem" + window.nowdisplay;
            div1.innerhtml = line[i].word + " <span class=&#39;time&#39;>(" + line[i].time + ")</span>";
            body.appendchild(div1);
            window.loaded_lines[linekey] = true;
            body.scrolltop = 655350;
            v1 = 1;
        }
        if (v1) {
            window.focus();
            document.body.focus();
            window.lastmod = arr.lastmod;
            if (debug)
                alert("lastmod = " + arr.lastmod + " window.lastmod=" + window.lastmod);
            if ($(&#39;chat_word&#39;).disabled == false && window.editing != 1) {
                $(&#39;chat_word&#39;).focus();
            }
        }
    }
}
function load_word_error() {
    window.loading = false;
    window.status = &#39;error 102:while loading words&#39;;
    settimeout("window.status = &#39;&#39;;", 5000);
}
function load_word() {
    load_word_ajax = createajax();
    if (window.loading) {
        try {
            load_word_ajax.abort();
            window.loading = false;
        } catch (e) {}
    }
    if (!window.lastmod) {
        alert("window.lastmod=" + window.lastmod);
        return;
    }
    load_word_ajax.open(&#39;post&#39;, &#39;<?php echo basename(__file__); ?>&#39;, true);
    load_word_ajax.onreadystatechange = load_word_change;
    var urlstring = &#39;&#39;;
    urlstring += "lastmod=" + window.lastmod;
    urlstring += "&room=" + room;
    urlstring += "&action=read";
    urlstring += "&name=" + encode($(&#39;chat_user&#39;).value);
    if (window.first) {
        urlstring += "&first=true";
        urlstring += "&dis=" + dis;
    }
    //如果到了取得在线用户的时间
    if (window.dotouch) {
        urlstring += "&touchme=true";
        window.dotouch = false;
        //垃圾内存回收
        try {
            collectgarbage();
        } catch (e) {}
    }
    window.loading = true;
    if (debug)
        alert("sending:" + urlstring);
    load_word_ajax.setrequestheader("content-type", "application/x-www-form-urlencoded");
    load_word_ajax.send(urlstring);
}
function touchme() {
    window.dotouch = true;
    settimeout("touchme()", window.touchs * 1000);
}
function showalert(a, n) {
    if (!n)
        n = 0;
    if (n > 3)
        return;
    if (!a) {
        a = 0;
        b = 1;
    } else {
        a = 1;
        b = 0;
    }
    document.title = mytitle[a];
    settimeout("showalert(" + b + "," + (n + 1) + ");", 500);
}
function addonline(name) {
    if ($(name))
        return;
    var d1 = document.createelement("div");
    d1.id = name;
    d1.innerhtml = name;
    d1.classname = "online";
    $(&#39;div_online&#39;).appendchild(d1);
}
touchme();
function check_send(e) {
    if (!e)
        e = window.event;
    var obj = $(&#39;chat_word&#39;);
    if (isie)
        obj.style.height = obj.scrollheight + 3;
    if (e.keycode == 13) {
        if ((!e.shiftkey && !e.altkey && !e.ctrlkey) || !isie) {
            chat_send();
            obj.style.height = 20;
            return false;
        } else if (isie)
            obj.style.height = obj.scrollheight + 18;
    }
    return true;
}
var send_ajax;
send_ajax_change = function () {
    if (send_ajax.readystate == 4) {
        if (send_ajax.status != 200) {
            send_ajax_error();
            return;
        }
        if (debug)
            alert("send_ajax response:" + send_ajax.responsetext);
        if (send_ajax.responsetext.indexof("name") != -1) {
            alert(&#39;已经有人使用你的昵称了&#39;);
            $(&#39;chat_user&#39;).value = "";
            $(&#39;chat_user&#39;).focus();
        } else if (send_ajax.responsetext.indexof("repeat") != -1) {
            $(&#39;chat_word&#39;).value = window.lastcontent;
        }
        on_send_ok();
        if (!window.loading) {
            window.dotouch = true;
            load_word();
        }
        $(&#39;chat_word&#39;).disabled = false;
        $(&#39;chat_word&#39;).focus();
    }
}
function on_send_begin() {
    with ($(&#39;chat_word&#39;)) {
        disabled = true;
        style.backgroundcolor = "#eeeeee";
    }
    window.sending = 1;
}
function on_send_ok() {
    window.sending = 0;
    with ($(&#39;chat_word&#39;)) {
        value = &#39;&#39;;
        disabled = false;
        focus();
        style.backgroundcolor = "#ffffff";
    }
}
function on_send_error() {
    window.sending = 0;
    with ($(&#39;chat_word&#39;)) {
        disabled = false;
        focus();
        style.backgroundcolor = "#ffffff";
    }
}
function send_ajax_error() {
    alert(&#39;error 103 when send words you can send them again!&#39;);
    $(&#39;chat_word&#39;).value = window.lastcontent;
    window.sending = 0;
    on_send_error();
}
function chat_send() {
    send_ajax = createajax();
    send_ajax.open(&#39;post&#39;, &#39;<?php echo basename(__file__); ?>&#39;, true);
    send_ajax.setrequestheader("content-type", "application/x-www-form-urlencoded");
    send_ajax.onreadystatechange = send_ajax_change;
    var urlstring = &#39;&#39;;
    var name = $(&#39;chat_user&#39;).value.replace(" ", "");
    var content = $(&#39;chat_word&#39;).value;
    var bold = ($(&#39;input_bold&#39;).checked) ? "bold" : "";
    var size = parseint($(&#39;input_size&#39;).value);
    var font = $(&#39;input_font&#39;).value;
    if (name == "") {
        alert(&#39;please enter your nick name first!!&#39;);
        $(&#39;chat_user&#39;).focus();
        return;
    }
    if (content == "" || content == " " || content == " " || content == " ") {
        alert(&#39;please enter your words!&#39;);
        $(&#39;chat_word&#39;).focus();
        $(&#39;chat_word&#39;).value = "";
        return;
    }
    if (size > 100)
        size = 100;
    else if (size < 0)
        size = 1;
    urlstring += "action=write";
    urlstring += "&name=" + encode(name);
    urlstring += "&content=" + encode(content);
    urlstring += "&bold=" + bold;
    urlstring += "&color=" + window.color;
    urlstring += "&size=" + size;
    urlstring += "&font=" + font;
    urlstring += "&room=" + room;
    window.sending = 1;
    window.lastcontent = content;
    on_send_begin();
    if (debug)
        alert("sending:" + urlstring);
    send_ajax.send(urlstring);
    settimeout("if (window.sending) send_ajax.abort(); on_send_error();", 5000);
    setcookie("chatusername", $(&#39;chat_user&#39;).value);
}
function resize(s) {
    var o = $(&#39;div_contents&#39;).style;
    var h = parseint(o.height);
    h = (s) ? h + 50 : h - 50;
    if (h <= 50 || h >= 3000)
        return;
    o.height = h;
    $(&#39;div_contents&#39;).scrolltop = 655350;
}
function clearall() {
    $(&#39;div_contents&#39;).innerhtml = "";
}
</script>
</center>
</body>
</html>
<?php
}
?>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn