php - rawurlencode - Los saltos de solicitud de urlencode y GET en Ampersand
php urlencode acentos (3)
Debe usar urlencode
antes de imprimir el enlace al usuario, no después de que haga clic en el enlace:
$link = "http://www.somesite.com/redirector.aspx?aid=334&cid=2502&tid=3";
echo ''<a href="http://www.mysite.com/go/go.php?url=''.urlencode($link).''">'' . $link . ''</a>'';
[+]
Recomiendo escribir un script que cambie las entradas existentes con las correctas. Si todos comienzan con www.mysite.com/go/go.php?url=
, puede reemplazarlo con nada en la base de datos, agregue esta parte a su metaetiqueta y echo urlencoded link desde db.
Cualquier otra solución será solo un kludge. Una de ellas es recrear la URL original del resto de parámetros GET en go.php:
$url = $_GET[''url''];
unset($_GET[''url'']);
if ($_GET) {
$url .= ''&'' . http_build_query($_GET);
}
Estoy trabajando en un sitio web de wordpress que tiene miles de páginas y el propietario ha ingresado un enlace de afiliado para cada página a través de un campo personalizado llamado: afflink
El enlace de afiliado se publica en la página usando:
<?php echo get_post_meta(get_the_ID(), ''afflink'', true) ?>
El usuario hace clic en el enlace que lo envía a una página llamada go.php
El enlace se ve así:
www.mysite.com/go/go.php?url=http://www.somesite.com/redirector.aspx?aid=334&cid=2502&tid=3
Dentro de la página go.php está la siguiente etiqueta meta refresh:
<meta http-equiv="refresh" content="5;<?php echo $_GET[''url'']?>
"/>
Sin embargo, cuando la página se actualiza, nos envía a solo:
http://www.somesite.com/redirector.aspx?aid=334
¿Cómo puedo arreglar esto?
Estás haciendo un uso indebido de las URL.
Su URL se analiza de esta manera:
- Ruta:
go/go.php
-
?
- Primer argumento de cadena de consulta:
url=http://www.somesite.com/redirector.aspx?aid=334
-
&
- Segundo argumento de la cadena de consulta:
cid=2502
-
&
- Tercer argumento de cadena de consulta:
tid=3
En su lugar, debe codificar el URL-parameter de la URL interna.
No es necesario urldecode una variable GET o REQUEST, se decodifican automáticamente: