定制404错误页面,并发信给管理员的程序
如果您的用户找不到他要的页面,如何给他一个友好的答复,并且你也知道发生了这个错误呢,看看下面这段程序,是用来定制404错误页面和发通知给网管的好东西。

<?php
# 设置 $domain 为你的域名 (注意没有www)
$domain "oso.com.cn";
# 设置URL,注意没有后划线 /
$docroot "http://www.oso.com.cn";
# 设置错误信息的字体
$fontface "Verdana";
# 设置404页面的字体大小
$fontsize "2";
# 设置404页面的背景颜色,缺省是白色
$bgcolor "#ffffff";
# 设置文字颜色,缺省是黑色
$textcolor "#000000";

# 使用 $reportlevel 变量来控制是否发信给网管
# 0 = 根本不用发信,嘿,teaman怎么会出错呢
# 1 = 只有在页面含有你的DOMAIN NAME时才发信
# 2 = 即使是与我连接出现的断连也发信,有可能是友情站点
$reportlevel 2;  //这种最保险了

$emailaddress "[email protected]"//设置收错误信息的邮箱


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 "<html><head><title>404 没有找到页面</title></head>";
   echo 
"<body bgcolor="$bgcolor" text="$textcolor">";
   echo 
"<b><h1>404 对不起,我没有找到您要求的页面</h1></b>";
   echo 
"<p><font face="$fontface" size="$fontsize">";
   echo 
"奥索网管提醒您,您要求的页面 $docroot$REQUEST_URI, doesn't exist";
   echo 
" on this server.</font></p>";

   if (
$reportlevel != 0)
     {
      echo 
"<p><font face="$fontface" size="$fontsize">";
      echo 
"错误信息已经发送到奥索网管手中.";   
     }

   return;
  }


# EMAIL处理函数 

function send_email()
  {
   
# Request access to the global variables we need
   
global $REQUEST_URI$HTTP_REFERER$emailaddress$REMOTE_ADDR$docroot;

   
# 定制发送的消息,如时间地点等.
   
$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 ReportnnA 404 error was encountered by $REMOTE_ADDR";
   
$message .= " on $errortime.nn";
   
$message .= "The URI which generated the error is: n$docroot$REQUEST_URInn";
   
$message .= "The referring page was:n$HTTP_REFERERnn";

   
# Send the mail message. This assumes mail() will work on your system!
   
mail("$emailaddress""404 Error Report"$message"From: $emailaddress");  //好,把信发出去
   
   
return;
  }


# 下面这些是根据变量$reportlevel的设置来发信与否。
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;

?>