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

PHP
php3:跨平台的服务器端嵌入式脚本语言
关于Zend Optimizer
用PHP3实现文件上载
IIS环境下安装PHP5手记
在Windows2000ADV下配置Apache+PHP5+MySql5
Winodws下IIS/Apache+PHP+MySQL的安装配置
PHP 在Windows 2003 Enterprise Server 、IIS6.0 下的安装
在WIN平台上让你的 Apache 2.0.45 支持 PHP
从实例开始
能得到你是从什么页面过来的,referer的用处
在PHP5中使用DOM控制XML
旧题新貌:PHP截取中文字符串的问题
GraPHPite--PHP图像库新秀
编译php的配置参数
PHP程序与服务器端通讯方法小结
PHP程序与服务器端通讯的方法
用php或js获取图片大小,高宽尺寸.
有关在Windows下配置PHP+Apache+Optimizer失败的问题解决方案
LAMPJT最适用的web开发系统详细配置
实现一个基于Ajax的调查程序

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 109 ::
收藏到网摘: 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;

?>