2010-04-14 83 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安全 – 2010-07-31 10:57:45

+0

對不起,不明白你想說什麼? – Kenan 2010-08-19 19:58:58

回答