Jump to content

Recommended Posts

Hi,
I'm trying to put a little chatbox/shoutbox on my website. I tried this one:

[code]echo "<form action='chatbox.php' method='get'>";
echo "Name: <input type='text' name='visName' size=15><br>";
echo "Message: <input type='text' name='message' size = 15><br>";
echo "<input type='submit' value='Post' name='post'><br>";
echo "</form>";
CHATBOX.PHP

if(isset($post))
{
    if(file_exists('chatbox.txt'))
    {
        $fileId = fopen('chatbox.txt', 'a');
        fputs($fileId, $_POST['visName']);
        fputs($fileId, $_POST['message']);
        fclose($fileId);
    }
    else
    {
        $fileId = fopen('chatbox.txt', 'w');
        fputs($fileId, $_POST['visName']);
        fputs($fileId, $_POST['message']);
        fclose($fileId);
    }
}

$fileId = fopen('chatbox.txt', 'r');
while(!feof($fileId))
{
    $text = fgets($fileId);
    echo "<table>";
    echo "<tr><td>".$text."</td></tr>";
    echo "</table>";
}
fclose($fileId);
[/code]


And this one:
[code]<?

    /**
    * minichat 2
    * Copyright Paul Mutton, 15th August 2002.
    * http://www.jibble.org/
    *
    * Include this file on a PHP web page to add a mini chat box.
    *
    * Features:-
    *  Totally rewritten from scratch.
    *  Much much more efficient than the previous version.
    *  HTML tags are filtered out.
    *  Imposes a max word size to avoid wrapping issues.
    *  Max nick and message lengths are enforced on the server side.
    *  Accidental "refresh" reposting is avoided.
    *  Appends all messages chronologically to the archive file.
    *  Displays latest 20 messages with the most recent at the top.
    *  Now logs I.P. addresses within comments (do what you want with them).
    *  Displays posting time in correct local time.
    * 
    */

    $latest = $DOCUMENT_ROOT . "/temp/minichat2.latest";
    $archive = $DOCUMENT_ROOT . "/temp/minichat2.archive";
    $size = 20;
    $nick_size = 20;
    $message_size = 256;
    $max_word_size = 20;
   
?>

<table width="120" align="center" border="0">
<tr>
  <td>
  <p align="center">
    <font face="arial,sans-serif"><b><a href="http://www.jibble.org/chatbox.php">minichat 2</a></b></font>
  </p>
  <p align="center">
    <form name="minichat_form" method="POST" action="<? echo $_SERVER['PHP_SELF']; ?>">
    <font face="arial,sans-serif" size="2">
      <input type="hidden" name="minichat_md5" value="<? if (isset($minichat_message)) {echo md5($minichat_message);} ?>">
      Nick:<br>
      <input type="text" name="minichat_nick" maxlength="<? echo $nick_size; ?>" size="15" style="font-family: Verdana, Arial, Helvetica, Sans-serif; font-size: 10px"><br>
      Message:<br>
      <textarea name="minichat_message" cols="16" rows="3" style="font-family: Verdana, Arial, Helvetica, Sans-serif; font-size: 10px"></textarea><br>
      <input type="submit" name="minichat_submit" value="Submit">
    </font>
    </form>
  </p>
  <p>
    <font face="arial,sans-serif" size="1">

<?
   
    // Check to see if the user is trying to post something.
    if (isset($minichat_md5) && isset($minichat_nick) && isset($minichat_message)) {
       
        // Replace any new line stuff with a space.
        $nick = strtr($nick, "\r\n", "  ");
        $message = strtr($message, "\r\n", "  ");

        // Trim leading and trailing whitespace where necessary and remove slashes.
        $nick = trim(stripslashes($minichat_nick));
        $message = trim(stripslashes($minichat_message));
       
        // Only proceed if the md5 hash of message is not repeated.
        if (md5($message) != $minichat_md5) {
       
            // Only proceed if the user actually filled in both fields.
            if (strlen($nick) > 0 && strlen($message) > 0) {
               
                // If the fields are too long, then chop them to the limits.
                if (strlen($nick) > $nick_size) {
                    $nick = substr($nick, 0, $nick_size);
                }
                if (strlen($message) > $message_size) {
                    $message = substr($message, 0, $message_size);
                }
               
                // Remove new line characters from the input.
                $nick = str_replace("\n", " ", $nick);
                $message = str_replace("\n", " ", $message);
               
                // Enforce the maximum word size by breaking up $message into lines.
                $message = preg_replace("/([^\s]{20})/", "$1\n", $message);
               
                // Now we can encode the nick and message into HTML.
        $nick = htmlentities($nick);
                $message = htmlentities($message);
               
                // Now replace the new line characters in $message.
                $message = str_replace("\n", "<br>", $message);
               
                // The IP address of the poster, web cache or whatever.
                $ip = $_SERVER['REMOTE_ADDR'];
                $time = date("j M Y - G:i:s T");
               
                // Check to see if the 'latest' and 'archive' files exist and can be written to.
                if (!is_writable($latest) || !is_writable($archive)) {
                    // Touch both files.
                    touch($latest);
                    touch($archive);
                    if (!is_writable($latest) || !is_writable($archive)) {
                        exit("$latest or $archive is not writable. Please check your permissions and try again.");
                    }
                }
               
                // Read every line of the 'latest' file into an array.
                $lines = file($latest);
                $bottom_index = count($lines);
               
                // Note that each entry takes up 4 lines.
                $line_ip = "<!-- $ip -->\n";
                $line_nick = "* <font color=\"#9999ff\">Posted by $nick\n";
                $line_time = "on $time</font><br>\n";
                $line_message = "$message<br><br>\n";

                $entry = $line_ip . $line_nick . $line_time. $line_message;

                $already_posted = 0;
                for ($i = 3; $i < $bottom_index; $i += 4) {
                    if ($lines[$i] == $line_message) {
                        $already_posted = 1;
                        break;
                    }
                }
               
                if ($already_posted == 0) {
                    // Now rebuild the 'latest' file.
                    // Start by entering the new entry at the top.
                    $out = fopen($latest, "w");
                    fwrite($out, $entry);
                   
                    // Then write all other entries except the oldest.
                    if ($bottom_index >= $size * 4) {
                        $bottom_index = $size * 4 - 4;
                    }
                    for ($i = 0; $i < $bottom_index; $i++) {
                        fwrite($out, $lines[$i]);
                    }
                    fclose($out);
                   
                    // Also append the entry to the archive file.
                    $out = fopen($archive, "a");
                    fwrite($out, $entry);
                    fclose($out);
                }
                else {
                    // This avoided a "probably accidental" repost.
                }
               
            }
            else {
                echo "<font color=\"red\">You must fill in both fields</font><br><br>";
            }
        }
        else {
            // This avoided a deliberate repost, maybe we should say something?
        }
       

    }
   
    // include the latest comments on the page.
    if (file_exists($latest)) {
        include($latest);
    }
   
?>

    </font>
  </p>
  </td>
</tr>
</table>[/code]

But I can't seem to get any of them working properly. They won't write data to the files like they're supposed to. And don't tell me to do that unix chmod-thingy, cause I'm running windows.
And yes, the file that calls the script is .php, the files are located correctly.
I've tried both with include, iframe and pasting the code into index.php.

Running:
Apache 2.2
PHP5

Installed latest versions as of december 2006.


Any help would be deeply appriciated since I've been trying to get a working shoutbox for about 7 hours now and not a single one will work. I just want a simple shoutbox on my site before I go in sane.

Thanks in advance.
Link to comment
https://forums.phpfreaks.com/topic/33089-insterting-a-shoutbox-on-my-website/
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.