2010-04-14 14 views
2

Sur une page, je suis "masquage"/URL de codage qui est passé à une autre page, là, je décode l'URL et commence la livraison du fichier à l'utilisateur.Besoin d'aide avec PHP codage/décodage URL

J'ai trouvé une fonction pour encoder/décoder les URL, mais parfois l'URL encodée contient "+" ou "/" et le lien décodé est cassé.

Je dois utiliser "structure de dossier" pour le lien, ne peut pas utiliser QueryString!

Voici fonction Encoding:

$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>'; 

Voici Décodage:

$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; 

Alors, comment coder et décoder url. Merci


EDIT:

Je résolus avec str_replace :)

Lors de l'encodage:

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

Lors du décodage:

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

+1 Sécurité PHP –

+0

Désolé de ne pas comprendre ce que vous voulez dire? – Kenan

Répondre