cari
php 404错误怎么改写Jul 13, 2020 am 09:11 AM
php

php 404错误的改写方法:首先设置URL,并设定时区;然后调用PHP内置函数Mail发送电邮;接着设置要访问的扩展名;最后将相关代码文件设置为“404.php”即可。

php 404错误怎么改写

用PHP来改写404错误页

404错误,很多人都知道,如果要访问的url不存在的时候就读取显示这个页面.以往在处理404方面我们通常的做法是要麼简单写几行字,而有心人 士或许还会对其稍加美化,另外一少部份想投机取巧的傢伙甚至用meta标籤做延时转向,仅此而已,其实404还可以帮我们做很多事,这就是今天我们要讨论 的重点了.

 

首先我来说明一下我的404究竟都能帮我做哪些事情:

 

1.他可以告诉我何时来自哪裡的用户要访问我哪个URL结果失败了.

 

2.他能告诉我对方為何要访问这个URL,并帮助我优化网站

 

3.他能告诉我对方的IP地址

 

4.他能告诉我此人的居心何在

 

5.我可以让他把那些不想告诉我的给闭嘴

 

6.他能把他想要告诉我的用email方式发给我

 

7.他能帮我做301永久重定向.

 

8.他能告诉我有人正在试图入侵我的网站或主机

 

    听起来很玄也很炫,好吧,接下来我们就来讨论一下究竟他是怎麼做到的.逐一分析:

 

1.我们可以用PHP捕捉用户的来源URL和当前的URL,所以第一点我们可以很简单的做到.

 

2. 因為有了来源URL,所以你就能很直观的猜测到用户的意图了,我举个例子,就像我的网站http://lailinlin.com,如果某个用户的来源URL 是http://lailinlin.com,而捕捉到他目前的URL是http://lailinlin.com/user.php?id=1这就说明此人在瀏览我的网站的时候当点击了某个人的个人资料页时结果找不到这个人的资料从而出错,说明:ID=1的这个可能不存在货已经被删掉了,那麼你就要看一下网站上 是否还有这个URL的超链接,如果有的话就要想办法把它给删掉吧!

 

3.这个功能就比较简单了,只需要用PHP捕捉一下对方的ip即可.然后配合其他网站的IP转物理地址的功能就能知道此人来自哪裡了.

 

4. 这个功能很好,很强大.因為我的网站http://lailinlin.com是自己配置的服务器,所以安全方面都要靠自己来处理,而往往有些不入流的傢伙对别人的服务器感 兴趣,他们会用程序尝试各种方法来进入服务器,而此时你就会发现你在短时间内收到大量的404错误,且来源URL為空,他们要访问的URL都是一些很敏感 的URL,此时你需要做的就是打开你的防火墙设置,然后乾净俐落的封掉这个IP.最近这段时间我就是用此方法封了几十个IP,真是小兵立大功!忘记说了, 信息產业部的IP也被我封了,我服务器在台湾你来验证个什么劲,真是的~~!

 

5.说实话,这个插件刚开始的时候让我非常烦恼,因為托他 的福我每天会收到几百封Email,有的是因為用户正常瀏览导致的,有的是因為各家搜索引擎来採集内容导致的,有些是因為小瘪三们想入侵导致的,总之不厌 其烦,后来我稍作改动,把扩展名符合条件或IP符合条件的都加入了验证,只要这些符合条件就不用发送Email了,这样一来清爽多了.

 

6. 这一切都脱离不了PHP即时发送Email的功能,我的做法是修改PHP.INI来实现PHP内部mail函数发送,当然了如果你也可以用其他的方法,例 如:安装sendmail或者开发一个mail类来藉助第三方smtp发送皆可.只要你爽就好(具体细节不是今天的讨论范围).

 

7.既 然能够访问到这个页面,说明用户访问的URL是不存在的,所以我们要引导用户能够访问到正确的URL才对,那麼既然是引导用户访问正确的URL或许你会说 直接用一个meta标籤或一句JS延时就行了何必大费周章301转向呢?因為我不想被搜索引擎认為我是在作弊!回答完毕.

 

8.这一点我在上边已经阐述过了,基本上对於小瘪三的判断要根据你的经验和对你自己网站的熟悉程度来决定,更有甚者,你要大体瞭解你的网站都有哪些URL被其他网站给反链了(经验啊,非一朝一夕能一蹴而就的).

 

该说的,该放的否完了,接下来好戏要上演了,把下边的代码存為404.php,然后apache或nginx之类的把你的404错误页指向过来就行了.

<?PHP
  
  
#设置URL,注意没有后划线/
$MyURL = (isSet($_SERVER[&#39;HTTP_HOST&#39;])) ? Str_iReplace(&#39;http://&#39;,&#39;&#39;,StrToLower(rTrim($_SERVER[&#39;HTTP_HOST&#39;],&#39;/&#39;))) : &#39;www.7di.net&#39;;
  
#设置URL,注意没有后划线/
$MyDomain = (isSet($_SERVER[&#39;HTTP_HOST&#39;])) ? &#39;http://&#39;.Str_iReplace(&#39;http://&#39;,&#39;&#39;,StrToLower(rTrim($_SERVER[&#39;HTTP_HOST&#39;],&#39;/&#39;))) : &#39;http://www.7di.net&#39;;
  
//設定時區.主要用來修正8小時時差
Date_Default_Timezone_Set(&#39;Etc/GMT-8&#39;);
  
//输出头部
Header(&#39;Content-type:text/html; charset=utf-8&#39;);
  
/**
发送電郵
参数:
收件人,郵件標題(不可有換行符),郵件內容(行與行之間必須用\n分隔,每行不可超過70個字符)
說明:
調用PHP內置函式Mail發送電郵
返回:
返回布爾值
用法:
$IsSend=Fun::Mail2($email,$tit,$msg);
/**/
Function Mail2($to,$tit,$msg) {
IF(Filter_var($to,FILTER_VALIDATE_EMAIL)==&#39;&#39;){
throw new Exception(&#39;電郵地址錯誤!&#39;);
}
  
$tit=&#39;=?UTF-8?B?&#39;.Base64_Encode($tit).&#39;?=&#39;;
$msg = str_replace("\n.","\n..",$msg); //Windows如果在一行开头发现一个句号则会被删掉,要避免此问题将单个句号替换成两个句号
  
Return Mail($to,$tit,$msg,&#39;From:see7di@gmail.com&#39;."\n".&#39;Content-Type:text/html;charset=utf-8&#39;);
}
  
$msg=&#39;<table cellspacing="0" cellpadding="0" border="0"><tr><td style="padding:5px;background-color:#F57900;font-size:13px;border:2px solid #222;color:#222;">&#39;;
$msg.=(isSet($_SERVER[&#39;REMOTE_ADDR&#39;])) ? "<b> 來訪者IP是:</b><br><a href=&#39;http://www.ip138.com/ips138.asp?ip={$_SERVER[&#39;REMOTE_ADDR&#39;]}&action=2&#39; target=&#39;_blank&#39;>{$_SERVER[&#39;REMOTE_ADDR&#39;]}</a><br>" : &#39;&#39;;
$msg.="<b>來訪時間:</b><br>".date(&#39;Y-m-d H:i:s&#39;,time()).&#39;<br><br>&#39;;
$msg.=(isSet($_SERVER[&#39;REMOTE_HOST&#39;])) ? "<a href=&#39;http://www.ip138.com/ips138.asp?ip={$_SERVER[&#39;REMOTE_HOST&#39;]}&action=2&#39; target=&#39;_blank&#39;>{$_SERVER[&#39;REMOTE_HOST&#39;]}</a><br><br>" : &#39;<br>&#39;;
$msg.=(isSet($_SERVER[&#39;HTTP_USER_AGENT&#39;])) ? "<b>來訪者詳細資料:</b><br>{$_SERVER[&#39;HTTP_USER_AGENT&#39;]}<br><br>" : &#39;&#39;;
$msg.=(isSet($_SERVER[&#39;REQUEST_URI&#39;])) ? "<b>要訪問的頁面是:</b><br>{$MyDomain}{$_SERVER[&#39;REQUEST_URI&#39;]}<br><br>" : &#39;&#39;;
$msg.=(isSet($_SERVER[&#39;HTTP_REFERER&#39;]) And Trim($_SERVER[&#39;HTTP_REFERER&#39;])!=&#39;&#39;) ? "<b>來源地址是:</b><br>{$_SERVER[&#39;HTTP_REFERER&#39;]}<br><br>" : &#39;&#39;;
$msg.=&#39;</td></tr></table>&#39;;
  
//哪些類型的URL不發Email,如果不屏蔽掉這些的話能煩死我
$arr=Array(&#39;mp3&#39;,&#39;rm&#39;,&#39;swf&#39;,&#39;jpg&#39;,&#39;gif&#39;);
  
//哪些IP不發Email,這些基本都是搜索引擎的蜘蛛
$arrIP=Array(&#39;66.249.77.217&#39;,&#39;66.249.74.67&#39;);
  
//要訪問的擴展名
$needEx=Explode(&#39;.&#39;,StrToLower(Trim($_SERVER[&#39;REQUEST_URI&#39;])));
$needEx=end($needEx);
  
IF(!In_Array($needEx,$arr) And !In_Array(Trim($_SERVER[&#39;REMOTE_ADDR&#39;]),$arrIP)) {
Mail2(&#39;see7di@gmail.com&#39;,&#39;來自【&#39;.$MyURL.&#39;】的404錯誤!&#39;,$msg);
}
  
unSet($MyURL,$msg,$needEx,$arr);
Header(&#39;HTTP/1.1 301 Moved Permanently&#39;);
Header ("Location:{$MyDomain}");
Die();

更多相关知识,请访问PHP中文网

Atas ialah kandungan terperinci php 404错误怎么改写. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么设置implode没有分隔符php怎么设置implode没有分隔符Apr 18, 2022 pm 05:39 PM

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual