2010-04-14 8 views
2

На одной странице я «маскирую»/кодирую URL, который передается на другую страницу, там я декодирую URL-адрес и запускаю доставку файла пользователю.Нужна помощь с PHP-кодированием/декодированием URL-адресов

Я нашел некоторую функцию для URL-адреса кодирования/декодирования, но некогда закодированный URL-адрес содержит «+» или «/», а декодированная ссылка нарушена.

Я должен использовать «структуру папок» для ссылки, не могу использовать QueryString!

Здесь кодирующая функция:

$urll  = 'SomeUrl.zip'; 
$key  = '123'; 
$result  = ''; 


for($i=0; $i<strlen($urll); $i++) { 
    $char = substr($urll, $i, 1); 
    $keychar = substr($key, ($i % strlen($key))-1, 1); 
    $char = chr(ord($char)+ord($keychar)); 
    $result.=$char; 
    } 
$result = urlencode(base64_encode($result)); 
echo '<a href="/user/download/'.$result.'/">PC</a>'; 

Здесь декодирование:

$urll  = 'segment_3'; //Don't worry for this one its CMS retrieving 3rd "folder" 
     $key  = '123'; 
     $resultt = ''; 
     $string  = ''; 

     $string  = base64_decode(urldecode($urll)); 


     for($i=0; $i<strlen($string); $i++) { 
      $char = substr($string, $i, 1); 
      $keychar = substr($key, ($i % strlen($key))-1, 1); 
      $char = chr(ord($char)-ord($keychar)); 
      $resultt.=$char; 
      } 

     echo '<br />DEC: '. $resultt; 

Так как для кодирования и декодирования URL. Благодаря


РЕДАКТИРОВАТЬ:

Я решил с str_replace :)

При кодировании:

$result  = str_replace('%2B', '-', $result); 
$result  = str_replace('%2F', '_', $result); 

При декодировании:

$urll  = str_replace('-', '%2B', $urll); 
$urll  = str_replace('_', '%2F', $urll); 
+0

+1 Безопасность PHP –

+0

Простите, не понимаете, что вы хотите сказать? – Kenan

ответ