Source for file funzioni_url.inc
Documentation is available at funzioni_url.inc
* Funzioni di utilita' per la codifica degli url ai fini di protezione delle operazioni
* @author Ubik <emiliano.leporati@gmail.com>
* implica che $location contiene una url con & e viene restituita com &
* la url viene passata con & e restituita con &
* la url viene passata con & e restituita con &
define("PROTO", isset ($_SERVER['https']) ? 'https://' : 'http://');
define("AMP_SEARCH", '/&(?!(?U)[\w-&]{0,6};)/');
define("AMP_REPLACE", '&');
* Collega due stringhe nella formazione di un percorso corretto (es: path('c:\pippo','bravo.xml') = 'c:/pippo/bravo.xml')
function path($inizio, $fine = '')
if (substr($inizio, - 1) == "/") {
$inizio = substr($inizio, 0, - 1);
if (strlen($fine) > 0 && $fine[0] == "/") {
foreach($_POST as $key => $value) {
* Costruisce l'url che punta al gateway (file php) passato
$host = PROTO. $_SERVER['HTTP_HOST'];
if (substr($host, - 1) == "/") {
if (substr(VDIR, - 1) == "/") {
$file = path($vdir, $file);
return path($host, $file);
* genera una URL con checksum per impedire la modifica manuale della URL
* @param string $location la stringa contenente la url da codificare
* @param integer $replace_amp indica come trasformare le & (vedere {@link URL_AMP_DEFAULT}, {@link URL_AMP_XML}, {@link URL_AMP_PHP}
function url_codifica($location, $replace_amp = URL_AMP_DEFAULT)
// se arriva una stringa vuota o non devo fare nulla, non faccio nulla
// se arriva una stringa senza ? viene accodato
if (strpos($location, '?') === FALSE) {
$location = $location. '?';
$location = path(PROTO. $_SERVER['HTTP_HOST'], path(VDIR, $location));
$location = path(PROTO. $_SERVER['HTTP_HOST'], $location);
$location .= "&CHK=". bin2hex(mhash(MHASH_MD5, $location, CHECKSUM_PASSWORD));
* Controlla se la url passata e' coerente con il checksum previsto
* @param string $location la stringa contenente la url da verificare (se null, viene presa l'ultima pagina richiesta)
// se non devo fare nulla, va bene dibbase
// se location e' null, faccio la validazione sulla pagina corrente
$location = PROTO. $_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI'];
if (strpos($location, '&CHK') === FALSE)
// tolgo la checksum e ricalcolo l'hash
$location_attesa = explode("&CHK",$location);
if ($location == $location_attesa) {
|