2010-05-29 8 views
0

i script sontphp redirection et querystring

<?php 
$to = $_GET["to"]; 

header("Location: $to"); 
?> 

si j'appelle le script tel

out.php?to=http://site.ru/page.php?param1=1&param2=2 

à être $ param seulement http://site.ru/page.php?param1=1&

comment fixer? Je veux que $to = http://site.ru/page.php?param1=1&param2=2

Répondre

0

$ à doit être urlencoded, mais notez que vous donnant un script de redirection à tout le monde, donc, tout fraudeur peut l'utiliser .
Ainsi, il serait préférable de stocker les URL dans la base de données et de transmettre uniquement un identifiant.

2

Vous pouvez échapper à l'URL sur le site appelant out.php:

<a href="out.php?to=<?PHP echo htmlspecialchars(urlencode($to)); ?>">Go to $to</a> 
0

essayer codant pour l'URL à en base64, puis dans l'exemple que u ont montré décodent avant de passer à l'en-tête :)

0

urlencode il

urlencode($to) 
1

& est un caractère réservé dans un URI. Lorsque vous accédez à cette URL, &param2=2 est interprété comme appartenant à l'URL actuelle et pas à la valeur to.
Si vous voulez transmettre littéralement, vous devez encode avec %26:

http://site.ru/page.php?param1=1%26param2=2 

La plupart des langages de programmation offrent une fonction de le faire. (par exemple JavaScript, PHP). La meilleure chose est d'encoder l'URL entière.

-1

Vous pouvez utiliser une fonction appelée « html_entity_decode »

Click Here for more information about this function

ou utiliser md5 fonction pour chiffrer l'URL, puis le déchiffrer quand vous le mettez dans un varriable.

J'espère que cela peut vous aider à

+0

md5 est une fonction de hachage. Vous ne pouvez normalement pas récupérer la valeur d'origine à partir d'un hachage (mais md5 est brisé de toute façon;)) La méthode à laquelle vous avez lié est également d'encoder des caractères spéciaux dans les entités ** HTML ** en HTML. Ceci est très différent des caractères d'encodage dans une URL. –

0

je suis tombé sur le même problème avant, ce que je l'ai fait:

$arr=explode('?to=',$_SERVER['REQUEST_URI'],2); 
$new_to=$arr[1]; 

vous pouvez maintenant utiliser la variable $ new_to de. Bien sûr, si vous utilisez ceci pour l'environnement de production, je recommanderais d'encoder l'URL comme les autres réponses conseillées. Je l'utilisais pour tester le script curl. obtenir la variable de cette façon a beaucoup de défauts, alors faites attention.