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