2010-08-09 9 views
1

j'ai besoin pour obtenir des valeurs dans l'url car il estvaleurs get dans url

ex:

http://www.example.com/index?url=1 + LY2ePh1pjX4tjZ4 + GS393Y2pjd16Cbq63T3tbfzMzd16CarA ==

mais url vriable me donner de la valeur de "1 LY2ePh1pjX4tjZ4 GS393Y2pjd16Cbq63T3tbfzMzd16CarA =="

Même si j'attendais « 1 + LY2ePh1pjX 4tjZ4 + GS393Y2pjd16Cbq63T3tbfzMzd16CarA == »

quelqu'un peut me aider pour cela ou connaître la raison

+0

êtes-vous l'encodage de votre URL ou en tapant simplement cette façon ? – user387302

+0

je n'ai fait aucun encodage – scit

+0

il convertit automatiquement + en "" (espace), c'est le problème – scit

Répondre

0

Le client d'envoyer la requête URL est apparemment pas coder correctement la valeur. Vous pouvez ré-encoder après sa décodé comme ceci:

urlencode($_GET["url"]) 
2

Vous voyez, vous devez encoder certains caractères si vous avez besoin de les envoyer dans une URL. Pour d'autres références, je suggère que vous devriez lire ceci Page. Il semble que l'URL que vous obtenez n'est pas encodée correctement. Si l'URL provient de votre site, je vous suggère de l'encoder correctement.

En PHP, il existe un function appelé urlencode, qui peut vous aider dans cette tâche.

Une brève explication

URL ne peuvent être envoyés sur Internet en utilisant le caractère ASCII set.If vous voulez envoyer des caractères qui est en dehors de ce jeu, vous devez encoder le codage it.URL remplace les caractères ASCII dangereux avec % suivi de deux chiffres hexadécimaux correspondant aux valeurs de caractères du ISO-8859-1 character-set.

+0

C'est plutôt UTF-8 qui est utilisé ces jours-ci. – Gumbo

0

IT convertir % 2B à l'espace

+0

Si vous avez un commentaire, faites un commentaire.Ce n'est pas la réponse qu'il prétend être. – Quentin

+0

Réputation 1 ne peut pas faire de commentaire je pense. Je ne pense pas qu'il mérite d'être rétrogradé pour ça. –

+0

Je suis sûr qu'ils peuvent faire des commentaires sur les réponses à leurs propres questions. – Quentin

0

Le paramètre que vous avez envoyé est faux, il aurait dû être codé comme si ..

<?php 
    echo '<a href="http://www.example.com/index?url=', urlencode('1+LY2ePh1pjX4tjZ4+GS393Y2pjd16Cbq63T3tbfzMzd16CarA=='), '">'; 
?> 
0

j'ai ajouté l'encodage correctement maintenant, il convertir == correctement, mais signe + encoder correctement à% 2B, mais dans le processus de décodage, il convertir en espace

0

Comme il semble que vous ayez une valeur Base-64: Vous pouvez utiliser le URL safe alphabet for Base-64 qui utilise - et _ au lieu de + et / respectivement:

$base64 = "1+LY2ePh1pjX4tjZ4+GS393Y2pjd16Cbq63T3tbfzMzd16CarA=="; 
// plain Base-64 to URL safe Base-64 
$base64_safe = strtr($base64, '+/', '-_'); 
// URL safe Base-64 to plain Base-64 
$base64 = strtr($base64_safe, '-_', '+/'); 

Et si vous connaissez la longueur des données, vous pouvez également omettre le rembourrage =:

rtrim($base64, '=')