ホームページ  >  記事  >  バックエンド開発  >  PHP 异常与错误 笔记与总结(18 )页面重定向实现

PHP 异常与错误 笔记与总结(18 )页面重定向实现

WBOY
WBOYオリジナル
2016-06-13 12:22:35935ブラウズ

PHP 错误与异常 笔记与总结(18 )页面重定向实现

在发生错误时,将用户重定向到另一个页面。

<span style="color: #008080;"> 1</span> <span style="color: #000000;">php</span><span style="color: #008080;"> 2</span> <span style="color: #008080;">header</span>('content-type:text/html; charset=utf-8'<span style="color: #000000;">);</span><span style="color: #008080;"> 3</span> <span style="color: #008080;"> 4</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> ExceptionRedirectHandler{</span><span style="color: #008080;"> 5</span> <span style="color: #008080;"> 6</span>     <span style="color: #0000ff;">protected</span> <span style="color: #800080;">$_exception</span><span style="color: #000000;">;</span><span style="color: #008080;"> 7</span>     <span style="color: #0000ff;">protected</span> <span style="color: #800080;">$redirect</span> = '404.html'<span style="color: #000000;">;</span><span style="color: #008080;"> 8</span>     <span style="color: #0000ff;">protected</span> <span style="color: #800080;">$_logFile</span> = 'D:/practise/php/Error/LogException3.log'<span style="color: #000000;">;</span><span style="color: #008080;"> 9</span> <span style="color: #008080;">10</span>     <span style="color: #008000;">//</span><span style="color: #008000;">构造函数中得到异常对象</span><span style="color: #008080;">11</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> __construct(<span style="color: #0000ff;">Exception</span> <span style="color: #800080;">$e</span><span style="color: #000000;">){</span><span style="color: #008080;">12</span>         <span style="color: #800080;">$this</span>->_exception = <span style="color: #800080;">$e</span><span style="color: #000000;">;</span><span style="color: #008080;">13</span> <span style="color: #000000;">    }</span><span style="color: #008080;">14</span> <span style="color: #008080;">15</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> handle(<span style="color: #0000ff;">Exception</span> <span style="color: #800080;">$e</span><span style="color: #000000;">){</span><span style="color: #008080;">16</span>         <span style="color: #800080;">$self</span> = <span style="color: #0000ff;">new</span> self(<span style="color: #800080;">$e</span><span style="color: #000000;">);</span><span style="color: #008080;">17</span>         <span style="color: #800080;">$self</span>-><span style="color: #008080;">log</span><span style="color: #000000;">();</span><span style="color: #008080;">18</span>         <span style="color: #008000;">//</span><span style="color: #008000;">清除所有的输出缓冲</span><span style="color: #008080;">19</span>         <span style="color: #0000ff;">while</span>(@<span style="color: #008080;">ob_end_clean</span><span style="color: #000000;">());</span><span style="color: #008080;">20</span>         <span style="color: #008080;">header</span>('HTTP/1.1 307 Temporary Rediret'<span style="color: #000000;">);</span><span style="color: #008080;">21</span>         <span style="color: #008080;">header</span>('Cache-Control:no-cache, must-revalidate'<span style="color: #000000;">);</span><span style="color: #008080;">22</span>         <span style="color: #008080;">header</span>('Expires: Sun, 05 Jul 2015 22:36:42 GMT'<span style="color: #000000;">);</span><span style="color: #008080;">23</span>         <span style="color: #008080;">header</span>('Location:'.<span style="color: #800080;">$self</span>-><span style="color: #000000;">redirect);</span><span style="color: #008080;">24</span>         <span style="color: #0000ff;">exit</span>(1<span style="color: #000000;">);</span><span style="color: #008080;">25</span> <span style="color: #000000;">    }</span><span style="color: #008080;">26</span> <span style="color: #008080;">27</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> <span style="color: #008080;">log</span><span style="color: #000000;">(){</span><span style="color: #008080;">28</span>         <span style="color: #008080;">error_log</span>(<span style="color: #800080;">$this</span>->_exception->getMessage().<span style="color: #ff00ff;">PHP_EOL</span>, 3, <span style="color: #800080;">$this</span>-><span style="color: #000000;">_logFile);</span><span style="color: #008080;">29</span> <span style="color: #000000;">    }</span><span style="color: #008080;">30</span> <span style="color: #000000;">}</span><span style="color: #008080;">31</span> <span style="color: #008080;">32</span> <span style="color: #008080;">set_exception_handler</span>(<span style="color: #0000ff;">array</span>('ExceptionRedirectHandler', 'handle'<span style="color: #000000;">));</span><span style="color: #008080;">33</span> <span style="color: #008080;">34</span> <span style="color: #008000;">//</span><span style="color: #008000;">测试</span><span style="color: #008080;">35</span> <span style="color: #800080;">$conn</span> = <span style="color: #008080;">mysql_connect</span>('localhost', 'root', 'root123'<span style="color: #000000;">);</span><span style="color: #008080;">36</span> <span style="color: #0000ff;">if</span>(!<span style="color: #800080;">$conn</span><span style="color: #000000;">){</span><span style="color: #008080;">37</span>     <span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">Exception</span>("数据库连接失败"<span style="color: #000000;">);</span><span style="color: #008080;">38</span>     <span style="color: #008080;">39</span> }

跳转到 404 页面:

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。