45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| // Janky error handler page thingy that looks cool
 | |
| class ErrorHandler 
 | |
| {
 | |
|     public array $errors; // Holds error messages
 | |
| 
 | |
|     public function __construct()
 | |
|     {
 | |
|         ob_Start(); // If an error were to occur, we clear the outputted data so we only show the error page instead of both.
 | |
|         set_error_handler([$this, 'error']);
 | |
|         set_exception_handler([$this, 'exception']);
 | |
|         $this->errors = [];
 | |
|     }
 | |
| 
 | |
|     public function error($errno, $errstr, $errfile, $errline): void
 | |
|     {
 | |
|         $errstr = htmlspecialchars($errstr);
 | |
|         $this->errors[] = "<b>Error[$errno]:</b> $errstr in <b>$errfile</b> at line <b>$errline</b>";
 | |
|         die();
 | |
|     }
 | |
| 
 | |
|     public function exception($exception): void
 | |
|     {
 | |
|         $this->errors[] = "<b>Uncaught Exception:</b> " . $exception;
 | |
|     }
 | |
| 
 | |
|     public function __destruct()
 | |
|     {
 | |
|         if (!$this->errors) {
 | |
|            return; 
 | |
|         }
 | |
|         ob_end_clean(); // Remove current output to be replaced by error page
 | |
|         http_response_code(500);
 | |
|         header_remove();
 | |
| 
 | |
|         echo '<style>body { margin: 1rem; background: tomato; font-family: sans; } #error { padding: 1rem; background: white; margin-bottom: 1rem; border: .1rem solid black; } </style>';
 | |
|         echo '<h1>Error!!1 (✖﹏✖)</h1>';
 | |
|         echo '<p>Oisann! Dette var ikke ment å skje. Dersom det vedvarer, vennligst kontakt nettadministratoren.</p>';
 | |
| 
 | |
|         foreach ($this->errors as $error) {
 | |
|            echo "<div id=\"error\">$error</div>";
 | |
|         }
 | |
|     }
 | |
| } |