Foros del Web » Programando para Internet » PHP »

recargar pagina y pasar variables GET desde un vinculo

Estas en el tema de recargar pagina y pasar variables GET desde un vinculo en el foro de PHP en Foros del Web. estoy montando una nueva web que estara en varios idiomas la idea es que cuando alguien pike la banderita correspondiente recarge la pagina con la ...
  #1 (permalink)  
Antiguo 27/03/2009, 12:34
 
Fecha de Ingreso: abril-2008
Mensajes: 72
Antigüedad: 16 años
Puntos: 0
recargar pagina y pasar variables GET desde un vinculo

estoy montando una nueva web que estara en varios idiomas
la idea es que cuando alguien pike la banderita correspondiente recarge la pagina con la nueva variable que corresponde a la banderita
tengo este codigo

Código HTML:
<a href="javascript:document.location.reload();?len=esp"><img src="imagenes/espanol.gif"> 

la variable len es recogida en un $_GET[] en la misma pagina que a su vez la pasa a un $_SESSION[] asi todas las paginas son leidas solo en el idioma selecionado

lo que es la recarga de la pagina la realiza pero no pasa la variable len=esp y me da error de pagina.

agradeceria cualquier sugerencia
quiero simplificar al maximo este asunto del cambio de idioma pero sin perder la efectividad.
gracias
  #2 (permalink)  
Antiguo 27/03/2009, 12:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: recargar pagina y pasar variables GET desde un vinculo

Eso es Javascript. Podría ser:
Código javascript:
Ver original
  1. location.href = location.href + "?len=esp";
Aunque sería mejor desde el servidor ya generar una URL del tipo:
Código:
pagina_actual.php?len=esp
Esto último lo puedeshacer usando PHP_SELF
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 27/03/2009, 12:50
 
Fecha de Ingreso: abril-2008
Mensajes: 72
Antigüedad: 16 años
Puntos: 0
Respuesta: recargar pagina y pasar variables GET desde un vinculo

este codigo no me sirve

pagina_actual.php?len=esp

ya que en este caso deberia cambiar el nombre "pagina_actual.php" en cada pagina.
intento hacer algo que sea generico para todas las paginas asi al montar una nueva pagina solo pego el fragmento sin preocuparme de cambiar nada y no dejarme nada en el aire olvidado y volverme loco despues buscandolo,
probare el otro codigo en java a ver que consigo
gracias
  #4 (permalink)  
Antiguo 27/03/2009, 12:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: recargar pagina y pasar variables GET desde un vinculo

Como te dije, puedes usar $_SERVER['PHP_SELF'] para apuntar al archivo actual (usa urlencode para evitar problemas con la seguridad)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 27/03/2009, 12:54
 
Fecha de Ingreso: abril-2008
Mensajes: 72
Antigüedad: 16 años
Puntos: 0
ok voy a probar esto
gracias de nuevo

nada que no hay manera, le e dado mil vueltas
y tampoco encuentro informacion al respeto

no tengo ni idea de como seria la funcion correcta, porfaaaaaaaa una ayuditaaaaaaa

Última edición por GatorV; 27/03/2009 a las 15:53
  #6 (permalink)  
Antiguo 27/03/2009, 13:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: recargar pagina y pasar variables GET desde un vinculo

Podría ser:
Código php:
Ver original
  1. <a href="<?php echo urlencode($_SERVER['PHP_SELF']); ?>?len=esp">Enlace</a>
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 27/03/2009, 14:00
 
Fecha de Ingreso: abril-2008
Mensajes: 72
Antigüedad: 16 años
Puntos: 0
Respuesta: recargar pagina y pasar variables GET desde un vinculo

si por hay van los tiros
pero me manda a esta pagina

dominio.com/%2Findex.php?len=esp

la %2F no se de donde sale ya que lo correcto seria esta otra direccion

dominio.com/index.php?len=esp

voy a probar a quitar algun espacio o las siglas php no se hay algo que falla

muchas gracias de todas maneras
  #8 (permalink)  
Antiguo 27/03/2009, 14:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: recargar pagina y pasar variables GET desde un vinculo

Es el efecto de urlencode, pensando bien, tal vez sea mejor usar htmlspecialchars() en lugar de urlencode().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 27/03/2009, 14:12
 
Fecha de Ingreso: abril-2008
Mensajes: 72
Antigüedad: 16 años
Puntos: 0
Respuesta: recargar pagina y pasar variables GET desde un vinculo

ufff te debo una cerveza bien fresquita

ya funciona creo que correctamente

cuando tenga el codigo bien elaborado lo pondre aqui para uso del personal

muchas gracias
  #10 (permalink)  
Antiguo 27/03/2009, 14:15
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: recargar pagina y pasar variables GET desde un vinculo

corregime si me equivoco pero de ese modo podrias tener problemas si hay una variable ? antes del ?len=esp o si hay varias variables antes.. osea con phpself perderias esas variables...
faltaria un QUERY_STRING para no perderlas...

proba si te funciona con estas 3 url...
Código:
http://localhost/test/requesturi.php
http://localhost/test/requesturi.php?uno=var
http://localhost/test/requesturi.php?uno=var&dos=var
luego implementa este codigo:
Código PHP:
<?php
$GoTo 
$_SERVER['PHP_SELF']."?len=esp";
if (isset(
$_SERVER['QUERY_STRING'])) {
    
$GoTo .= (strpos($GoTo'?')) ? "&" "?";
    
$GoTo .= $_SERVER['QUERY_STRING'];
}

//echo $GoTo;
?>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #11 (permalink)  
Antiguo 27/03/2009, 14:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: recargar pagina y pasar variables GET desde un vinculo

Buen aporte, farra, por si se necesitan las variables de la URL .

P.S.: También, siguiendo la idea, podría ser:
Código php:
Ver original
  1. $direccion = $_SERVER['REQUEST_URI'];
  2. $direccion .= (strpos($direccion, '?')) ? '&' : '?';
  3. $direccion .= 'len=es';
  4. $direccion = htmlspecialchars($direccion);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 27/03/2009, 14:33
 
Fecha de Ingreso: abril-2008
Mensajes: 72
Antigüedad: 16 años
Puntos: 0
Respuesta: recargar pagina y pasar variables GET desde un vinculo

Aqui pongo el codigo completo para el cambio de idioma
se pueden sustituir las palabras del vinculo por banderitas que queda mas molon

en la vista diseño se aprecian 4 blokes php, los textos español, catala y english se pueden cambiar por blokes enteros como tablas, formularios, o toda la pagina
espero que os sirva

Código HTML:

<p><span class="Estilo1 Estilo1"> <a href="<? echo htmlspecialchars($_SERVER['PHP_SELF']);?>?len=esp">En castellano</a></span></p>
<p><span class="Estilo1 Estilo1"> <a href="<? echo htmlspecialchars($_SERVER['PHP_SELF']);?>?len=cat">En catalan</a></span></p>
<p><span class="Estilo1 Estilo1"> <a href="<? echo htmlspecialchars($_SERVER['PHP_SELF']);?>?len=eng">En ingles </a></span></p>
<p>Resultado: 
<? 
session_start();
if ($_GET[len]!="")
{
$_SESSION[len]=$_GET[len];	
}if ($_SESSION[len]==""){
$_SESSION[len]="esp";
}
if ($_SESSION[len]=="esp"){ 
?>
Espa&ntilde;ol
<? 
}
if ($_SESSION[len]=="cat"){ 
?>
Catala
<?
}
 if ($_SESSION[len]=="eng"){ 
?>
English
<? } ?> 
espero que a alguien le sirva.

PD: e visto nuevos aportes a este tema mientras realizava este mensaje, ahora me pondre manos a la obra para intentar mejorarlo

gracias

Última edición por eugeniobcn; 29/03/2009 a las 07:56
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 14:59.