首页 >后端开发 >php教程 >PHP 异常与错误 笔记与总结(18 )页面重定向实现

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

WBOY
WBOY原创
2016-06-13 12:22:35972浏览

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