Home >Backend Development >PHP Tutorial >PHP Tutorial.Application Example 18_PHP Tutorial
PHP-based chat room (3)
Now we have files that need to be cross-referenced through the $REMOTE_ADDR variable, so that we can distinguish whether the user who wants to post has been banned or not. Very simple:
for ($counter=0;$counter
print("".
"You have been banned from this chat");
exit;
}
}
?>
exit command Will stop execution of the script immediately. Before starting processing of the passed variables, insert a check for the blocked user so that the blocked user cannot use the chat room.
A better way to solve the problem of dynamic IP addresses in some cases is to check the range of the IP address block. A simple function can easily implement it.
function makeMask($ip) {
// remember to escape the . so PHP doesn't think its a concatenation
$ip_array = explode(".", $ip);
$ip_mask = "$ip_array[0].$ip_array[1].$ip_array[2]";
return $ip_mask;
}
?>
Then we put the if replaced with
for ($counter=0;$counter
if (makeMask($REMOTE_ADDR) = = makeMask($banned_array[$counter])) {
print("".
"You have been banned from this chat");
exit;
}
}
?>
We have protection against dynamic IP addresses
Finally we need a way to get the IP in trouble first. My implementation is to record $name and $REMOTE_ADDR. to a file called
iplist.html. For a separate, secret URL, I can monitor the IP address while browsing the messages. This has the added benefit of being able to detect impersonators - The most common "crimes" committed in these places. The creation methods of iplist.html and messages.html are basically the same. First, take the current value out of iplist.html, and we peel off the header information, headers and old ones. IP record, then create a new record, new header information, new footer. To make the layout clearer, I use a table.
$header = " "; $footer = "
"; $new_ip = "$name$REMOTE_ADDR ";
$ip_array = file("iplist.html");
for ( $counter = 1; $counter $old_ips.= $ip_array[$counter]; ?>
Simply write the contents to disk as we did for the message file , so that we have a web chat room. Has better cross-platform compatibility than Java, and requires nothing more than a web browser - I've heard even the Dreamcast works this way!
There are a few things you might want to try doing yourself, including merging some common code snippets into functions, writing a script that automatically adds troublemakers to the target list, and writing a regex expression that scans for messages. URLs and e-mails in the text and automatically convert them into links (like Outlook Express and ICQ do).