PodglÄ…d pliku: / phpproxy / rewrite.php


<?php
/************************************************** 
 *                   Proxy w PHP                  * 
 ************************************************** 
 * Wersja: 0.4 Alpha                              * 
 * Autor: Jacek Kowalski (http://jacekk.info)     * 
 *                                                * 
 * Utwór rozprowadzany na licencji                * 
 * http://creativecommons.org/licenses/by-nc/2.5/ * 
 **************************************************/

ini_set('default_charset''');

function 
simple_path_adv($path) {
    
$path explode('/'simple_path($path));
    
$new_path = array();
    
    foreach(
$path as $key => $value) {
        switch(
$value) {
            case 
'..':
                
array_pop($new_path);
            break;
            case 
'':
            case 
'.':
            break;
            default:
                
$new_path[] = $value;
            break;
        }
    }
    
    return 
'/'.implode('/'$new_path);
}

function 
simple_path($path) {
    
$path trim(str_replace(array('/./''//''\\'), '/'$path), '/');
    while(
strpos($path'//')!==FALSE OR strpos($path'/./')!==FALSE) {
        
$path str_replace(array('/./''//''\\'), '/'$path);
    }
    return 
'/'.$path;
}

function 
base_path($start$rel) {
    
$start explode('/'simple_path_adv($start));
    
$rel explode('/'$rel);
    
    foreach(
$rel as $value) {
        switch(
$value) {
            case 
'..':
                
array_pop($start);
            break;
            case 
'':
            case 
'.':
            break;
            default:
                
$start[] = $value;
            break;
        }
    }
    
    return 
'/'.implode('/'$start);
}

echo 
base_path('/home/test/..''.././test/./../../etc');
?>

Browse Code © 2010 by Jacek Kowalski