当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP:404错误陷阱并email给管理员的程序

PHP
从魔兽看PHP设计模式
用SSH与PHP相连接 确保数据传输的安全性
Windows XP系统下安装apache+php+mysql
正则表达式在线检测工具推荐
用php实现远程网络文件下载到服务器
PHP+MYSQL实例:网站在线人数的代码
举例说明ASP和PHP一些相同之处
关于网站计数器的PHP程序代码
PHP实例程序:直接读取数据库信息的三种方法
PHP技巧代码:apache 防盗链两例
Apache、PHP和mySQL的配置的过程
新手学PHP和MySQL动态网站开发教程
如何搭建一个安全的PHPWind服务器?
PHP常用开发工具分析
PHP动态网页开发中常用的一些函数
初学认识一些用PHP开发的博客程序
PHP动态的在图片上添加透明度渐变的效果
PHP smarty的ubb插件实现彩字
PHP在大型网站开发中的一些问题
PHP匹配变音使404页面更加智能化

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 141 ::
收藏到网摘: n/a

<?
#404.php,8/10/2000.
#Traps404errorsandmailsanoticetothewebmaster.
#RequiresPHP3.0ornewer,andmailcapabilityonyoursystem.
#
#Copyright2000[email protected]undertheGNUPublicLicense.
#Disclaimer:Iwrotethisscriptforme,anditworksforme.
#Ifitdoesn'tworkforyou,ormakesyourserverexplode,
#that'slife.Pleaseemailwithquestionsorbugreports.

#Setthesevariablestoconfigurethescript:

#Set$domaintoyourdomainname(nowww)

$domain="your.domain.com";

#Set$docroottotheURLofthedirectorywhichcontainsyour
#.htaccessfile.Don'tincludetrailingslash.

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

#Fontfaceyou'dliketouseonthe404page

$fontface="Verdana";

#Fontsizeyou'dliketouseonthe404page

$fontsize="2";

#Backgroundcolorofthe404page(defaultiswhite)

$bgcolor="#ffffff";

#Textcoloryou'dliketouseonthe404page(defaultisblack)

$textcolor="#000000";

#Thisscriptiscapableofmailingthedetailsofeach404error
#tothewebmaster.Usethe$reportlevelvariabletocontrolwhen
#youreceivethesereports.
#
#0=don'tusetheemailcapabilitiesatall
#1=sendemailonlyiftheerror'sreferercontainsyourdomainname
#(i.e.the404wasgeneratedbyabrokenlinkonyoursite)
#2=sendemailanytimea404errorisgenerated(usefulfortracking
#brokenlinksatothersiteswhichlinktoyou)

$reportlevel=2;

#Set$emailaddresstotheemailaddressofwhoevershouldbe
#notifiedof404errors.Don'[email protected]
#beusedasthe"from"addressonanyemailsthescriptgenerates.
#Youcanleavethisunassignedifyou'renotusingemailfeatures.

$emailaddress="[email protected]";

################################################################
#DON'TEDITBELOWTHISLINEUNLESSYOUKNOWWHATYOU'REDOING#
################################################################
#Ifyouwanttoeditthescript,I'vecommentedprofusely:)#
################################################################

#Theprint_detailsfunctioniswhatprintsthe404errorto
#thevisitor.AsfarasIknow,PHP3doesn'tincorporatePerl's
#print<<"EOT"ability.PHP4doesallowthiscapability
#butthescriptwaswrittenforPHP3.So,youhavetouse
#alotofechostatementsifyouwanttoretainPHP3compat.

functionprint_details()
{
#Requestaccesstotheglobalvariablesweneed
global$fontface,$fontsize,$docroot,$REQUEST_URI,$reportlevel;
global$bgcolor,$textcolor

#Printthe404errorinwebformat
echo"<html><head><title>404NotFound</title></head>";
echo"<bodybgcolor=\"$bgcolor\"text=\"$textcolor\">";
echo"<b><h1>404NotFound</h1></b>";
echo"<p><fontface=\"$fontface\"size=\"$fontsize\">";
echo"We'resorry.Thepageyourequested,$docroot$REQUEST_URI,doesn'texist";
echo"onthisserver.</font></p>";

#Ifanemailreportisbeinggenerated,letthevisitorknow:
if($reportlevel!=0)
{
echo"<p><fontface=\"$fontface\"size=\"$fontsize\">";
echo"Thedetailsofthiserrorhaveautomaticallybeenmailedtothewebmaster.";
}

#CloseuptheHTMLtags
#echo"</body></html>";

return;
}


#Thesend_emailfunctionsendsthedetailsofthe404errortothe
#webmaster.

functionsend_email()
{
#Requestaccesstotheglobalvariablesweneed
global$REQUEST_URI,$HTTP_REFERER,$emailaddress,$REMOTE_ADDR,$docroot;

#Buildthe$errortimevariabletocontainthedate/timeoftheerror.
#Usingdate()likelywouldhavebeenbetter,butIalreadyhadthiscode
#elsewhere,andI'mlazy.
$today=getdate();
$month=$today[mon];
$mday=$today[mday];
$year=$today[year];
$hours=$today[hours];
$minutes=$today[minutes];
$errortime="$month/$mday/$yearat$hours:$minutes";

#Createthebodyoftheemailmessage
$message.="404ErrorReport\n\nA404errorwasencounteredby$REMOTE_ADDR";
$message.="on$errortime.\n\n";
$message.="TheURIwhichgeneratedtheerroris:\n$docroot$REQUEST_URI\n\n";
$message.="Thereferringpagewas:\n$HTTP_REFERER\n\n";

#Sendthemailmessage.Thisassumesmail()willworkonyoursystem!
mail("$emailaddress","404ErrorReport",$message,"From:$emailaddress");

return;
}


#Donewithfunctiondeclarations.Mainfunctionbeginshere.

#Senda404errortotheuser'sbrowser
print_details();

#Seewhetherornotweshouldsendanemailreport.Ifso,doit.
if($reportlevel!=0)
if($reportlevel==1){
if(eregi($domain,$HTTP_REFERER))
send_email();}
else
send_email();

#Alldone!
exit;

?>