Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] set_error_handler, ob_start() i podmiana zawartości bufora.
angel2953
post
Post #1





Grupa: Zarejestrowani
Postów: 199
Pomógł: 5
Dołączył: 8.07.2004
Skąd: gdynia

Ostrzeżenie: (0%)
-----


Dokładniej chodzi mi o to, że w zmiennej $errcontext znajduje się zrzut tablicy GLOBALS i tam znajduje się zawartość tablicy $config i z niej chciałbym się pozbyć (zamienić na *) hasła do bazy. Cała funkcja wygląda tak:
Kod
//----------------------------
// Define our own error handler
//----------------------------
function solarbox_error($errno, $errstr, $errfile, $errline, $errcontext)
{
    ob_start();
    print_r($errcontext);
    $errcontext = ob_get_contents();
    //$errcontext = preg_replace('/\[sql_pass\] => ([a-zA-z0-9_-]{6,32})/si', "[sql_pass] => *******", $errcontext);
    $errcontext = preg_replace('/\[sql_pass\] \=\> (.*?)/si', '[sql_pass] => *******', $errcontext);
    ob_end_clean();
    
    echo "<h1>There was an error...</h1>\n";
    echo "<table cellspacing='1' cellpadding='1' border='0' width='800'>\n";
    echo "<tr><td style='width:200px; background-color:#CCC;'><b>Error number:</b></td><td style='background-color:#CCC;'>" . $errno . "</td></tr>\n";
    echo "<tr><td style='width:200px; background-color:#CCC;'><b>Error message:</b></td><td style='background-color:#CCC;'>" . $errstr . "</td>\n";
    echo "<tr><td style='width:200px; background-color:#CCC;'><b>File:</b></td><td style='background-color:#CCC;'>" . basename($errfile) . "</td></tr>\n";
    echo "<tr><td style='width:200px; background-color:#CCC;'><b>Line:</b></td><td style='background-color:#CCC;'>" . $errline . "</td></tr>\n";
    echo "<tr><td style='width:200px; background-color:#CCC;'><b>Error contexts:</b></td><td style='background-color:#CCC;'><pre>" . $errcontext . "</pre></td></tr>\n";
    echo "</table>\n";
    echo "<p>Admin was informed about this error...</p>\n";
    exit;
}

set_error_handler('solarbox_error', E_ALL);


wszystko jest ładne ale przy Error context: jest mały problem bo:
Kod
Array
(
    [GLOBALS] => Array
*RECURSION*
    [_POST] => Array
        (
        )

    [_GET] => Array
        (
        )

    [_COOKIE] => Array
        (
        )

    [_FILES] => Array
        (
        )

    [config] => Array
        (
            [sql_type] => mysql
            [sql_host] => localhost
            [sql_user] => db_user
            [sql_pass] => *******Pa$$w0rd
            [sql_name] => db_name
            [sql_table_prefix] => tbl_
        )

)


no i tutaj jest mój problem bo tego Pa$$w0rd nie powinno być, powinny być same gwiazdki (przynajmniej takie było założenie)... No chyba, że w regexpach sie gdzieś walnąłem...

Ten post edytował angel2953 18.12.2008, 12:51:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


  1. <?php
  2. // zamień swój wzorzec
  3.  
  4. preg_replace('/[sql_pass] => (.*?)/si', ...
  5.  
  6. // na
  7.  
  8. preg_replace('/[sql_pass] => (.*?)$/si', ...
  9. ?>
Go to the top of the page
+Quote Post
angel2953
post
Post #3





Grupa: Zarejestrowani
Postów: 199
Pomógł: 5
Dołączył: 8.07.2004
Skąd: gdynia

Ostrzeżenie: (0%)
-----


tego też już próbowałem ale nie działa bo mi ucina wszystko co jest po tej linijce:
Kod
Array
(
    [GLOBALS] => Array
*RECURSION*
    [_POST] => Array
        (
        )

    [_GET] => Array
        (
        )

    [_COOKIE] => Array
        (
        )

    [_FILES] => Array
        (
        )

    [config] => Array
        (
            [sql_type] => mysql
            [sql_host] => localhost
            [sql_user] => db_user
            [sql_pass] => *******


czyli ucina to co najważniejsze. Od razu mówię, że ten errcontext jest wyświetlany tylko w trybie FULL_DEBUG a w normalnym trybie jest zapisywany w raportach błędów, które user może do mnie przesłać a zbytnio nie chciałbym by czuł się nie pewnie, że mam jego hasło do bazy...

Ten post edytował angel2953 18.12.2008, 14:44:43
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wywal modyfikator s ze wzorca.

Cytat
w normalnym trybie jest zapisywany w raportach błędów, które user może do mnie przesłać

A nie lepiej byłoby wyrzucać to do pliku i userowi zwracać tylko identyfikator?

Ten post edytował erix 18.12.2008, 15:39:48
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 05:40