定制404错误页面,并发信给管理员的程序


Posted in PHP onOctober 09, 2006

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

<?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 = "webmaster@oso.com.cn"; //设置收错误信息的邮箱

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;

?>

PHP 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
第十一节 重载 [11]
Oct 09 PHP
缓存技术详谈―php
Dec 14 PHP
php auth_http类库进行身份效验
Mar 19 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
php项目开发中用到的快速排序算法分析
Jun 25 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
PHP实现的数据对象映射模式详解
Mar 20 PHP
yii2.0框架场景的简单使用示例
Jan 25 PHP
Laravel框架源码解析之入口文件原理分析
May 14 PHP
php录入页面中动态从数据库中提取数据的实现
Oct 09 #PHP
使用字符串函数输出整数化的PHP版本号
Oct 09 #PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 #PHP
搜索和替换文件或目录的一个好类--很实用
Oct 09 #PHP
非常好的php目录导航文件代码
Oct 09 #PHP
PHP4.04简明安装
Oct 09 #PHP
利用 window_onload 实现select默认选择
Oct 09 #PHP
You might like
php Mysql日期和时间函数集合
2007/11/16 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
angularJS 入门基础
2015/02/09 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
python实现端口转发器的方法
2015/03/13 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
对python 命令的-u参数详解
2018/12/03 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
利用python在excel中画图的实现方法
2020/03/17 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
python 实现aes256加密
2020/11/27 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
如何使用PHP session
2015/04/21 面试题
维德科技C#面试题笔试题
2015/12/09 面试题
质检部职责
2013/12/28 职场文书
初中毕业生感言
2015/07/31 职场文书
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL