LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 731|回复: 2

各位老大帮帮忙,APACHE出了问题.

[复制链接]
发表于 2003-5-23 16:40:45 | 显示全部楼层 |阅读模式
我已经安装了httpd和mysql,是我的RH8自带的.也已经启动了他们,创建了数据库文件.可是我在浏览器里输入,127.0.0.1后出现错误如图.
我的config.php文件如下:
<?php
// $Id: config.php,v 1.7
2003/01/04 08:43:21 larsneo
Exp $
//
----------------------------------------------------------------------
// PostNuke Content
Management System
// Copyright (C) 2001 by the





PostNuke Development Team.
// http://www.postnuke.com/
//
----------------------------------------------------------------------
// Based on:
// PHP-NUKE Web Portal
System - http://phpnuke.org/
// Thatware -
http://thatware.org/
//
----------------------------------------------------------------------
// LICENSE
//
// This program is free
software; you can
redistribute it and/or
// modify it under the terms





of the GNU General Public
License (GPL)
// as published by the Free
Software Foundation; either
version 2
// of the License, or (at
your option) any later
version.
//
// This program is
distributed in the hope that





it will be useful,
// but WITHOUT ANY WARRANTY;





without even the implied
warranty of
// MERCHANTABILITY or
FITNESS FOR A PARTICULAR
PURPOSE.  See the
// GNU General Public
License for more details.
//
// To read the license
please visit
http://www.gnu.org/copyleft/gpl.html
//
----------------------------------------------------------------------
// Original Author of file:
Everyone
// Purpose of file:
Configure database
//
----------------------------------------------------------------------

//
----------------------------------------------------------------------
// Database & System Config
//
//      dbtype:     type of
database, currently only
mysql
//      dbhost:     MySQL
Database Hostname
//      dbuname:    MySQL
Username
//      dbpass:     MySQL
Password
//      dbname:     MySQL
Database Name
//      system:     0 for
Unix/Linux, 1 for Windows
//      encoded:    0 for
MySQL information unenccoded
//                  1 for
encoded
//
----------------------------------------------------------------------
//
$pnconfig['dbtype'] = 'mysql';
$pnconfig['dbhost'] = '218.76.39.220';
$pnconfig['dbuname'] = 'root';
$pnconfig['dbpass'] = '';
$pnconfig['dbname']='phoenix ';
$pnconfig['system'] = '0';
$pnconfig['prefix'] = 'phoenix';
$pnconfig['encoded'] = '1';

//
----------------------------------------------------------------------
// For debugging (Pablo
Roca)
//
// $debug - debugger windows





active
//          0 = No
//          1 = Yes
//
// $debug_sql - show SQL in
lens debug
//          0 = No
//          1 = Yes
//
----------------------------------------------------------------------
GLOBAL $pndebug;
$pndebug['debug']          =





0;
$pndebug['debug_sql']      =





0;

//
----------------------------------------------------------------------
// You have finished
configuring the database.
Now you can start to
// change your site settings





in the Administration
Section.
//
// Thanks for choosing
PostNuke.
//
----------------------------------------------------------------------

//
----------------------------------------------------------------------
// if there is a
personal_config.php in the
folder where is config.php
// we add it. (This HAS to
be at the end, after all
initialization.)
//
----------------------------------------------------------------------
if
(@file_exists("personal_config.php"))
{
include("personal_config.php"); }
//
----------------------------------------------------------------------
// Make config file
backwards compatible
(deprecated)
//
----------------------------------------------------------------------
extract($pnconfig,
EXTR_OVERWRITE);
?>

我的pnAPI.php文件内容:
<?php

// $Id: pnAPI.php,v 1.32 2003/01/18 13:14:16 class007 Exp $

// ----------------------------------------------------------------------

// PostNuke Content Management System

// Copyright (C) 2001 by the Post-Nuke Development Team.

// http://www.postnuke.com/

// ----------------------------------------------------------------------

// LICENSE

//

// This program is free software; you can redistribute it and/or

// modify it under the terms of the GNU General Public License (GPL)

// as published by the Free Software Foundation; either version 2

// of the License, or (at your option) any later version.

//

// This program is distributed in the hope that it will be useful,

// but WITHOUT ANY WARRANTY; without even the implied warranty of

// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

// GNU General Public License for more details.

//

// To read the license please visit http://www.gnu.org/copyleft/gpl.html

// ----------------------------------------------------------------------

// Original Author of file: Jim McDonald

// Purpose of file: The PostNuke API

// ----------------------------------------------------------------------



/*

*

* Defines

*

*/



/*        Allows Postnuke to work with register_globals set to off

*        Patch for php 4.2.x or greater

*/



if (phpversion() >= "4.2.0") {

        if ( ini_get('register_globals') != 1 ) {

                $supers = array('_REQUEST',

                                '_ENV',

                                '_SERVER',

                                '_POST',

                                '_GET',

                                '_COOKIE',

                                '_SESSION',

                                '_FILES',

                                '_GLOBALS' );



                foreach( $supers as $__s) {

                        if ( (isset($$__s) == true) && (is_array( $$__s ) == true) ) extract( $$__s, EXTR_OVERWRITE );

                }

                unset($supers);

        }

} else {

        if ( ini_get('register_globals') != 1 ) {



                $supers = array('HTTP_POST_VARS',

                                'HTTP_GET_VARS',

                                'HTTP_COOKIE_VARS',

                                'GLOBALS',

                                'HTTP_SESSION_VARS',

                                'HTTP_SERVER_VARS',

                                'HTTP_ENV_VARS'

                                 );



                foreach( $supers as $__s) {

                        if ( (isset($$__s) == true) && (is_array( $$__s ) == true) ) extract( $$__s, EXTR_OVERWRITE );

                }

                unset($supers);

        }

}



/*

* Yes/no integer

*/

define('_PNYES', 1);

define('_PNNO', 0);



/*

* State of modules

*/

define('_PNMODULE_STATE_UNINITIALISED', 1);

define('_PNMODULE_STATE_INACTIVE', 2);

define('_PNMODULE_STATE_ACTIVE', 3);

define('_PNMODULE_STATE_MISSING', 4);

define('_PNMODULE_STATE_UPGRADED', 5);



/*

* 'All' and 'unregistered' for user and group permissions

*/

define('_PNPERMS_ALL', '-1');

define('_PNPERMS_UNREGISTERED', '0');



/*

* Core version informations - should be upgraded on each release for

* better control on config settings

*/

define('_PN_VERSION_NUM',       "0.7.2.3-Phoenix");

define('_PN_VERSION_ID',        "ostNuke");

define('_PN_VERSION_SUB',       "hoenix");



/*

* Fake module for config vars

*/

define('_PN_CONFIG_MODULE',     '/PNConfig');



/*

*

* Functions

*

*/



/**

* get all configuration variable into $pnconfig

* will be removed on .8

* @param none

* @returns true|false

* @return none

*/

function pnConfigInit() {

    global $pnconfig;



    list($dbconn) = pnDBGetConn();

    $pntable = pnDBGetTables();



    $table = $pntable['module_vars'];

    $columns = &$pntable['module_vars_column'];



    /*

     * Make query and go

     */

    $query = "SELECT $columns[name],

                     $columns[value]

              FROM $table

              WHERE $columns[modname]='" . pnVarPrepForStore(_PN_CONFIG_MODULE) . "'";

    $dbresult = $dbconn->Execute($query);

    if($dbconn->ErrorNo() != 0) {

        return false;

    }

    if ($dbresult->EOF) {

        $dbresult->Close();

        return false;

    }

    while(!$dbresult->EOF) {

        list($k, $v) = $dbresult->fields;

        $dbresult->MoveNext();

        if (($k != 'dbtype') && ($k != 'dbhost') && ($k != 'dbuname') && ($k != 'dbpass')

                && ($k != 'dbname') && ($k != 'system') && ($k != 'prefix') && ($k != 'encoded')) {

            $v =@unserialize($v);

            $pnconfig[$k] = $v;

        }

    }

    $dbresult->Close();

    return true;

}



/**

* get a configuration variable

* @param name the name of the variable

* @returns data

* @return value of the variable, or false on failure

*/

function pnConfigGetVar($name)

{

    global $pnconfig;

    if (isset($pnconfig[$name])) {

        $result = $pnconfig[$name];

    } else {

        /*

         * Fetch base data

         */

        list($dbconn) = pnDBGetConn();

        $pntable = pnDBGetTables();



        $table = $pntable['module_vars'];

        $columns = &$pntable['module_vars_column'];



        /*

         * Make query and go

         */

        $query = "SELECT $columns[value]

                  FROM $table

                  WHERE $columns[modname]='" . pnVarPrepForStore(_PN_CONFIG_MODULE) . "'

                    AND $columns[name]='" . pnVarPrepForStore($name) . "'";

        $dbresult = $dbconn->Execute($query);



        /*

         * In any case of error return false

         */

        if($dbconn->ErrorNo() != 0) {

            return false;

        }

        if ($dbresult->EOF) {

            $dbresult->Close();

            return false;

        }



        /*

         * Get data

         */

        list ($result) = $dbresult->fields;

        $result = unserialize($result);



        /*

         * Some caching

         */

        $pnconfig[$name] = $result;



        /*

         * That's all folks

         */

        $dbresult->Close();

    }



    return $result;

}



/**

* set a configuration variable

* @param name the name of the variable

* @param value the value of the variable

* @returns bool

* @return true on success, false on failure

*/

function pnConfigSetVar($name, $value)

{

    /*

     * The database parameter are not allowed to change

     */

    if (empty($name) || ($name == 'dbtype') || ($name == 'dbhost') || ($name == 'dbuname') || ($name == 'dbpass')

            || ($name == 'dbname') || ($name == 'system') || ($name == 'prefix') || ($name == 'encoded')) {

        return false;

    }



    /*

     * Test on missing record

     *

     * Also solve SF-bug #580951

     */

    $must_insert = true;

    global $pnconfig;

    foreach($pnconfig as $k => $v) {

        /*

         * Test if the key name is in the array

         */

        if ($k == $name) {

            /*

             * Set flag

             */

            $must_insert = false;

            /*

             * Test on change. If not, just quit now

             */

            if ($v == $value) {

                return true;

            }

            /*

             * End loop after success

             */

            break;

        }

    }



    /*

     * Fetch base data

     */

    list($dbconn) = pnDBGetConn();

    $pntable = pnDBGetTables();

    $table = $pntable['module_vars'];

    $columns = &$pntable['module_vars_column'];



    /*

     * Update the table

     */

    if ($must_insert) {

        /*

         * Insert

         */

        $query = "INSERT INTO $table

                  ($columns[modname],

                   $columns[name],

                   $columns[value])

                  VALUES ('" . pnVarPrepForStore(_PN_CONFIG_MODULE) . "',

                          '" . pnVarPrepForStore($name) . "',

                          '" . pnVarPrepForStore(serialize($value)). "')";

    } else {

        /*

         * Update

         */

         $query = "UPDATE $table

                   SET $columns[value]='" . pnVarPrepForStore(serialize($value)) . "'

                   WHERE $columns[modname]='" . pnVarPrepForStore(_PN_CONFIG_MODULE) . "'

                   AND $columns[name]='" . pnVarPrepForStore($name) . "'";

    }

    $dbconn->Execute($query);

    if($dbconn->ErrorNo() != 0) {

        return false;

    }



    /*

     * Update my vars

     */

    $pnconfig[$name] = $value;



    return true;

}





/**

* delete a configuration variable

* @param name the name of the variable

* @returns bool

* @return true on success, false on failure

*/

function pnConfigDelVar($name)

{

    global $pnconfig;



    if (empty($name)) {

        return false;

    }



    // Don't allow deleting at current

    return false;

}



/**

* Initialise PostNuke

* <br>

* Carries out a number of initialisation tasks to get PostNuke up and

* running.

* @returns void

*/

function pnInit()

{

    // Proper error reporting Commented out for release

//    error_reporting(E_ALL);



    // Hack for some weird PHP systems that should have the

    // LC_* constants defined, but don't

    if (!defined('LC_TIME')) {

        define('LC_TIME', 'LC_TIME');

    }



    // ADODB configuration

    define('ADODB_DIR', 'pnadodb');

    include 'pnadodb/adodb.inc.php';



    // Temporary fix for hacking the hlpfile global

    // TODO - remove with pre-0.71 code

    global $hlpfile;

    $hlpfile = '';



    // Initialise and load configuration

    global $pnconfig, $pndebug;

    $pnconfig = array();

    include 'config.php';





    // Set up multisites

    // added this @define for .71, ugly ?

    // i guess the E_ALL stuff.

    @define('WHERE_IS_PERSO', '');



    // Initialise and load pntables

    global $pntable;

    $pntable = array();

    // if a multisite has its own pntables.

    if (file_exists(WHERE_IS_PERSO.'pntables.php')) {

        include WHERE_IS_PERSO.'pntables.php';

    } else {

        include 'pntables.php';

    }



    // Decode encoded DB parameters

    if ($pnconfig['encoded']) {

        $pnconfig['dbuname'] = base64_decode($pnconfig['dbuname']);

        $pnconfig['dbpass'] = base64_decode($pnconfig['dbpass']);

        $pnconfig['encoded'] = 0;

    }



    // Connect to database

    if (!pnDBInit()) {

        die('Database initialisation failed');

    }



    // debugger if required

    if ($pndebug['debug']){

        include_once 'includes/lensdebug.inc.php';

        global $dbg, $debug_sqlcalls;

        $dbg = new LensDebug();

        $debug_sqlcalls = 0;

    }



    // Build up old config array

    pnConfigInit();



    // Set compression on if desired

    //

    if (pnConfigGetVar('UseCompression') == 1) {

    ob_start("ob_gzhandler");

    }



    // Other includes

    include 'includes/pnSession.php';

    include 'includes/pnUser.php';



    // Start session

    if (!pnSessionSetup()) {

        die('Session setup failed');

    }

    if (!pnSessionInit()) {

        die('Session initialisation failed');

    }



    include 'includes/security.php';



    // See if a language update is required

    $newlang = pnVarCleanFromInput('newlang');

    if (!empty($newlang)) {

        $lang = $newlang;

        pnSessionSetVar('lang', $newlang);

    } else {

        $lang = pnSessionGetVar('lang');

    }



    // Load global language defines

    if (isset ($lang) && file_exists('language/' . pnVarPrepForOS($lang) . '/global.php')) {

        $currentlang = $lang;

    } else {

        $currentlang = pnConfigGetVar('language');

        pnSessionSetVar('lang', $currentlang);

    }

    include 'language/' . pnVarPrepForOS($currentlang) . '/global.php';



    include 'modules/NS-Languages/api.php';



        // Cross-Site Scripting attack defense - Sent by larsneo

        // some syntax checking against injected javascript



        $pnAntiCrackerMode = pnConfigGetVar('pnAntiCracker');



        if ( $pnAntiCrackerMode == 1 ) {

                pnSecureInput();

        }

    // Banner system

    include 'includes/pnBanners.php';



    // Other other includes

    include 'includes/advblocks.php';

    include 'includes/counter.php';

    include 'includes/pnHTML.php';

    include 'includes/pnMod.php';

    include 'includes/queryutil.php';

    include 'includes/xhtml.php';

    include 'includes/oldfuncs.php';



    // Handle referer

    if (pnConfigGetVar('httpref') == 1) {

        include 'referer.php';

        httpreferer();

    }



    return true;

}



function pninclude_once($file)

{

    include_once($file);

}



function pnDBInit()

{

    // Get database parameters

    global $pnconfig;

    $dbtype = $pnconfig['dbtype'];

    $dbhost = $pnconfig['dbhost'];

    $dbname = $pnconfig['dbname'];

    $dbuname = $pnconfig['dbuname'];

    $dbpass = $pnconfig['dbpass'];



    // Database connection is a global (for now)

    global $dbconn;



    // Start connection

    $dbconn = ADONewConnection($dbtype);

    $dbh = $dbconn->Connect($dbhost, $dbuname, $dbpass, $dbname);

    if (!$dbh) {

    $dbpass = "";

        die("$dbtype://$dbunamedbpass@$dbhost/$dbname failed to connect" . $dbconn->ErrorMsg());

    }

    global $ADODB_FETCH_MODE;

    $ADODB_FETCH_MODE = ADODB_FETCH_NUM;



    // force oracle to a consistent date format for comparison methods later on

    if (strcmp($dbtype, 'oci8') == 0) {

        $dbconn->Execute("alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'");

    }



    return true;

}



/**

* get a list of database connections

* @returns array

* @return array of database connections

*/

function pnDBGetConn()

{

    global $dbconn;



    return array($dbconn);

}



/**

* get a list of database tables

* @returns array

* @return array of database tables

*/

function pnDBGetTables()

{

    global $pntable;



    return $pntable;

}



/**

* clean user input

* <br>

* Gets a global variable, cleaning it up to try to ensure that

* hack attacks don't work

* @param var name of variable to get

* @param ...

* @returns string/array

* @return prepared variable if only one variable passed

* in, otherwise an array of prepared variables

*/

function pnVarCleanFromInput()

{

    $search = array('|</?\s*SCRIPT.*?>|si',

                    '|</?\s*FRAME.*?>|si',

                    '|</?\s*OBJECT.*?>|si',

                    '|</?\s*META.*?>|si',

                    '|</?\s*APPLET.*?>|si',

                    '|</?\s*LINK.*?>|si',

                    '|</?\s*IFRAME.*?>|si',

                    '|STYLE\s*=\s*"[^"]*"|si');



    $replace = array('');



    $resarray = array();

    foreach (func_get_args() as $var) {

        // Get var

        global $$var;

        if (empty($var)) {

            return;

        }

        $ourvar = $$var;



        if (!isset($ourvar)) {

            array_push($resarray, NULL);

            continue;

        }

        if (empty($ourvar)) {

            array_push($resarray, $ourvar);

            continue;

        }



        // Clean var

        if (get_magic_quotes_gpc()) {

            pnStripslashes($ourvar);

        }

        if (!pnSecAuthAction(0, '::', '::', ACCESS_ADMIN)) {

            $ourvar = preg_replace($search, $replace, $ourvar);

        }



        // Add to result array

        array_push($resarray, $ourvar);

    }



    // Return vars

    if (func_num_args() == 1) {

        return $resarray[0];

    } else {

        return $resarray;

    }

}



/**

* strip slashes

*

* stripslashes on multidimensional arrays.

* Used in conjunction with pnVarCleanFromInput

* @access private

* @param any variables or arrays to be stripslashed

*/

function pnStripslashes (&$value) {

    if(!is_array($value)) {

        $value = stripslashes($value);

    } else {

        array_walk($value,'pnStripslashes');

    }

}



/**

* ready user output

* <br>

* Gets a variable, cleaning it up such that the text is

* shown exactly as expected

* @param var variable to prepare

* @param ...

* @returns string/array

* @return prepared variable if only one variable passed

* in, otherwise an array of prepared variables

*/

function pnVarPrepForDisplay()

{

    // This search and replace finds the text 'x@y' and replaces

    // it with HTML entities, this provides protection against

    // email harvesters

    static $search = array('/(.)@(.)/se');



    static $replace = array('"&#" .

                            sprintf("%03d", ord("\\1")) .

                            ";&#064;&#" .

                            sprintf("%03d", ord("\\2")) . ";";');



    $resarray = array();

    foreach (func_get_args() as $ourvar) {



        // Prepare var

        $ourvar = htmlspecialchars($ourvar);



        $ourvar = preg_replace($search, $replace, $ourvar);



        // Add to array

        array_push($resarray, $ourvar);

    }



    // Return vars

    if (func_num_args() == 1) {

        return $resarray[0];

    } else {

        return $resarray;

    }

}



/**

* ready HTML output

* <br>

* Gets a variable, cleaning it up such that the text is

* shown exactly as expected, except for allowed HTML tags which

* are allowed through

* @param var variable to prepare

* @param ...

* @returns string/array

* @return prepared variable if only one variable passed

* in, otherwise an array of prepared variables

*/

function pnVarPrepHTMLDisplay()

{

    // This search and replace finds the text 'x@y' and replaces

    // it with HTML entities, this provides protection against

    // email harvesters

    //

    // Note that the use of \024 and \022 are needed to ensure that

    // this does not break HTML tags that might be around either

    // the username or the domain name

    static $search = array('/([^\024])@([^\022])/se');



    static $replace = array('"&#" .

                            sprintf("%03d", ord("\\1")) .

                            ";&#064;&#" .

                            sprintf("%03d", ord("\\2")) . ";";');



    static $allowedhtml;



    if (!isset($allowedhtml)) {

        $allowedhtml = array();

        foreach(pnConfigGetVar('AllowableHTML') as $k=>$v) {

            switch($v) {

                case 0:

                    break;

                case 1:

                    $allowedhtml[] = "|<(/?$k)\s*/?>|i";

                    break;

                case 2:

                    $allowedhtml[] = "|<(/?$k(\s+.*?)?)>|i";

                    break;

            }

        }

    }



    $resarray = array();

    foreach (func_get_args() as $ourvar) {

        // Preparse var to mark the HTML that we want

        $ourvar = preg_replace($allowedhtml, "\022\\1\024", $ourvar);



        // Prepare var

        $ourvar = htmlspecialchars($ourvar);

        $ourvar = preg_replace($search, $replace, $ourvar);



        // Fix the HTML that we want

        $ourvar = preg_replace('/\022([^\024]*)\024/e',

                               "'<' . strtr('\\1', array('&gt;' => '>',

                                                         '&lt;' => '<',

                                                         '&quot;' => '\"',

                                                         '&amp;' => '&'))

                               . '>';", $ourvar);



        // Fix entities if required

        if (pnConfigGetVar('htmlentities')) {

            $ourvar = preg_replace('/&amp;([a-z#0-9]+);/i', "&\\1;", $ourvar);

        }



        // Add to array

        array_push($resarray, $ourvar);

    }



    // Return vars

    if (func_num_args() == 1) {

        return $resarray[0];

    } else {

        return $resarray;

    }

}



/**

* ready databse output

* <br>

* Gets a variable, cleaning it up such that the text is

* stored in a database exactly as expected

* @param var variable to prepare

* @param ...

* @returns string/array

* @return prepared variable if only one variable passed

* in, otherwise an array of prepared variables

*/

function pnVarPrepForStore()

{

    $resarray = array();

    foreach (func_get_args() as $ourvar) {



        // Prepare var

        if (!get_magic_quotes_runtime()) {

            $ourvar = addslashes($ourvar);

        }



        // Add to array

        array_push($resarray, $ourvar);

    }



    // Return vars

    if (func_num_args() == 1) {

        return $resarray[0];

    } else {

        return $resarray;

    }

}



/**

* ready operating system output

* <br>

* Gets a variable, cleaning it up such that any attempts

* to access files outside of the scope of the PostNuke

* system is not allowed

* @param var variable to prepare

* @param ...

* @returns string/array

* @return prepared variable if only one variable passed

* in, otherwise an array of prepared variables

*/

function pnVarPrepForOS()

{

    static $search = array('!\.\./!si', // .. (directory traversal)

                           '!^.*://!si', // .*:// (start of URL)

                           '!/!si',     // Forward slash (directory traversal)

                           '!\\\\!si'); // Backslash (directory traversal)



    static $replace = array('',

                            '',

                            '_',

                            '_');



    $resarray = array();

    foreach (func_get_args() as $ourvar) {



        // Parse out bad things

        $ourvar = preg_replace($search, $replace, $ourvar);



        // Prepare var

        if (!get_magic_quotes_runtime()) {

            $ourvar = addslashes($ourvar);

        }



        // Add to array

        array_push($resarray, $ourvar);

    }



    // Return vars

    if (func_num_args() == 1) {

        return $resarray[0];

    } else {

        return $resarray;

    }

}



/**

* remove censored words

*/

function pnVarCensor()

{

    static $docensor;

    if (!isset($docensor)) {

        $docensor = pnConfigGetVar('CensorMode');

    }



    static $search = array();

    if (empty($search)) {

        $repsearch = array('/o/i',

                           '/e/i',

                           '/a/i',

                           '/i/i');

        $repreplace = array('0',

                            '3',

                            '@',

                            '1');

        $censoredwords = pnConfigGetVar('CensorList');

        foreach ($censoredwords as $censoredword) {

            // Simple word

            $search[] = "/\b$censoredword\b/i";



            // Common replacements

            $mungedword = preg_replace($repsearch, $repreplace, $censoredword);

            if ($mungedword != $censoredword) {

                $search[] = "/\b$mungedword\b/";

            }

        }

    }



    $replace = pnConfigGetVar('CensorReplace');



    $resarray = array();

    foreach (func_get_args() as $ourvar) {



        if ($docensor) {

            // Parse out nasty words

            $ourvar = preg_replace($search, $replace, $ourvar);

        }



        // Add to array

        array_push($resarray, $ourvar);

    }



    // Return vars

    if (func_num_args() == 1) {

        return $resarray[0];

    } else {

        return $resarray;

    }

}



/**

* validate a user variable

* @access public

* @author Damien Bonvillain

* @author Gregor J. Rothfuss

* @since 1.23 - 2002/02/01

* @param var the variable to validate

* @param type the type of the validation to perform

* @param args optional array with validation-specific settings

* @returns bool

* @return true if the validation was successful, false otherwise

*/

function pnVarValidate($var, $type, $args=0)

{

switch ($type) {

    case 'email':

        // all characters must be 7 bit ascii

        $length = strlen($var);

        $idx = 0;

        while($length--) {

           $c = $var[$idx++];

           if(ord($c) > 127){

              return false;

           }

        }

        $regexp = '/^(?:[^\s\000-\037\177\(\)<>@,;:\\"\[\]]\.?)+@(?:[^\s\000-\037\177\(\)<>@,;:\\\"\[\]]\.?)+\.[a-z]{2,6}$/Ui';

        if(preg_match($regexp,$var)) {

            return true;

        } else {

            return false;

        }

        break;



    case 'url':

        // all characters must be 7 bit ascii

        $length = strlen($var);

        $idx = 0;

        while($length--) {

           $c = $var[$idx++];

           if(ord($c) > 127){

             return false;

           }

        }

        $regexp = '/^([!\$\046-\073=\077-\132_\141-\172~]|(?:%[a-f0-9]{2}))+$/i';

        if(!preg_match($regexp, $var)) {

            return false;

        }

        $url_array = @parse_url($var);

        if(empty($url_array)) {

            return false;

        } else {

            return !empty($url_array['scheme']);

        }

        break;

   }

}



/**

* check an assertion

* <br>

* Check an assertion to ensure that it is valid.  If not, then die

* @param assertion the assertion

* @param filename the filename the assertion occurs in

* @param line the line number the assertion occurs in

*/

function pnAssert($assertion, $file='Unknown', $line='Unknown', $msg='')

{

    if ($assertion) {

        return;

    }



    // Assertion failed - log it

    if (!empty($msg)) {

        die("Assertion failed in $file at line $line - $msg");

    } else {

        die("Assertion failed in $file at line $line");

    }

}



/**

* get status message from previous operation

* <br>

* Obtains any status message, and also destroys

* it from the session to prevent duplication

* @returns string

* @return the status message

*/

function pnGetStatusMsg()

{

    $msg = pnSessionGetVar('statusmsg');

    pnSessionDelVar('statusmsg');

    $errmsg = pnSessionGetVar('errormsg');

    pnSessionDelVar('errormsg');



    // Error message overrides status message

    if (!empty($errmsg)) {

        return $errmsg;

    }

    return $msg;

}



function pnThemeLoad($thistheme)

{

    static $loaded = 0;



    if ($loaded) {

        return true;

    }



    // Lots of nasty globals for back-compatability with older themes

    global $bgcolor1;

    global $bgcolor2;

    global $bgcolor3;

    global $bgcolor4;

    global $bgcolor5;

    global $sepcolor;

    global $textcolor1;

    global $textcolor2;

    global $postnuke_theme;

    global $thename;



    // modification mouzaia .71



    // is this really useful ?

/*  $themefile = 'themes/' . pnVarPrepForOS(pnUserGetTheme()) . '/theme.php';

    if (!file_exists($themefile)) {

        return false;

    }

*/

// eugenio themeover 20020413

    if (@file(WHERE_IS_PERSO."themes/$thistheme/theme.php"))

        { include WHERE_IS_PERSO."themes/$thistheme/theme.php"; }

    else

        {

        include "themes/$thistheme/theme.php";

        }

    // end of modification

    $loaded = 1;

    return true;

}



function pnThemeGetVar($name)

{

    global $$name;

    if (isset($$name)) {

        return $$name;

    }

}



/**

* get base URI for PostNuke

* @returns string

* @return base URI for PostNuke

*/

function pnGetBaseURI()

{

    global $HTTP_SERVER_VARS;



    // Get the name of this URI



    // Start of with REQUEST_URI

    if (isset($HTTP_SERVER_VARS['REQUEST_URI'])) {

        $path = $HTTP_SERVER_VARS['REQUEST_URI'];

    } else {

        $path = getenv('REQUEST_URI');

    }

    if ((empty($path)) ||

        (substr($path, -1, 1) == '/')) {

        // REQUEST_URI was empty or pointed to a path

        // Try looking at PATH_INFO

        $path = getenv('PATH_INFO');

        if (empty($path)) {

            // No luck there either

            // Try SCRIPT_NAME

            if (isset($HTTP_SERVER_VARS['SCRIPT_NAME'])) {

                $path = $HTTP_SERVER_VARS['SCRIPT_NAME'];

            } else {

                $path = getenv('SCRIPT_NAME');

            }

        }

    }



    $path = preg_replace('/[#\?].*/', '', $path);

    $path = dirname($path);



    if (preg_match('!^[/\\\]*$!', $path)) {

        $path = '';

    }



    return $path;

}



/**

* get base URL for PostNuke

* @returns string

* @return base URL for PostNuke

*/

function pnGetBaseURL()

{

    global $HTTP_SERVER_VARS;



    if (empty($HTTP_SERVER_VARS['HTTP_HOST'])) {

        $server = getenv('HTTP_HOST');

    } else {

        $server = $HTTP_SERVER_VARS['HTTP_HOST'];

    }

    // IIS sets HTTPS=off

    if (isset($HTTP_SERVER_VARS['HTTPS']) && $HTTP_SERVER_VARS['HTTPS'] != 'off') {

        $proto = 'https://';

    } else {

        $proto = 'http://';

    }



    $path = pnGetBaseURI();



    return "$proto$server$path/";

}



/**

* Carry out a redirect

* @param the URL to redirect to

* @returns void

*/

function pnRedirect($redirecturl)

{

    // Always close session before redirect

    if (function_exists('session_write_close')) {

        session_write_close();

    }



    if (preg_match('!^http!', $redirecturl)) {

        // Absolute URL - simple redirect

        Header("Location: $redirecturl");

        return;

    } else {

        // Removing leading slashes from redirect url

        $redirecturl = preg_replace('!^/*!', '', $redirecturl);



        // Get base URL

        $baseurl = pnGetBaseURL();



        Header("Location: $baseurl$redirecturl");

    }



}



/**

* check to see if this is a local referral

* @returns bool

* @return true if locally referred, false if not

*/

function pnLocalReferer()

{

    global $HTTP_SERVER_VARS;



    if (empty($HTTP_SERVER_VARS['HTTP_HOST'])) {

        $server = getenv('HTTP_HOST');

    } else {

        $server = $HTTP_SERVER_VARS['HTTP_HOST'];

    }



    if (empty($HTTP_SERVER_VARS['HTTP_REFERER'])) {

        $referer = getenv('HTTP_REFERER');

    } else {

        $referer = $HTTP_SERVER_VARS['HTTP_REFERER'];

    }



    if (empty($referer) || preg_match("!^http://$server/!", $referer)) {

        return true;

    } else {

        return false;

    }

}



// Hack - we need this for themes, but will get rid of it soon

if (!function_exists('GetUserTime')) {

    function GetUserTime($time) {

        if (pnUserLoggedIn()) {

            $time += (pnUserGetVar('timezone_offset') - pnConfigGetVar('timezone_offset')) * 3600;

        }

        return($time);

    }

}



/**

* send an email

* @param to - recipient of the email

* @param subject - title of the email

* @param message - body of the email

* @param headers - extra headers for the email

* @param debug - if 1, echo mail content

* @returns bool

* @return true if the email was sent, false if not

*/

function pnMail($to, $subject, $message, $headers, $debug=0)

{

    // Language translations

    switch(pnUserGetLang()) {

        case 'rus':

        if (!empty($headers)) $headers .= "\n";

            $headers .= "Content-Type: text/plain; charset=koi8-r";

            $subject = convert_cyr_string($subject,"w","k");

            $message = convert_cyr_string($message,"w","k");

            $headers = convert_cyr_string($headers,"w","k");

            break;

    }

   

    // Debug

    if ($debug) {

            echo "Mail To: ".$to."<br>";

            echo "Mail Subject: ".$subject."<br>";

            echo "Mail Message: ".$message."<br>";

            echo "Mail Headers: ".$headers."<br>";

        }

       

    // Mail message

    // do not display error messages [class007]

    $return = @mail($to, $subject, $message, $headers);

    return $return;

}



/* Protects better diverse attempts of Cross-Site Scripting

   attacks, thanks to webmedic, Timax, larsneo.

*/



function pnSecureInput() {



/*      Lets validate the current php version and set globals

        accordingly.

        Do not change this value unless you know what you are

        doing you have been warned!

*/



//require('includes/htmlfilter.inc');



if ( phpversion() >= "4.2.0" ) {



$HTTP_GET_VARS          = $_GET;

$HTTP_POST_VARS         = $_POST;

$HTTP_COOKIE_VARS       = $_COOKIE;



} else {



global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS;



}



// Cross-Site Scripting attack defense - Sent by larsneo

// some syntax checking against injected javascript

// extended by Neo



if (count($HTTP_GET_VARS) > 0) {



/*        Lets now sanitize the GET vars

*/





        foreach ($HTTP_GET_VARS as $secvalue) {

                if ((eregi("<[^>]*script*\"?[^>]*>", $secvalue)) ||

                        (eregi(".*[[:space:]](or|and)[[:space:]].*(=|like).*", $secvalue)) ||

                        (eregi("<[^>]*object*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*iframe*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*applet*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*meta*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*style*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*form*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*window.*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*alert*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*img*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*document.*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*cookie*\"?[^>]*>", $secvalue)) ||

                        (eregi("\"", $secvalue))) {

                        pnMailHackAttempt(__FILE__,__LINE__,'pnSecurity Alert','Intrusion detection.');

                        Header("Location: index.php");

                }

        }

}



/*        Lets now sanitize the POST vars

*/



if ( count($HTTP_POST_VARS) > 0) {



        foreach ($HTTP_POST_VARS as $secvalue) {

                if ((eregi("<[^>]*script*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*object*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*iframe*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*applet*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*window.*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*alert*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*document.*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*cookie*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*meta*\"?[^>]*>", $secvalue))

                        ) {



                        pnMailHackAttempt(__FILE__,__LINE__,'pnSecurity Alert','Intrusion detection.');

                        Header("Location: index.php");

                }

        }



}



/*        Lets now sanitize the COOKIE vars

*/



if ( count($HTTP_COOKIE_VARS) > 0) {



        foreach ($HTTP_COOKIE_VARS as $secvalue) {

                if ((eregi("<[^>]*script*\"?[^>]*>", $secvalue)) ||

                        (eregi(".*[[:space:]](or|and)[[:space:]].*(=|like).*", $secvalue)) ||

                        (eregi("<[^>]*object*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*iframe*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*applet*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*meta*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*style*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*form*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*window.*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*alert*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*document.*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*cookie*\"?[^>]*>", $secvalue)) ||

                        (eregi("<[^>]*img*\"?[^>]*>", $secvalue))

                        ) {



                        pnMailHackAttempt(__FILE__,__LINE__,'pnSecurity Alert','Intrusion detection.');

                        Header("Location: index.php");

                }

        }

}





} # End of secure Input



/*         Function that compares the current php version on the

        system with the target one

*/



// Deprecate function reverting to php detecion function



function pnPhpVersionCheck($vercheck) {



$minver = str_replace(".","", $vercheck);

$curver = str_replace(".","", phpversion());



        if($curver >= $minver){

                return true;

                } else {

                return false;

        }

}



function pnMailHackAttempt( $detecting_file        =        "(no filename available)",

                            $detecting_line        =        "(no line number available)",

                            $hack_type             =        "(no type given)",

                            $message               =        "(no message given)" ) {



# Backwards compatibility fix with php 4.0.x and 4.1.x or greater Neo



if (phpversion() >= "4.2.0") {



                $_pv  = $_POST;

                $_gv  = $_GET;

                $_rv  = $_REQUEST;

                $_sv  = $_SERVER;

                $_ev  = $_ENV;

                $_cv  = $_COOKIE;

                $_fv  = $_FILES;

                $_snv = $_SESSION;

               

        } else {



        global $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS, $HTTP_COOKIE_VARS, $HTTP_POST_FILES, $HTTP_SESSION_VARS;



                $_pv  = $HTTP_POST_VARS;

                $_gv  = $HTTP_GET_VARS;

                $_rv  = array();

                $_sv  = $HTTP_SERVER_VARS;

                $_ev  = $HTTP_ENV_VARS;

                $_cv  = $HTTP_COOKIE_VARS;

                $_fv  = $HTTP_POST_FILES;

                $_snv = $HTTP_SESSION_VARS;



}

        $output         =        "Attention site admin of ".pnConfigGetVar('sitename').",\n";

        $output        .=        "On ".ml_ftime( _DATEBRIEF, ( GetUserTime( time( ) ) ) );

        $output        .=        " at ". ml_ftime( _TIMEBRIEF, ( GetUserTime( time( ) ) ) );

        $output        .=        " the Postnuke code has detected that somebody tried to"

                           ." send information to your site that may have been intended"

                           ." as a hack. Do not panic, it may be harmless: maybe this"

                           ." detection was triggered by something you did! Anyway, it"

                           ." was detected and blocked. \n";

        $output        .=        "The suspicious activity was recognized in $detecting_file "

                              ."on line $detecting_line, and is of the type $hack_type. \n";

        $output        .=        "Additional information given by the code which detected this: ".$message;

        $output        .=        "\n\nBelow you will find a lot of information obtained about "

                           ."this attempt, that may help you to find  what happened and "

                           ."maybe who did it.\n\n";



        $output        .=        "\n=====================================\n";

        $output        .=        "Information about this user:\n";

        $output        .=        "=====================================\n";



        if ( !pnUserLoggedIn() ) {

                $output        .=  "This person is not logged in.\n";

        } else {

                $output .=        "ostnuke username:  ".pnUserGetVar('uname') ."\n"

                                   ."Registered email of this Postnuke user: ". pnUserGetVar('email')."\n"

                                   ."Registered real name of this Postnuke user: ".pnUserGetVar('name') ."\n";

        }



        $output        .=        "IP numbers: [note: when you are dealing with a real cracker "

                           ."these IP numbers might not be from the actual computer he is "

                           ."working on]"

                           ."\n\t IP according to HTTP_CLIENT_IP: ".getenv( 'HTTP_CLIENT_IP' )

                           ."\n\t IP according to REMOTE_ADDR: ".getenv( 'REMOTE_ADDR' )

                           ."\n\t IP according to GetHostByName(\$REMOTE_ADDR): ".GetHostByName( $REMOTE_ADDR )

                           ."\n\n";



        $output .=        "\n=====================================\n";

        $output .=        "Information in the \$_REQUEST array\n";

        $output .=        "=====================================\n";



        while ( list ( $key, $value ) = each ( $_rv ) ) {

                $output .= "REQUEST * $key : $value\n";

        }



        $output .=        "\n=====================================\n";

        $output .=        "Information in the \$_GET array\n";

        $output .=        "This is about variables that may have been ";

        $output .=        "in the URL string or in a 'GET' type form.\n";

        $output        .=        "=====================================\n";



        while ( list ( $key, $value ) = each ( $_gv ) ) {

                $output .= "GET * $key : $value\n";

        }



        $output        .=        "\n=====================================\n";

        $output        .=        "Information in the \$_POST array\n";

        $output        .=        "This is about visible and invisible form elements.\n";

        $output        .=        "=====================================\n";



        while ( list ( $key, $value ) = each ( $_pv ) ) {

                $output .= "OST * $key : $value\n";

        }



        $output        .=        "\n=====================================\n";

        $output        .=         "Browser information\n";

        $output        .=        "=====================================\n";



        global $HTTP_USER_AGENT;

        $output        .=        "HTTP_USER_AGENT: ".$HTTP_USER_AGENT ."\n";



        $browser = (array) get_browser();

        while ( list ( $key, $value ) = each ( $browser ) ) {

                $output .= "BROWSER * $key : $value\n";

        }



        $output        .=        "\n=====================================\n";

        $output        .=        "Information in the \$_SERVER array\n";

        $output        .=        "=====================================\n";



        while ( list ( $key, $value ) = each ( $_sv ) ) {

                $output .= "SERVER * $key : $value\n";

        }



        $output        .=        "\n=====================================\n";

        $output        .=        "Information in the \$_ENV array\n";

        $output        .=        "=====================================\n";



        while ( list ( $key, $value ) = each ( $_ev ) ) {

                $output .= "ENV * $key : $value\n";

        }



        $output        .=        "\n=====================================\n";

        $output        .=  "Information in the \$_COOKIE array\n";

        $output        .=        "=====================================\n";



        while ( list ( $key, $value ) = each ( $_cv ) )  {

                $output .= "COOKIE * $key : $value\n";

        }



        $output        .=        "\n=====================================\n";

        $output        .=        "Information in the \$_FILES array\n";

        $output        .=        "=====================================\n";



        while ( list ( $key, $value ) = each ( $_fv ) ) {

                $output .= "FILES * $key : $value\n";

        }



        $output        .=        "\n=====================================\n";

        $output        .=        "Information in the \$_SESSION array\n";

        $output .=  "This is session info. The variables\n";

        $output .=  "  starting with PNSV are PostNukeSessionVariables.\n";

        $output        .=        "=====================================\n";



        while ( list ( $key, $value ) = each ( $_snv ) ) {

                $output .= "SESSION * $key : $value\n";

        }



                $sitename = pnConfigGetVar('sitename');

                $adminmail = pnConfigGetVar('adminmail');

               

        $headers = "From: $sitename <$adminmail>\n"

                          ."X-Priority: 1 (Highest)\n";



        pnMail($adminmail, 'Attempted hack on your site? (type: '.$hack_type.')', $output, $headers );



        return;

}



?>
各位老大帮帮忙,小弟第一次装这个东东,不会弄.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2003-5-23 16:44:41 | 显示全部楼层
这样不好找到行数,还是把上面的两个文件贴出来吧.方便各位老大分析

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2003-5-23 16:45:49 | 显示全部楼层
pnapi

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表