コード例 #1
0
ファイル: prepend.php プロジェクト: TaylorMonacelli/phplib
function my_error_handler($errno, $errstr, $errfile, $errline, $errcontext)
{
    global $dev;
    static $ErrorCount;
    if (!isset($ErrorCount)) {
        $ErrorCount = 0;
    }
    $ErrorCount++;
    $errno = $errno & error_reporting();
    if ($errno == 0) {
        return;
    }
    if (error_reporting() === 0) {
        // continue script execution, skipping standard PHP error handler
        return true;
    }
    if ($ErrorCount == 100) {
        die("Too many errors");
    }
    $self = $_SERVER["PHP_SELF"];
    if (!defined('E_STRICT')) {
        define('E_STRICT', 2048);
    }
    if (!defined('E_RECOVERABLE_ERROR')) {
        define('E_RECOVERABLE_ERROR', 4096);
    }
    if ($dev) {
        switch ($errno) {
            case E_ERROR:
                $ErrType = "Error";
                break;
            case E_WARNING:
                if (!$dev) {
                    return true;
                }
                $ErrType = "Warning";
                break;
            case E_PARSE:
                $ErrType = "Parse Error";
                break;
            case E_NOTICE:
                $ErrType = "Notice";
                break;
            case E_CORE_ERROR:
                $ErrType = "Core Error";
                break;
            case E_CORE_WARNING:
                $ErrType = "Core Warning";
                break;
            case E_COMPILE_ERROR:
                $ErrType = "Compile Error";
                break;
            case E_COMPILE_WARNING:
                $ErrType = "Compile Warning";
                break;
            case E_USER_ERROR:
                $ErrType = "User Error";
                break;
            case E_USER_WARNING:
                $ErrType = "User Warning";
                break;
            case E_USER_NOTICE:
                $ErrType = "User Notice";
                break;
            case E_STRICT:
                if (!$dev) {
                    return true;
                }
                $ErrType = "Strict Notice";
                break;
            case E_RECOVERABLE_ERROR:
                $ErrType = "Recoverable Error";
                break;
            default:
                $ErrType = "Unknown error ({$errno})";
                break;
        }
        $msg = "<b>PHP Error:</b> <i>{$errstr}</i> in <b>{$errfile}</b> on line <b>{$errline}</b>\n";
        $detail = "";
        if (function_exists('debug_backtrace')) {
            //print "backtrace:\n";
            $backtrace = debug_backtrace();
            array_shift($backtrace);
            foreach ($backtrace as $i => $l) {
                @($detail .= "[{$i}] in function {$l['class']}{$l['type']}{$l['function']}");
                if ($l['file']) {
                    $detail .= " in {$l['file']}";
                }
                if ($l['line']) {
                    $detail .= " on line {$l['line']}";
                }
                $detail .= "\n";
            }
        }
        if (isset($php_errormsg)) {
            echo "<h1>{$php_errormsg}</h1>";
        }
        if ($ErrorCount < 10) {
            echo "<h3>PHP {$ErrType} {$errstr} in {$errfile} on line {$errline}</h3><!--\n{$detail}";
            ini_set('html_errors', 'Off');
            var_dump($errcontext);
            echo "-->";
        }
    }
    $error = EventLog($msg, $detail, "Error");
    if ($detail) {
        EventLog("PHP BackTrace for {$errstr} in {$errfile} on line {$errline}", $detail, "Error");
    }
    if (isset($GLOBALS['error_fatal'])) {
        if ($GLOBALS['error_fatal'] & $errno) {
            if ($self == "api.php") {
                $xmlstr = "<?xml version='1.0' standalone='yes'?><api><errors></errors></api>";
                $xml = new SimpleXMLElement($xmlstr);
                $xml->errors->addChild("error", "Call Support and Quote Event ID {$error}");
                echo str_replace("><", ">\n<", $xml->asXML());
                exit;
            } else {
                if (!$dev) {
                    die("<br><br><big><b>Oops, well this is embarrassing! &nbsp; An error has occurred:</b>\n                        <br>Please quote <b>Event ID {$error}</b> if calling helpdesk on 1300 739 822 from 9am to 8pm</big>");
                }
            }
        }
    }
}
コード例 #2
0
ファイル: ipe.php プロジェクト: TaylorMonacelli/phplib
switch ($table) {
    default:
        $requires = "admin";
        break;
    case "menu":
        $requires = "admin";
        break;
}
if (!$perm->have_perm($requires)) {
    echo "Access Denied";
} else {
    $db = new $_ENV["DatabaseClass"]();
    $v = urldecode($val);
    $i = urldecode($index);
    // Get Old Value
    $db->query("SELECT {$col} FROM {$table} WHERE {$key}='{$i}'");
    if ($db->next_record()) {
        $oldval = $db->f(0);
    }
    // Set New Value
    $db->query("UPDATE {$table} SET {$col}='{$v}' WHERE {$key}='{$i}'");
    EventLog("Cell Edit by " . $auth->auth["uname"], $sql);
    // Get New Value
    $db->query("SELECT {$col} FROM {$table} WHERE {$key}='{$i}'");
    if ($db->next_record()) {
        echo $db->f(0);
    } else {
        echo $oldval;
    }
}
page_close(array("silent" => "silent"));
コード例 #3
0
<?php

$username = "******";
$password = "******";
require "phplib/prepend.php";
if (!$db->connect()) {
    echo "connect failed\n";
} else {
    if (!($tables = $db->table_names())) {
        echo "Can't read table names\n";
    } else {
        $str = count($tables) . " tables found in db {$db->Database} on {$db->Server} server {$db->Host}\n";
        echo $str;
        EventLog("Test DB", $str);
        if ($db->query("SELECT count(*) FROM auth_user")) {
            if ($db->next_record()) {
                if ($db->f(0) == 0) {
                    # no users in auth_user, let's make one.
                    $id = md5(uniqid("somestring"));
                    $hashpass = hash_auth($username, $password);
                    if ($db->query("INSERT INTO auth_user (user_id, username, password, perms) VALUES ('{$id}','{$username}','{$hashpass}','admin')")) {
                        echo "Created admin user with password {$password}\n";
                    }
                }
            }
        }
    }
}