Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / Kurze-Scripte-und-Codeschnipsel / index.php

Zurück


Der Quellcode dazu


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 
<?php
/**
* Author: Jörg Reinholz, fastix WebDesign & Consult, Kassel, Germany, http://www.fastix.org
* This script comes with ABSOLUTELY NO WARRANTY!
* This script is free software, and you are welcome to redistribute it under certain conditions:
* Licence: GPL, Version 2
* -- http://www.gnu.org/licenses/gpl-2.0.html.
* -- http://www.gnu.de/documents/gpl-2.0.de.html ( deutsche Übersetzung )
**/
 
/** Manual:
* Usage:
* <?php define( 'DEBUG', 2 ); require_once 'plugins/use_strict.php'; ?>
* or:
* <?php require_once 'plugins/use_strict.php'; ?> - in this smart & short case DEBUG will set to 1
 
* The constant DEBUG is also used in this ways:
* DEBUG == 0 or smaller than 0:
* --->The script will NOT break on notices or warnings but show them the  notices or warnings, not the source!
* DEBUG == 1 or greater than 2:
* --->The script will hard break on ALL notices and warnings, but not show the source of the errors... ( standard )
* DEBUG == 2;
* --->The script will show the erroreus source & break on ALL notices and warnings...
 
* Editors - If you use Windows and have Errors
* Do not safe this with a BOM! Maybe your Skripts can not work fine if you do this.
* Show the fine manual of your text-editor.
**/
 
error_reportingE_ALL );
ini_set"html_errors");
set_error_handler( function( $errNo$errStr$errFile$errLine ) {
    if ( ! 
defined'DEBUG' ) ) { define'DEBUG'); }
    if ( ! 
headers_sent( ) ) {
         
header_remove( );
         
header"Cache-Control: no-store, no-cache, must-revalidate" );
         
header$_SERVER['SERVER_PROTOCOL'].'/1.1 500' );
         
header"Status: 500" );
         
header'Content-Type: text/html; charset=utf-8' );
    }
    
$msg "$errStr in $errFile on line $errLine";
    if ( 
$errNo == E_NOTICE )           { $errType "notice"; }
    elseif ( 
$errNo == E_WARNING )      { $errType "warning"; }
    elseif ( 
$errNo == E_USER_WARNING ) { $errType "self triggered warning"; }
    elseif ( 
$errNo == E_USER_NOTICE )  { $errType "self triggered notice"; }
    elseif ( 
$errNo == E_USER_ERROR )   { $errType "self triggered error"; }
    else                              { 
$errType "unknown"; }
    if ( 
$errType ) {
        if ( 
== DEBUG )  {
            
$arErrFile file$errFile );
            
$errMin $errLine 4; if ( $errMin ) { $errMin 1; }
            
$errMax $errLine 1; if ( $errMax >= count$arErrFile ) ) { $errMax count$arErrFile ) - ; }
            for ( 
$i $errMin$i <= $errMax$i++ ) {
              if ( ( 
$i ) && ( isset( $arErrFile[$i] ) ) ) {
                  if ( 
$i ==  $errLine ) {
                      
$arErrText[] = "<b>$i:</b>\t<span style = 'border:1px solid red;'>" htmlspecialcharsrtrim$arErrFile[$i] ) ). "</span>\n";
                  } else {
                      
$arErrText[] = "<b>$i:</b>\t<span>" htmlspecialchars$arErrFile[$i] ) .  "<span>";
                  }
              }
            }
            unset( 
$arErrFile );
        } else {
            
$arErrText[0] = "If you wish to see the relavant part of th source here, then define DEBUG und set this to 2.";
        }
        
$my_php_error_msg_id 'phperr_'.rand( );
        
$errStr preg_replace"/ \[<a href='.*'>.*<\/a>\]/"""$errStr );
        if ( 
DEBUG )  {
           
$errBreaked "The execution of your fine script was hard breaked. Why?";
           
$errScript '';
        } else {
           
$errBreaked '<button onclick="closer_'.$my_php_error_msg_id.'( );">close this message</button> --- ';
           
$errScript "
          <script type=\"text/javascript\">
          if ( 'number' == typeof( phperr_zindex ) ) {
              phperr_zindex = phperr_zindex - 1;
          } else {
              phperr_zindex = 950;
          }
          document.getElementById( '
$my_php_error_msg_id' ).style.zIndex = phperr_zindex;
          function closer_"
.$my_php_error_msg_id."( ) {
            while( o = document.getElementById( '
$my_php_error_msg_id' ) ) {
               o.parentNode.removeChild( o );
            }
          }
          </script>
          "
;
        }
        
#The first line of the output is helpful if the calling script works in a special context. Naturally is this not valid html...
       
print "<!-- ]]\"' --></script></style></iframe></frame></frameset></noscript>
       <div style = 'position:absolute;z-index:9999;top:0;left0;width:80%;border:1em solid red;padding:.5em;color:#008;background-color:#fff;display:block' id = '
$my_php_error_msg_id'>
          <h1>Error! ( Type: &quot;
$errType&quot; )</h1>
            <ul>
              <li><strong>in file:</strong> <pre>" 
htmlspecialchars$errFile ) . "</pre></li>
              <li><strong>in row:</strong> " 
. ( $errLine ) . "</li>
              <li><strong>text: </strong> " 
htmlspecialchars$errStr ) . "</li>
              <li><strong>the most relevant part of code:</strong>  <pre>" 
implode''$arErrText ). "</pre></li>
            </ul>
          <p><strong>
$errBreaked Often the results are not this what expected!</strong></p>
       </div>
       
$errScript
       "
;
        if ( 
DEBUG )  {
           exit;
        }
 
    } else {
        echo 
$msg;
    }
}, 
E_ALL );

?>