'SCRIPT_FILENAME', 'LPV_PATH' => 'PATH_INFO', ); foreach($LPV_VAR_MAPPING as $from=>$into) { if(isset($_SERVER['REDIRECT_'.$from])) { $_SERVER[$into] = $_SERVER['REDIRECT_'.$from]; if(isset($$into)) { $$into = $_SERVER[$into]; } unset($_SERVER['REDIRECT_'.$from]); if(isset(${'REDIRECT_'.$from})) { unset(${'REDIRECT_'.$from}); } unset($_SERVER[$from]); if(isset(${$from})) { unset(${$from}); } } } if(empty($_SERVER['PATH_INFO'])) { $_SERVER['PATH_TRANSLATED'] = $_SERVER['SCRIPT_FILENAME']; } else { $_SERVER['PATH_TRANSLATED'] = $_SERVER['DOCUMENT_ROOT'].$_SERVER['PATH_INFO']; } if(isset($PATH_TRANSLATED)) { $PATH_TRANSLATED = $_SERVER['PATH_TRANSLATED']; } $_SERVER['SCRIPT_NAME'] = substr($_SERVER['REDIRECT_URL'], 0, strlen($_SERVER['REDIRECT_URL'])-strlen($_SERVER['PATH_INFO'])); $_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'].$_SERVER['PATH_INFO']; if(isset($SCRIPT_NAME)) { $SCRIPT_NAME = $_SERVER['SCRIPT_NAME']; } if(isset($PHP_SELF)) { $PHP_SELF = $_SERVER['PHP_SELF']; } foreach($_SERVER as $key=>$value) { if(strpos($key,'REDIRECT_')===0) { if(isset(${$key})) { unset(${$key}); } unset($_SERVER[$key]); } } /* Setting proper include_path (reusing $LPV_VAR_MAPPING variable) */ $LPV_VAR_MAPPING = PATH_SEPARATOR.ini_get('include_path').PATH_SEPARATOR; $LPV_VAR_MAPPING = str_replace( PATH_SEPARATOR.'.'.PATH_SEPARATOR, PATH_SEPARATOR.dirname($_SERVER['SCRIPT_FILENAME']).PATH_SEPARATOR, $LPV_VAR_MAPPING ); ini_set('include_path', substr($LPV_VAR_MAPPING, 1, strlen($LPV_VAR_MAPPING)-2)); chdir(dirname($_SERVER['SCRIPT_FILENAME'])); /* Logging and/or processing the suspisious request (I don't recommend using e-mail for this, it's just an example) */ mail( 'you@example.com', 'LPV at '.$_SERVER['SERVER_NAME'].' ('.date('Y-m-d H:i:s').')', $_SERVER['REQUEST_URI']."\r\n" .'requested from '.$_SERVER['REMOTE_ADDR']."\r\n" .date('Y-m-d H:i:s')."\r\n" ."\r\n--==[ DUMP ]==--\r\n\r\n" .(function_exists('apache_request_headers')?('Headers '.var_export(apache_request_headers(), true)."\r\n"):'') .'POST '.var_export($_POST, true)."\r\n" .'SERVER '.var_export($_SERVER, true)."\r\n" , 'From: lpv@'.$_SERVER['SERVER_NAME'] ); /* Cleaning after self */ unset($LPV_VAR_MAPPING); /* Cleaning output buffer */ ob_end_clean(); /* Including requested file (this mess should be rewritten...) */ function LPV_IsPHPFile($file) { $pinfo = pathinfo($file); if($pinfo['extension']=='php') { return true; } return false; } if( strtolower($_SERVER['SCRIPT_FILENAME'])!=strtolower(__FILE__) && strpos($_SERVER['SCRIPT_FILENAME'],'..')===false ) { if(is_file($_SERVER['SCRIPT_FILENAME'])) { if(LPV_IsPHPFile($_SERVER['SCRIPT_FILENAME'])) { include($_SERVER['SCRIPT_FILENAME']); } else { readfile($_SERVER['SCRIPT_FILENAME']); } } elseif(is_dir($_SERVER['SCRIPT_FILENAME']) && is_file($_SERVER['SCRIPT_FILENAME'].'/index.php')) { include($_SERVER['SCRIPT_FILENAME'].'/index.php'); } elseif(is_dir($_SERVER['SCRIPT_FILENAME']) && is_file($_SERVER['SCRIPT_FILENAME'].'/index.html')) { readfile($_SERVER['SCRIPT_FILENAME'].'/index.html'); } } exit; ?>