Avatar billede jck_true Nybegynder
20. august 2007 - 11:51 Der er 11 kommentarer og
1 løsning

Hvor kommer kaldet fra?

Hej
Er ved at lave en function som skal gemme alle fejl der opstår undervejs
function error($errornote="Error")
Nu har jeg bare et lille problem. Er det ikke muligt at finde ud af hvor funktionen er blevet kaldt fra?

Så vil det være lettere at sporer fejlen bagefter.
Avatar billede jakobdo Ekspert
20. august 2007 - 12:34 #1
Måske via: __FILE__
Avatar billede jck_true Nybegynder
20. august 2007 - 12:48 #2
Nej duer ikke da hele mit script kører gennem index.php.
Avatar billede zurekk Nybegynder
20. august 2007 - 12:51 #3
Det kan du vel angive..
F.eks.

function error( $message="You suck!", $from )
{
$error[1]['message'] = $message;
$error[1]['from'] = $from;
}

if( $age < 100 )
error( 'You\'re too young!!!', 'signup' );
Avatar billede zurekk Nybegynder
20. august 2007 - 12:56 #4
eller

$error[$from]['message'] = $message;
Avatar billede jck_true Nybegynder
20. august 2007 - 13:27 #5
Ville helst være fri for at skulle angive $from variablen hver gang jeg vil oprette en fejlmeddelse. Håbede bare på der ville væren en speciel function
Avatar billede zurekk Nybegynder
20. august 2007 - 13:32 #6
ikke rigtigt..

Du kan også bare bruge:

define( 'location', 'signup' );

Og så: error( 'Fejl!!!', location );
Avatar billede zurekk Nybegynder
20. august 2007 - 13:32 #7
Så gør den det halvt automatisk :)
Avatar billede jck_true Nybegynder
21. august 2007 - 14:05 #8
Fandt selv ud af det. Der er en funktion som hedder debug_backtrace(). Viser lige min funktion så andre kan få gavn af den.

<?php
$logfile = 'errorlog.htm';
//Add and error note to the log file
function error($errornote,$fatal=false,$save=false) {
Global $logfile;       
    switch ($fatal) {
        case false;
            $errors[]='<h3>'.$errornote.'</h3>';
            break;
        case true;
        ob_start();
        debug_print_backtrace();
        $traceback = ob_get_contents();
        ob_end_clean();
            $errors[]='<h3>Fatal error: '.$errornote."</h3>\n<pre>".$traceback."</pre>";
            break;
    }
        if ($save and count($errors)) {
                $log = fopen($logfile,'r+');

            if ($errors) {
                fwrite($log,"\n<h2>SESSION ".date("h-i-s, j-m-y").', '.$_SERVER['REMOTE_ADDR']." ".$SID."</h2>\n");
            }

            foreach ($errors as $k => $x) {
                fwrite($log,$x."\n");
            }
        fclose($log);
}
}
?>
Avatar billede jakobdo Ekspert
21. august 2007 - 14:21 #9
Og du mener vel: debug_print_backtrace()
Avatar billede jck_true Nybegynder
21. august 2007 - 17:57 #10
debug_print_backtrace() Udskriver alt information
debug_backtrace() retunere er array.
Avatar billede jakobdo Ekspert
22. august 2007 - 08:00 #11
Så er det vel lukketid?
Og du bør beholde point selv, da du jo selv løste dit problem. :o)
Avatar billede jck_true Nybegynder
22. august 2007 - 19:06 #12
SVAR
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester