Foros del Web » Programando para Internet » PHP »

Como pasar una variable de un dominio a otro dominio a través de la url

Estas en el tema de Como pasar una variable de un dominio a otro dominio a través de la url en el foro de PHP en Foros del Web. Hola a todos, Mi problema es el siguiente, tengo dos sitios web: www.sitioweb1.com y www.sitioweb2.com El tema es que www.sitioweb1.com es una landing que vendrá ...
  #1 (permalink)  
Antiguo 20/09/2016, 10:40
 
Fecha de Ingreso: febrero-2012
Ubicación: Badalona
Mensajes: 4
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta Como pasar una variable de un dominio a otro dominio a través de la url

Hola a todos,

Mi problema es el siguiente, tengo dos sitios web:

www.sitioweb1.com y www.sitioweb2.com

El tema es que www.sitioweb1.com es una landing que vendrá de una campaña de adwords, por lo que utilizo una variable de control:

www.sitioweb1.com/?var=adwords.

En el www.sitioweb1.com (wordpress) tengo implementado el siguiente código para que me guarde la variable var (la guarda, lo he comprobado):

<?php
$lifetime=1800;
session_set_cookie_params($lifetime);
session_start();
if (isset($_GET["var"])) {
$_SESSION["var"] = $_GET["var"];
}
?>

Utilizo las variables de control para tener controlado en el crm de donde viene cada campaña cuando cumplimentan un formulario, y en este caso para controlar cuando las visitas sean “orgánicas” y cuando vienen de la campaña(?var=adwords). Pero aquí viene el problema, cuando haces clic en alguno de sus enlaces, necesito que la variable "var" pase hacia www.sitioweb2.com para hacer un segundo control de la siguiente forma:

www.sitioweb2.com?var=adwords&var1=sitioweb1

En la pagina www.sitioweb2.com (joomla) tengo implementado el siguiente código:

<?php
$lifetime=1800;
session_set_cookie_params($lifetime);
session_start();
if (isset($_GET["var"]) & empty($_GET["var1"])) {
$_SESSION["var"] = $_GET["var"];
} else if (isset($_GET["var"]) & isset($_GET["var1"])) {
$_SESSION["var"] = $_GET["var1"];
}
?>

Lo que debería hacer este código es comprobar si las dos variables que le llegan var y var1 estan llenas, en el caso de que ambas lo estén debería meter el valor de "var1" en la variable de sesión "var".

Bien, volvamos al www.sitioweb1.com, ¿Como puedo llenar la variable ?var= con la palabra adwords en la url? ¿Es posible? De manera que al hacer click en alguno de sus enlaces las urls queden de la siguiente forma:

www.sitioweb2.com/?var=adwords&var1=sitioweb1
www.sitioweb2.com/loquesea/?var=adwords&var1=sitioweb1
www.sitioweb2.com/loquesea2/?var=adwords&var1=sitioweb1

Muchas gracias de antemano y un saludo
  #2 (permalink)  
Antiguo 21/09/2016, 22:51
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: Como pasar una variable de un dominio a otro dominio a través de la url

Te refieres a llenar automáticamente los enlaces sin modificarlos uno a uno?? Porque lo que planteas a priori es fácil:

Código PHP:
Ver original
  1. $enlace = '';
  2. if($_SESSION['var']){
  3.     $enlace = '?var='.$_SESSION['var'];
  4. }

Después en cada enlace añades esto:

Código PHP:
Ver original
  1. <a href="www.sitioweb2.com/loquesea<?php echo $enlace ?>">ENLACE</a>

Si lo que quieres es que se agrege automáticamente a los enlaces podrías hacerlo fácilmente con un código jQuery guardándolo en un $_COOKIE en lugar de una $_SESSION y parando el evento al hacer clic en el enlace, añadir la variable a al URL y despúes redireccionando con javascript.
__________________
Diseño Web - Arisman Web
  #3 (permalink)  
Antiguo 28/09/2016, 05:38
 
Fecha de Ingreso: febrero-2012
Ubicación: Badalona
Mensajes: 4
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como pasar una variable de un dominio a otro dominio a través de la url

Cita:
Iniciado por manuparquegiralda Ver Mensaje
Te refieres a llenar automáticamente los enlaces sin modificarlos uno a uno?? Porque lo que planteas a priori es fácil:

Código PHP:
Ver original
  1. $enlace = '';
  2. if($_SESSION['var']){
  3.     $enlace = '?var='.$_SESSION['var'];
  4. }

Después en cada enlace añades esto:

Código PHP:
Ver original
  1. <a href="www.sitioweb2.com/loquesea<?php echo $enlace ?>">ENLACE</a>

Si lo que quieres es que se agrege automáticamente a los enlaces podrías hacerlo fácilmente con un código jQuery guardándolo en un $_COOKIE en lugar de una $_SESSION y parando el evento al hacer clic en el enlace, añadir la variable a al URL y despúes redireccionando con javascript.
Hola manuparquegiralda,

Siento no haber contestado antes, no me llegó la notificación de respuesta al correo.

La verdad es que iba bastante perdido con este tema.

Una de las cosas, en efecto, era llenar automáticamente las urls de los posts con esas dos variables.

El problema en cuanto al echo en la urls es que wordpress no me dejaba meterle un <?php echo $loquesea ?>, simplemente obviaba el "echo" aún teniendo guardada la variable, imagino que por temas de seguridad. He tenido que googlear bastante y al final encontré una función de wordpress para añadir las variables automáticamente en los posts.

Al final he decidido hacer las redirecciones manualmente a través de htaccess, ya que esa landing (wordpress) solamente tendrá unos 10-15 links por lo que tampoco crecerá demasiado.

Un saludo y gracias por tomarte la molestia de contestar
  #4 (permalink)  
Antiguo 28/09/2016, 06:50
 
Fecha de Ingreso: febrero-2012
Ubicación: Badalona
Mensajes: 4
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como pasar una variable de un dominio a otro dominio a través de la url

Hola a todos,

Al fin he conseguido realizar la "hazaña" . Probablemente no sea ni la manera más elegante, ni la más optimizada a nivel de código, pero parece que funciona correctamente.

A continuación explico paso a paso las acciones que he realizado:

Lo primero, era llenar automáticamente las urls de los posts de wordpress con la variable de adwords (en el caso de que el usuario venga de adwords) y la de sitioweb1 (esta variable siempre aparece).

Para empezar en el index.php de wordpress (no del template) he colocado el siguiente código:

Código PHP:
<?php

$lifetime
=1800;
session_set_cookie_params($lifetime);
session_start();
if (isset(
$_GET['var'])) {
    
$_SESSION['var'] = $_GET['var'];
}
?>
Con esto, ya tengo la variable en $_SESSION guardada, lo siguiente, fue introducir el siguiente código en el functions.php del template:

Código PHP:
function append_query_string$url$post$leavename=false ) {
    if ( 
$post->post_type == 'post' ) {
        
$arr_params = array( $_SESSION 'var1' => 'sitioweb1' );
        
$url add_query_arg$arr_params $url);
    }
    return 
$url;
}
add_filter'post_link''append_query_string'10); 
Con esto ya nos coloca las variables "adwords", en el caso de que el usuario haya entrado a nuestra web con la url: http://www.sitioweb1.com?var=adwords y la variable "sitioweb1" de manera fija, por lo que la url del post de wordpress quedaría así:

http://www.sitioweb1.com/loquesea?var1=sitioweb1 <-------------Esta sería la url en el caso de que el usuario venga de tráfico orgánico.

http://www.sitioweb1.com/loquesea?var=adwords&var1=sitioweb1 <-------------Esta sería la url en el caso de que el usuario venga de tráfico de pago.

Bien, con esto tenemos solucionado lo de las variables en las urls.

A continuación para que el enlace del título de un post de wordpress no te lleve al post en si y te redirija hacia www.sitioweb2.com es una verdadera pesadilla ya que necesitas algún tipo de plugin de redirección, pero el problema es que las urls de salida las da el plugin y no wordpress por lo que el código del functions.php que he colocado arriba y que introduce las variables al final de la url no funcionaría (habría que tocar código del propio plugin de redirección). Al final decidí no utilizar ningún plugin de redirección y hacerlas manualmente a través del htaccess.

El htaccess quedaría así:

Código:
#BEGIN CUSTOM
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^loquesea/?$ http://www.sitioweb2.com/dondesea[L,R=302,QSA]

</IfModule>
#END CUSTOM

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
Con esto logramos que la url de wordpress haga una redirección a la nueva url de destino junto con las variables.

Hay que tener cuidado con dos cosas en el htaccess:

  • No meterle el "nuevo" RewriteRule que le hemos puesto, dentro de los corchetes de # BEGIN WordPress Y # END WordPress. Por eso está fuera y al principio (#BEGIN CUSTOM...), ya que si tenéis algún plugin de redirección o de SEO que toque el htaccess, os hará un reset del mismo dejando solo la parte original de Wordpress.
  • La Redirección que le he puesto al htaccess es la 302 (temporal) para pruebas, una vez todo funcione correctamente se cambia a 301

    Código:
    RewriteRule ^loquesea/?$ http://www.sitioweb2.com/dondesea [L,R=301,QSA]
    
Para finalizar, en www.sitioweb2.com he colocado el siguiente código en el index.php del template de joomla (había un error en el que puse en el primer post):

Código PHP:
<?php 
$lifetime
=1800;
session_set_cookie_params($lifetime);
session_start();
if (isset(
$_GET["var"]) & empty($_GET["var1"])){
    
$_SESSION["var"] = $_GET["var"];
} else if (empty(
$_GET["var"]) & isset($_GET["var1"])) {
    
$_SESSION["var"] = $_GET["var1"];
}
?>
Con esto hace la comprobación de si viene una u otra variable, en el caso de que var=adwords venga llena guarda el valor en $_SESSION y en el caso de que solo venga var1=sitioweb1 también la guarda en $_SESSION.

Espero no haberme dejado nada.

Un saludo a todos

Última edición por jun3on; 28/09/2016 a las 07:40
  #5 (permalink)  
Antiguo 02/10/2016, 12:35
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Como pasar una variable de un dominio a otro dominio a través de la url

ese tema es de frameworks. -.-

Etiquetas: dominios, url, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:07.