Avatar billede doodoo Novice
12. januar 2003 - 22:04 Der er 10 kommentarer og
1 løsning

Simple chat ~ MySQL

Hey hey...

Jeg er igang med en side, hvor jeg skal bruge en meget simple chat, uden opret system....
Den skal køre over mysql, og derfor ville jeg høre om nogle ville lave sådan en...

Eller ved hvor jeg kan finde sådanne en lille sag ?

Keep cool !
Avatar billede fumes Nybegynder
12. januar 2003 - 22:08 #1
freshmeat.net eller sourceforge.net
Avatar billede ztyxx Nybegynder
12. januar 2003 - 22:23 #2
phpMyChat -> http://www.phpheaven.net/ dog har den et opretbruger system, men den er meget nem at sætte op
Avatar billede angam Nybegynder
12. januar 2003 - 23:22 #3
Jeg har lavet en simpel chat i PHP, der dog ikke bruger MySql, men blot læser / skriver til en lokal fil.
Hvis du er interesseret, poster jeg sovsen her.
Avatar billede doodoo Novice
13. januar 2003 - 08:20 #4
angam > Den vil jeg gerne kigge på... kan måske lave den om til
Avatar billede angam Nybegynder
13. januar 2003 - 11:53 #5
Den kan godt laves om til MySql uden de helt store problemer. Here goes - ialt tre filer.

Her kommer først selve web-delen.
Filnavn: index.php

<?
if(!isset($username)) $username='Guest';
?>
<html>
<head>
<script language=javascript src="chat.js"></script>
</head>
<body>
<form name="userform" action="" method="post">
<input type=text value="<?echo($username);?>" name=username>
<input type=submit value="Skift navn">
</form>

<script language="javascript">
    var username='<? echo($username); ?>';
    chat=new chatClass();
    chat.start();
</script>
<base target="chatframe">
<nobr><span name="linespan" id="linespan" class="chat-lines"></span></nobr>
<form name="clientform" action="chat-server.php" method="post">
<input type="text" name="textline" value="" onkeydown="chat.sendkey(this);" class="chat-input">
<input type="hidden" name="chatline" value=""><br>
</form></base>
<iframe name="chatframe" id="chatframe" src="chat-server.php" width="1" height="1" style="display:none"></iframe>
</body>
</html>
Avatar billede angam Nybegynder
13. januar 2003 - 11:54 #6
... Og her er "chat-serveren" - her læses og gemmes teksterne.
Filnavn: chat-server.php

<?
define('chat_seperator_line', '|');
define('chat_maxlines', 10);
define('chat_data_file', 'chatdata.txt');

    if(!isset($chatline)) $chatline = '';

    //    Read all data until now:
    $fp = @fopen (chat_data_file, 'r-');
    if($fp) {
        $buffer = fread($fp, 2048);
        $lines = explode(chat_seperator_line, $buffer);
        fclose($fp);
    } else {
        $buffer = '';
        $lines = explode(chat_seperator_line, $buffer);
    }

    if($chatline != '') {
        $fp = fopen (chat_data_file, 'w+');
   
        //    Convert the lines into an array of lines:
        //    Check that there are <n> chatlines available:
        if(sizeof($lines) < chat_maxlines) {
            $nsize = sizeof($lines);
            for($n=$nsize;$n<chat_maxlines;$n++) {
                $lines[$n] = '&nbsp;';
            }
        }
   
        //    Scroll all lines one line up
        for($n=1;$n<chat_maxlines;$n++) {
            $lines[$n-1] = $lines[$n];
        }
        //    ... and insert the new line:
        $lines[chat_maxlines-1] = $chatline;
        //    We need to store (synchronise) the chat file again:
        $buffer = '';
        for($n=0;$n<chat_maxlines;$n++) {
            if($n) $buffer.= chat_seperator_line;
            $buffer.= $lines[$n];
        }
        fwrite($fp, $buffer);
        fclose ($fp);
    }

    $chatlines = htmlEscape($buffer);


    function htmlEscape($string) {
        $string= str_replace("\'",    "%27", $string);
        $string= str_replace("'",    "%27", $string);
        $string= str_replace('\"',    "%22", $string);
        $string= str_replace('"',    "%22", $string);
        $string= str_replace("<", "&lt;", $string);
        $string= str_replace(">", "&gt;", $string);
        return $string;
    }
?>
<html>
<head>
<title>PHP Simple Chat Server</title>
</head>
<body>
<form name="serverform" action="" method="gett">
<input type="text" name="chatdata" value="<? echo($chatlines); ?>">
</form>
</body>
</html>
Avatar billede angam Nybegynder
13. januar 2003 - 11:56 #7
Til sidst et stykke Javascript, der primært styrer modtagelse af sætninger.
Held og lykke. Du kan iøvrigt se en kørende version af chatten på http://www.swat-crew.dk (denne version kræver dog at du logger ind).

Filnavn: chat.js

scrollBarRefreshRate    = 100;
chatRefreshRate            = 2000;
max_word_length            = 20;

    function chat_sendkey(control) {
        key = event.keyCode;
        if(key == 13) {
            if(username != 'Anonymous') {
                lineout = doEscape(document.clientform.textline.value);
                if(lineout!='') {
                    lineout = '<span class=chat-nick>'+ username +'&gt;&nbsp;</span>'+ lineout;
                }
                document.clientform.chatline.value = lineout;
                document.clientform.textline.value = '';
                top.chatframe.document.serverform.submit();
            }
        }
    }


    function chat_refresh() {
        buffer = top.chatframe.document.serverform.chatdata.value;
        lines = buffer.split('|');

        out = '';
        size = lines.length;
        for(n=0;n<size;n++) {
            out+= '<tr><td class="chat-line">'+ lines[n] +'</td></tr>';
        }

        out = '<table cellspacing=0 cellpadding=0 border=0>'+ out +'</table>';

        linespan.innerHTML=out;
        this.refreshScrollBar();
    }

    var chatRefreshId;
    function chat_start() {
        chatRefreshId = setInterval(refreshTimer, chatRefreshRate);
    }

    function chat_stop() {
        clearInterval(chatRefreshId);
    }

    function refreshTimer() {
        chat.refresh();
    }





    var scrollRefreshId;
    function chat_refreshScrollBar() {
        scrollRefreshId = setInterval(this.refreshScrollBarDelayed, scrollBarRefreshRate);
    }

    function chat_refreshScrollBarDelayed() {
        linespan.scrollTop=10000;
        clearInterval(scrollRefreshId);
    }


function chatClass() {
    this.refreshScrollBar = chat_refreshScrollBar;
    this.refreshScrollBarDelayed = chat_refreshScrollBarDelayed;

    this.refresh = chat_refresh;
    this.start = chat_start;
    this.stop = chat_stop;
    this.sendkey = chat_sendkey;
}




    function doEscape(string) {
        words = string.split(' ');
        error = false;
        for(n=0;n<words.length;n++) {
            if(words[n].length > max_word_length) {
                alert('I am sorry, but this chat cannot handle words longer than '+ max_word_length +' characters.\n\nWhy don\'t you use our great IRC channel #swat-crew at Quakenet?');
                return '';
            }
        }

        string = string.replace(/\</g,'&amp;lt;');
        string = string.replace(/\"/g,'&amp;quot;');
        string = string.replace(/\'/g,'&amp;#39;');
        return string;
    }
Avatar billede doodoo Novice
13. januar 2003 - 22:01 #8
Det kigger jeg lidt på... :)
Avatar billede doodoo Novice
13. januar 2003 - 22:11 #9
Den er desværre ikke lige hvad jeg skal bruge...
Den skriver kun en linje af gangen og sårn.... desværre ellers mange tak..
Avatar billede angam Nybegynder
13. januar 2003 - 22:22 #10
Een linie ad gangen? Ja, hvad ellers? (Her er jeg ikke helt med)

Tænker du på hvor mange linier den kan vise ialt? Pt. er den sat til 10 (styres i chat-server.php).
Avatar billede doodoo Novice
05. februar 2003 - 18:31 #11
Lukket...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester