繁体中文
设为首页
加入收藏
当前位置:PHP技术首页 >> PHP基础 >> PHP:404错误陷阱并email给管理员的程序

PHP:404错误陷阱并email给管理员的程序

2005-01-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【

# 404.PHP, 8/10/2000.

# Traps 404 errors and mails a notice to the webmaster.

# Requires PHP 3.0 or newer, and mail capability on your system.

#

# Copyright 2000 shaun@shat.net under the GNU Public License.

# Disclaimer: I wrote this script for me, and it works for me.

# If it doesn't work for you, or makes your server explode,

# that's life. Please email with questions or bug reports.

# Set these variables to configure the script:

# Set $domain to your domain name (no www)

$domain = "your.domain.com";

# Set $docroot to the URL of the directory which contains your

# .htaccess file. Don't include trailing slash.

$docroot = "http://your.domain.com";

# Font face you'd like to use on the 404 page

$fontface = "Verdana";

# Font size you'd like to use on the 404 page

$fontsize = "2";

# Background color of the 404 page (default is white)

$bgcolor = "#ffffff";

# Text color you'd like to use on the 404 page (default is black)

$textcolor = "#000000";

# This script is capable of mailing the details of each 404 error

# to the webmaster. Use the $reportlevel variable to control when

# you receive these reports.

#

# 0 = don't use the email capabilities at all

# 1 = send email only if the error's referer contains your domain name

# (i.e. the 404 was generated by a broken link on your site)

# 2 = send email any time a 404 error is generated (useful for tracking

# broken links at other sites which link to you)

$reportlevel = 2;

# Set $emailaddress to the email address of whoever should be

# notified of 404 errors. Don't escape the @ symbol. This will also

# be used as the "from" address on any emails the script generates.

# You can leave this unassigned if you're not using email features.

$emailaddress = "you@your.domain.com";

################################################################

# DON'T EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING #

################################################################

# If you want to edit the script, I've commented profusely :) #

################################################################

# The print_details function is what prints the 404 error to

# the visitor. As far as I know, PHP3 doesn't incorporate Perl's

# print <<"EOT" ability. PHP4 does allow this capability

# but the script was written for PHP3. So, you have to use

# a lot of echo statements if you want to retain PHP3 compat.

function print_details()

{

# Request access to the global variables we need

global $fontface, $fontsize, $docroot, $REQUEST_URI, $reportlevel;

global $bgcolor, $textcolor

# Print the 404 error in web format

echo "404 Not Found";

echo "";

echo "404 Not Found";

echo "

";

echo "We're sorry. The page you requested, $docroot$REQUEST_URI, doesn't exist";

echo " on this server.";

# If an email report is being generated, let the visitor know:

if ($reportlevel != 0)

{

echo "

";

echo "The details of this error have automatically been mailed to the webmaster.";

}

# Close up the HTML tags

# echo "";

return;

}

# The send_email function sends the details of the 404 error to the

# webmaster.

function send_email()

{

# Request access to the global variables we need

global $REQUEST_URI, $HTTP_REFERER, $emailaddress, $REMOTE_ADDR, $docroot;

# Build the $errortime variable to contain the date/time of the error.

# Using date() likely would have been better, but I already had this code

# elsewhere, and I'm lazy.

$today = getdate();

$month = $today[mon];

$mday = $today[mday];

$year = $today[year];

$hours = $today[hours];

$minutes = $today[minutes];

$errortime = "$month/$mday/$year at $hours:$minutes";

# Create the body of the email message

$message .= "404 Error Report\n\nA 404 error was encountered by $REMOTE_ADDR";

$message .= " on $errortime.\n\n";

$message .= "The URI which generated the error is: \n$docroot$REQUEST_URI\n\n";

$message .= "The referring page was:\n$HTTP_REFERER\n\n";

# Send the mail message. This assumes mail() will work on your system!

mail("$emailaddress", "404 Error Report", $message, "From: $emailaddress");

return;

}

# Done with function declarations. Main function begins here.

# Send a 404 error to the user's browser

print_details();

# See whether or not we should send an email report. If so, do it.

if ($reportlevel != 0)

if ($reportlevel == 1) {

if (eregi($domain,$HTTP_REFERER))

send_email(); }

else

send_email();

# All done!

exit;

?>

责任编辑:admin
相关文章