定制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 相关文章推荐
php循环输出数据库内容的代码
May 24 PHP
解析php中如何直接执行SHELL
Jun 28 PHP
php递归方法实现无限分类实例代码
Feb 28 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
php查询及多条件查询
Feb 26 PHP
Yii实现复选框批量操作实例代码
Mar 15 PHP
thinkPHP分页功能实例详解
May 05 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 PHP
tp5.1框架数据库子查询操作实例分析
May 26 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 zend解密软件绿色版测试可用
2008/04/14 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
深入浅析react native es6语法
2015/12/09 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
Vue.js用法详解
2017/11/13 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
用webpack4开发小程序的实现方法
2019/06/04 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
Python中__call__用法实例
2014/08/29 Python
python测试驱动开发实例
2014/10/08 Python
解析Python编程中的包结构
2015/10/25 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
Python实现自动整理文件的脚本
2020/12/17 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
荟萃全球保健品:维他购
2018/05/09 全球购物
小学毕业家长寄语
2014/01/19 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
电子商务实训报告总结
2014/11/05 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android