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

 更新时间:2016年11月25日 16:15  点击:2213
如果您的用户找不到他要的页面,如何给他一个友好的答复,并且你也知道发生了这个错误呢,看看下面这段程序,是用来定制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;
1 设置phpMyAdmin
Language:Chinese simplified (zh-utf-8)
MySQL 字符集:UTF-8 Unicode (utf8)
MySQL 连接校对 gbk_chinese_ci
2 创建数据库时
整理设置成 gbk_chinese_ci
3 用SQL建立表中
ENGINE=MyISAM DEFAULT CHARSET=gbk;
ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40 ;
4 检查表结构中
varchar(100) 的整理属性为gbk_chinese_ci
其它类型的整理属性为空
5 代码中加上
$db->query("SET CHARACTER SET GBK"); Linux下需要,Windows下不需要这个相当于Connection Character Sets and Collations


当你声明一个类,你需要列出对象应有的所有变量和所有函数—被称为属性和方法。列表1中显示了一个类的构成. 注意在大括号({})内你只能声明变量或者函数。列表2中显示了如何在一个类中定义三个属性和两个方法。
  列表1

class Name extends Another Class
{
 Access Variable Declaration
 Access Function Declaration
}
  列表2

//定义一个跟踪用户的类
class User
{
 //属性
 public $name;
 private $password, $lastLogin;
 //方法
 public function __construct($name, $password)
 {
  $this->name = $name;
  $this->password = $password;
  $this->lastLogin = time();
  $this->accesses ;
 }
 // 获取最后访问的时间
 function getLastLogin()
 {
  return(date("M d Y", $this->lastLogin));
 }
}
//创建一个对象的实例
$user = new User("Leon", "sdf123");
//获取最后访问的时间
print($user->getLastLogin() ."
n");
//打印用户名
print("$user->name n");
?>
  当你声明属性,你不需要指明数据类型。变量可能是整型,字符串或者是另一个对象,这取决于实际情况。在声明属性时增加注释是一个好主意,标记上属性的含义和数据类型。
  当你声明一个方法,你所做的和在类外部定义一个函数是一样的。方法和属性都有各自的命名空间。这意味着你可以安全地建立一个与类外部函数同名的方法,两者不会冲突。例如,一个类中可以定义一个名为date()的方法。但是你不能将一个方法命名为PHP的关键字,如for或者while。
  类方法可能包含PHP中所谓的type hint. Type hint 是另一个传递参数给方法的类的名字. 如果你的脚本调用方法并传递一个不是类的实例的变量,PHP将产生一个”致命(fatal)错误” 。你可能没有给其它类型给出type hint,就像整型,字符串,或者布尔值. 在书写的时候, type hint是否应当包含数组类型仍存在争议。
  Type hint是测试函数参数或者运算符的实例的数据类型的捷径. 你可能总是返回这个方法. 确认你强制让一个参数必须是哪种数据类型,如整型. 列表3确保编译类只产生Widget的实例。
  列表3
  面向对象编程被设计来为大型软件项目提供解决方案,尤其是多人合作的项目. 当源代码增长到一万行甚至更多的时候,每一个更动都可能导致不希望的副作用. 这种情况发生于模块间结成秘密联盟的时候,就像第一次世界大战前的欧洲。
  //haohappy注:喻指模块间的关联度过高,相互依赖性太强.更动一个模块导致其它模块也必须跟着更动。
  想像一下,如果有一个用来处理登录的模块允许一个信用卡处理模块来分享它的数据库连接. 当然出发点是好的,节省了进行另一个数据库连接的支出.然而有时,登录处理模块改变了其中一个变量的名字,就可能割断了两者间的协议.导致信用卡模块的处理出错,进而导致处理的模块出错. 很快地,体系中所有无关的模块都可能由此出错.
  因此,我觉得有点戏剧性地,绝大多数程序员都对耦合和封装心存感激. 耦合是两个模块间依赖程度的量度. 耦合越少越好.我们希望能够从已有的项目中抽走一个模块并在另一个新项目中使用.
  我们也希望在某个模块内部大规模的更动而不用担心对其他模块的影响. 封装的原则可以提供这个解决方案.模块被看待成相对独立,并且模块间的数据通信通过接口来进行. 模块不通过彼此的变量名来窥探另一个模块,它们通过函数来礼貌地发送请求.
  封装是你可以在任何编程语言中使用的一个原则. 在PHP和许多面向过程的语言中,可以偷懒是很有诱惑的.没有什么可以阻止你通过模块来构建一个假想的WEB. 面向对象编程是使程序员不会违背封装原则的一种方法.
  在面向对象编程中,模块被组织成一个个对象. 这些对象拥有方法和属性. 从抽象的角度来看,方法是一个对象的所做的动作,而属性是对象的特性.从编程角度来看,方法就是函数而属性是变量. 在一个理想化的面向对象体系中,每个部份都是一个对象. 体系由对象及对象间通过方法来形成的联系构成.
  一个类定义了对象的属性. 如果你在烘烤一组甜饼对象,那么类将会是甜饼机. 类的属性和方法是被调用的成员. 人们可以通过说出数据成员或者方法成员来表达.
  每种语言提供了不同的途径来访问对象. PHP从C 中借用概念,提供一个数据类型用来在一个标识符下包含函数和变量。最初设计PHP的时候,甚至PHP3被开发出时,PHP并不打算提供开发超过10万行代码的大型项目的能力。随着PHP和Zend引擎的发展,开发大型项目变得有可能,但无论你的项目规模多大,用类来书写你的脚本将可以让代码实现重用。这是一个好主意,特别当你愿意与别人分享你的代码的时候。
  1. 当您在寻找关于某个具体的 PHP 函数的信息时,请转至 http://php.net/ 。例如:http://php.net/join。这将直接把您带到您地理位置附近的一台服务器上的联机手册中的正确位置上。
 
  2. 试试这个:pear install apc 。pear 命令是一个有用的安装程序,它甚至可以用来安装用 C 编写的 PHP 扩展。在这种情况下,它将安装 APC opcode 高速缓存扩展。
 
  3. 使用 opcode 高速缓存来提高性能。参见 #2。
 
  4. 在 PHP 中混合 OOP 和过程代码不存在任何错误。在对象有意义的时候使用对象,其余情况转用过程。
 
  5. 用您自己定制的 C 或 C 扩展来扩展 PHP 比您想象的要更容易。参见 PHP 源代码版本中的 README.EXT_SKEL。
 
  6. echo <<<EOB 语法对于用完整的 $variable 替换来输出文本块非常有用,并且无需避开任何东西。EOB;
  7. PATH_INFO 很棒!用它来清除难看的 URL。
 
  8. 使用一个记录程序,pear install apd。
 
  9. 数据库抽象大部分是虚构的故事。直接的数据库调用没什么错,它利用您选择的数据库必须提供的所有技巧和窍门,以从中获得尽可能高的性能。
 
  10. 保持使用您的基础技术,并构建简单的程序块。使用无线程的 Web 服务器,避免复杂的框架和抽象层,从而给您自己机会来跟踪和调试可能出现的任何问题。解决 Web 问题很简单;别试图使它变得困难。


[!--infotagslink--]

相关文章

  • 404错误是什么 404错误怎么解决

    403错误是网站访问过程中,常见的错误提示。资源不可用,服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致,比如IIS或者apache设置了访问权限...2017-01-22
  • php中header自定义404状态错误页面

    404页面就是一个告诉搜索引擎这个页面不存在了,同时也提示用户可以选择其它的操作了,下面我来给没有apache操作权限朋友介绍php中自定义404页面的操作方法。 方法一...2016-11-25
  • IIS自定义404错误页避免暴露.NET网站路径信息

    这篇文章主要介绍了IIS自定义404错误页避免暴露.NET网站路径信息,在输入非.aspx页面时,显示默认404页面,暴露站点路径信息,本文就给出了一个解决方法,需要的朋友可以参考下...2016-01-27
  • 用php定制404错误页面,并发信给管理员的程序

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

    关于网站错误页面与无效页面处理有很多的一些小技巧了,如果处理的好我们可以对网站权重有少小的提升哦,如果处理不好那对网可能负面影响哦,下面一起来看看如何处理这些错...2016-10-10
  • php header 404错误包含文件出现乱码解决办法

    本文章来给大家介绍php header 404错误包含文件出现乱码解决办法,有碰到此类问题的同学可进入参考参考。 通常在通过php判断一个不存在的资源(比如category、produc...2016-11-25
  • 如何让apache支持.htaccess并设置404错误页

    如何让apache支持.htaccess,今天我在看seo 优化时发现的一个问题,就是定义页面的404错误对网站优化有一点的好处,所以我也要把自己主机上的找不到的页面设置到这里来,下面就...2016-01-28
  • php header 404跳转错误页面实例

    404页面是一种友好的错误提示页面,在php中我们可以利用php,apache,hatcess三种方法来实现向浏览器发送404错误页面状态,下面我来介绍其它的php header函数实现404错误页...2016-11-25
  • ASP.NET MVC自定义错误页面真的简单吗?

    ASP.NET MVC自定义错误页面真的简单吗?这篇文章主要介绍了ASP.NET MVC自定义错误页面,感兴趣的小伙伴们可以参考一下...2021-09-22
  • ASP.NET MVC中异常处理&自定义错误页详析

    当ASP.NET MVC程序出现了异常,怎么处理更加规范?下面这篇文章主要给大家介绍了关于ASP.NET MVC中异常处理&自定义错误页的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起学习学习吧。...2021-09-22
  • 在ASP.NET Core中显示自定义的错误页面

    大家在用浏览器访问服务器时,不同情况下会返回不同的信息。服务器发生错误就会返回错误信息,我们最熟悉的就是404错误页面,但是这里我想和大家分享下在ASP.NET Core中如何显示自定义的500或404错误页面,有需要的朋友们可以参考借鉴,下面来一起看看吧。...2021-09-22
  • Laravel 5.1自定义500错误页面的例子

    Laravel 5.1中500错误是程序错误,程序错误一定是系统自带的500错误,如果我们想自定义的话可以和小编来看看如何做。 编辑PHP文件app/Exceptions/Handler.php内容如...2016-11-25
  • SpringBoot2.3定制错误页面的方法示例

    这篇文章主要介绍了SpringBoot2.3定制错误页面的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-12
  • 404错误页面需要注意的几点事项

    在我们日常运营网站的时候,相信各位站长都会碰到这种状况,那就是经常因为改动栏目或者文件名称,导致站内出现大量的无效链接,而这种链接又是存在但是却打不开的,因此这对搜...2016-10-10
  • .net中自定义错误页面的实现升级篇

    这篇文章主要给大家介绍了关于.net中自定义错误页面实现的相关资料,这篇文章是之前的升级篇,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • IIS部署asp.net报404错误的解决方法

    进行IIS部署asp.net时报404错误,解决方法可以通过手动往IIS注册.net环境,具体实现如下,有类似情况的朋友可以参考下哈...2016-01-27
  • 直接用php的header发送404错误页面的方法实例

    在开发网站的时候,有时我们为了友好的提示用户输入的网址不存在,用设置一个 404 错误页面。设置 404 还有一个好处就是防止恶意用户猜测你的url参数。本文我们来讲讲用p...2016-11-25
  • php header()实现程序404错误状态

    本文章来告诉你如何利用程序实现php 404信息的发送,有需要的同学可以参考一下下哈。 针对apache配置中的ErrorDocument 404 /404.php功能,把nginx配置中的 ...2016-11-25
  • 自定义404错误页

    目录 1. What is 404 什么是404 2. 创建一个。htaccess文件 3. 在custom404页 4. 例如custom404页 什么是404。 .您有多个看到404 1 brazillian时候对...2016-09-20
  • apache和.htaccess设置404错误页面方法

    为Apache Server设置 404错误页面的方法很简单,只需在.htaccess 文件中加入如下内容即可: 代码如下 复制代码 ErrorDocument 404 /notfound.php ...2016-01-28