Newsgroup: it.comp.www.php
Titolo: php_self e php_nuke sotto windows

Salve a tutti
ho da poco iniziato a usare php (e la cosa mi sta' prendendo, mi piace
molto :)
pero' ho qualche problema, quando scarico script gia' fatti
non funzionano. allego in fondo i msg d'errore di phpnuke ad es.
ho provato con windows xp e 98, con IIS5, apache 2 e xitami ma il
risultato e' sempre lo stesso. sotto linux invece va tutto bene ma
per me sarebbe + comodo far andare il tutto sotto il mio xp!!!
ho impostato anche le variabili globali ad on (in win di default e' off)
spero ci sia una soluzione, e che qualcuno mi aiuti a trovarla.
grazie
Mauro
-----------------------------------------------------
Notice: Undefined variable: file in D:\Apache\phpNuke\index.php on line
35
Notice: Use of undefined constant admin - assumed 'admin' in
D:\Apache\phpNuke\mainfile.php on line 54
Notice: Undefined variable: op in
D:\Apache\phpNuke\modules\News\index.php
on line 170
Notice: Undefined variable: new_topic in
D:\Apache\phpNuke\modules\News\index.php on line 173
Notice: Undefined variable: PHP_SELF in D:\Apache\phpNuke\header.php on
line
15
Notice: Undefined index: 2 in D:\Apache\phpNuke\mainfile.php on line 90
Notice: Undefined variable: PHP_SELF in
D:\Apache\phpNuke\includes\meta.php
on line 15
Notice: Undefined variable: PHP_SELF in
D:\Apache\phpNuke\includes\javascript.php on line 15
Notice: Undefined index: 1 in D:\Apache\phpNuke\mainfile.php on line 357
Notice: Undefined offset: 2 in D:\Apache\phpNuke\mainfile.php on line
359
Notice: Undefined offset: 1 in
D:\Apache\phpNuke\themes\NukeNews\theme.php
on line 44
Notice: Undefined variable: op in D:\Apache\phpNuke\banners.php on line
294
Notice: Undefined variable: topic in
D:\Apache\phpNuke\themes\NukeNews\theme.php on line 56
Notice: Undefined variable: sel in
D:\Apache\phpNuke\themes\NukeNews\theme.php on line 57
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

359
Qui e' un bug nell'autenticazione (l'ho gia' visto ma *mi pare* che non
fosse exploitabile... e se ti fidi del mio giudizio, FAI MALE... :-) )
Di queste svirgolature ce ne saranno un paio di centinaia.
Inoltre ho il dubbio (prima o poi cronometrero') che in lang*.php avere
le virgolette singole invece delle doppie valga la pena.
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

 ha scritto nel messaggio
news:64c99fe4d4234ca6e3...@mygate.mailgate.org...



La versione che avevi postato mi dava qualche errore, mi pare mancasse una
parentesi grafa (non so di preciso perché mi si è disintegrato l'hard disk),
però poi quando l'ho provata non mi scriveva niente nel database.
La versione che usi adesso è precisa identica a quella? Se la risposta è
"no" potresti ripostarla?
ciao
Mirko



Ah, ricordarselo...
// --- errors.php (nella root)
<?
    error_reporting(E_ALL);
    set_error_handler('ErrorHandler');
    function ErrorHandler($gravity, $errstr, $errfile, $errline)
    {
        global $dbi, $prefix;
        switch ($gravity)
        {
            case E_USER_ERROR:
                print <<< FATALERROR
<b>FATAL</b>: $errstr<br>
<tt>Errore fatale in $errfile, linea $errline. Elaborazione
interrotta.</tt>
FATALERROR;
                exit -1;
                break;
            case E_USER_WARNING:
echo "<b>ERROR</b>: $errstr<br>\n";
break;
            case E_USER_NOTICE:
            case E_WARNING:
            case E_NOTICE:
            {
                if (isset($dbi))
                    global $REMOTE_ADDR;
                    $errtext = AddSlashes(StripSlashes($errstr));
                    sql_query("INSERT INTO ".$prefix."_errorlog VALUES
(now(), '
$REMOTE_ADDR',$gravity,'$errfile','$errline','$errtext');", $dbi);
                }
                break;
            }
            default:
                echo "<br>Unknown error type $gravity; $errstr<br>";
                break;
        }
    }
?>
//--- Ultime due righe del mio config.php
    require_once 'errors.php';
?>
 show columns from nuke_errorlog;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| creation  | datetime    | YES  |     | NULL    |       |
| username  | text        | YES  |     | NULL    |       |
| priority  | smallint(6) | YES  |     | NULL    |       |
| filename  | text        | YES  |     | NULL    |       |
| line      | smallint(6) | YES  |     | NULL    |       |
| errortext | text        | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.03 sec)
// --- /modules/Errors/index.php
<?
	$DocumentRoot = '/usr/local/httpd/htdocs/';
    if (!eregi('modules.php', $PHP_SELF))
        die ("You can't access this file directly...");
    require_once('mainfile.php');
    $module_name = basename(dirname(__FILE__));
    get_lang($module_name);
    include('header.php');
    OpenTable();
    if (isset($cmd))
    {
        switch($cmd)
        {
            case 'DELETE':
                list($filename, $errline) = explode('|', $error);
                $errline = eregi_replace('[^0-9]', '', $errline);
                if ($errline != '')
                {
                    $filename= eregi_replace('[^a-z_0-9 /\.\-]', '',
$filename);
                    $query = "DELETE FROM $prefix" . "_errorlog WHERE
filename='
$filename' AND line=$errline;";
                    sql_query($query, $dbi);
                }
        }
    }
    $exec = sql_query("SELECT count(*) AS frequency, priority, filename,
line, errortext FROM $prefix" . '_errorlog GROUP BY priority, filename,
line, errortext
 ORDER BY frequency DESC;', $dbi);
    $rows = sql_num_rows($exec);
    $cols = 5;
    print <<< HERE
<TABLE WIDTH="100%" BORDER=1 CELLSPACING=0 CELLPADDING=1>
<TR>
    <TD COLSPAN="$cols">
    <B>Error Reporting System v1.0</B>
    </TD>
    <TD>$rows error(s)</TD>
</TR>
<TR>
    <TD>&nbsp;</TD>
    <TD>Count</TD>
    <TD>pri</TD>
    <TD>Filename</TD>
    <TD>Line</TD>
    <TD WIDTH="100%">Error Text</TD>
</TR>
HERE;
    $URLBASE = "$PHP_SELF?name=Errors&cmd=DELETE&error=";
    for ($i = 0; $i < $rows; $i++)
    {
        $data = sql_fetch_array($exec, $dbi);
        if ($data[0] < 5)
            continue;
        $data[2] = ereg_replace($DocumentRoot,'',$data[2]);
        $URL = $URLBASE . UrlEncode("$data[filename]|$data[line]");
        print "\t<TR>\n";
        print "\t\t<TD><A HREF=\"$URL\">X</A></TD>";
        for ($j = 0; $j < $cols; $j++)
        {
            print "\t\t<TD><TT>$data[$j]</TT></TD>\n";
        }
        print "\t</TR>\n";
    }
    print "</TABLE>\n";
    CloseTable();
    include('footer.php');
?>
