Προς το περιεχόμενο

κατασκευή minichat


mat978

Προτεινόμενες αναρτήσεις

Δημοσ.

Παραθέτω τον παρακάτω κώδικα που είναι για κατασκευή minichat σε site:

 

<?

 

$latest = $DOCUMENT_ROOT . "htdocs/minichat2.latest";

$archive = $DOCUMENT_ROOT . "htdocs/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>

 

 

 

 

και ας μου λύσει κάποιος την απορία γιατί δεν λειτουργεί; Γράφω ένα μήνυμα και πατώντας Submit εξαφανίζονται τα γράμματα και δεν κάνει τίποτα άλλο.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...