Error handler geeft verkeerd resultaat

Status
Niet open voor verdere reacties.

5blabla5

Gebruiker
Lid geworden
27 apr 2009
Berichten
485
Ik heb een script gemaakt/aangepast dat fouten automatisch vervormd tot een automatisch geregeld systeem. Dit systeem mailt, weergeeft (indien ingesteld bij error level), en sluit het script af (indien ingesteld bij error level). Nu krijg ik een verkeerde output, nadat ik 2 fouten laat maken met trigger_error()

Dit is de output (in html):
Estrong>Fout</strong>: <b><em>Foutmodule test</em></b> op lijn <b><em>8</em></b> in het bestand '<b><em>/usr/home/deb28235/domains/habbsafe.nl/public_html/scripts/juhli/config/index.php</em></b>'<br />
Estrong>Fatale fout</strong>: <b><em>Foutmodule test</em></b> op lijn <b><em>10</em></b> in het bestand '<b><em>/usr/home/deb28235/domains/habbsafe.nl/public_html/scripts/juhli/config/index.php</em></b>'

Dit moet de output zijn (in html):
<strong>Fout</strong>: <b><em>Foutmodule test</em></b> op lijn <b><em>8</em></b> in het bestand '<b><em>/usr/home/deb28235/domains/habbsafe.nl/public_html/scripts/juhli/config/index.php</em></b>'<br />
<strong>Fatale fout</strong>: <b><em>Foutmodule test</em></b> op lijn <b><em>10</em></b> in het bestand '<b><em>/usr/home/deb28235/domains/habbsafe.nl/public_html/scripts/juhli/config/index.php</em></b>'

Ik heb <b> en <strong> allebei al geprobeert, maar bij allerbei wordt het eerste haakje vervangen door een E

Dit is het script (index.php en config.php in elkaar):
PHP:
<?php
session_start();


##########################
#    CONFIGURATIONVARS   #
##########################

##     Module Setup     ## // Requied

$config['mysql']['active'] = FALSE;
$config['error']['active'] = TRUE;

## MySQL Database Login ## // Requied

$config['mysql']['host']     = 'localhost'; // Hostnaam
$config['mysql']['user']     = 'user';      // Gebruikersnaam
$config['mysql']['password'] = 'password';  // Wachtwoord
$config['mysql']['database'] = 'database';  // Databasenaam


##  Database Errortext  ## // Requied

$config['mysql']['noconnect'] = 'MySQL Fout: Gegevens kloppen niet!<br />'; // Gegevens kloppen niet
$config['mysql']['noselect']  = 'MySQL Fout: Database bestaat niet!<br />'; // Database bestaat niet
$config['mysql']['fatalstop'] = 'Fatale verbindingsfout<br />';                   // Wordt weergeven met de bovenstaande tekst als connect of select niet werkt


##    Errorlevel text   ## // Requied

// Keuze tussen die (Fout laten zien, script stoppen), show (Fout laten zien, script voortzetten) en hide (Fout verbergen, script voortzetten)

// Fatal error
$config['errorlevel']['ERROR']    = 'Fatale fout';
$config['erroraction']['ERROR']   = 'die';

// Warning
$config['errorlevel']['WARNING']  = 'Fout';
$config['erroraction']['WARNING'] = 'show';

// Parse error
$config['errorlevel']['PARSE']    = 'Parser fout';
$config['erroraction']['PARSE']   = 'show';

// Notice
$config['errorlevel']['NOTICE']   = 'Fout';
$config['erroraction']['NOTICE']  = 'hide';


##      Echo error      ## // Requied

$config['error'] = "<strong>[errorlevel]</strong>: <b><em>[error]</em></b> op lijn <b><em>[line]</em></b> in het bestand '<b><em>[file]</em></b>'";
$config['error']['subject'] = "Error Handler: Fout gedetecteerd";


##     Domain setup     ## // Not requied

$config['domain']['sitename'] = 'http://www.example.com/'; // domeinnaam inclusief http, www en / achter naam
$config['domain']['owner']    = 'NoName';                  // Naam van eigenaar/bedrijf website
$config['domain']['email']    = 'juhli@habbsafe.nl';       // Email van eigenaar/bedrijf



##########################
# MYSQL DATABASE CONNECT #
##########################

if($config['mysql']['active']) {

$connect = @mysql_connect($config['mysql']['host'], $config['mysql']['user'], $config['mysql']['password']);
if(!$connect) {
    echo $config['mysql']['noconnect'];
}

$select = @mysql_select_db($config['mysql']['database'], $connect);

if(!$select) {
    echo $config['mysql']['noselect'];
}

if(!$connect || !$select) {
    echo '<br />'.$config['mysql']['fatalstop'];
    die();
}

}

##########################
#     ERROR HANDLING     #
##########################

if($config['error']['active']) {

function ErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
    return;
}

global $config;

$errorlevels = array(
1 => 'ERROR',
16 => 'ERROR',
64 => 'ERROR',
256 => 'ERROR',
4069 => 'ERROR',
2 => 'WARNING',
32 => 'WARNING',
128 => 'WARNING',
512 => 'WARNING',
4 => 'PARSE',
8 => 'NOTICE',
1024 => 'NOTICE');
   
if(array_key_exists($errno, $errorlevels)) {
    $level = $errorlevels[$errno];
} else {
    $level = 'NOLEVEL';
}

$errorlevel = $config['errorlevel'][$level];
$error = $errstr;
$line = $errline;
$file = $errfile;

$showerror = $config['error'];
$showerror = str_replace('[errorlevel]', $errorlevel, $showerror);
$showerror = str_replace('[error]', $error, $showerror);
$showerror = str_replace('[line]', $line, $showerror);
$showerror = str_replace('[file]', $file, $showerror);

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($config['domain']['email'], $config['error']['subject'], $showerror . ' <b>IP</b>: <em>' . $_SERVER["REMOTE_ADDR"] . '</em>', $headers);

if($config['erroraction'][$level] == 'show') {
    echo $showerror . '<br />';
} elseif($config['erroraction'][$level] == 'hide') {
    // Do nothing
} elseif($config['erroraction'][$level] == 'die') {
    echo $showerror;
    die();
}


return true;
}

set_error_handler("ErrorHandler");


}

ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);

trigger_error("Foutmodule test", E_USER_WARNING);

trigger_error("Foutmodule test", E_USER_ERROR);


echo 'Script is uitgevoerd!';

?>

Weet iemand wat het probleem is? Alvast bedankt!
 
Echo het eens gewoon op de pagina? Het zou iets met de mail te maken kunnen hebben die niet goed in HTML mode staat...

Anders weet ik het zo ook niet, het is al laat :P
 
Het is al opgelost, op het forum van phpfreakz heb ik hetzelfde gevraagt, en daar zeiden ze dat het te maken had met het volgende stukje code:
PHP:
$config['error'] = "<strong>[errorlevel]</strong>: <b><em>[error]</em></b> op lijn <b><em>[line]</em></b> in het bestand '<b><em>[file]</em></b>'";
$config['error']['subject'] = "Error Handler: Fout gedetecteerd";

Hier wordt $config['error'] gezien als een array, gezien de andere regel er een array van maakt. Nu wordt hier een karakter vervangen ofzoiets. Ik heb het iig opgelost door $config['error'] te vervangen door $config['error']['message'] :)

Maar toch nog bedankt :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan