Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Variable SESSION por enlace

Estas en el tema de Variable SESSION por enlace en el foro de PHP en Foros del Web. Hola He indagado un poco pero no me ha quedado claro si se puede dar un valor a una variable de sesión desde un enlace ...
  #1 (permalink)  
Antiguo 10/11/2015, 05:15
Avatar de agusax  
Fecha de Ingreso: junio-2011
Ubicación: Puerto Real (Cádiz)
Mensajes: 74
Antigüedad: 12 años, 10 meses
Puntos: 3
Variable SESSION por enlace

Hola
He indagado un poco pero no me ha quedado claro si se puede dar un valor a una variable de sesión desde un enlace (o imagen, para los idiomas)

Ejemplo:
Esta sería la cabecera de index.php
Código PHP:
Ver original
  1. <?php
  2.     // Para que no se muestre warning
  3.     error_reporting(E_ERROR | E_PARSE);
  4.  
  5.     session_start();
  6.     $_SESSION['lang']=$_POST['lang'];
  7.     if($_SESSION['lang']=='en'){
  8.         include('lang/en_index.php');
  9.         include('lang/en_menu.php');
  10.     }else{
  11.         $_SESSION['lang']='es';
  12.         include('lang/es_index.php');
  13.         include('lang/es_menu.php');
  14.     }
  15. ?>
Y esta instrucción en la imagen para seleccionar idioma:
Código PHP:
Ver original
  1. <li><a href="<?php $_POST['lang']=en; ?>"> <img src ="images/en.png" height="20px"></a></li>
Sé que es una burrada, pero aún no me aclaro.
Actualmente trabajo con el get, pero queda feo que en la dirección del navegador quede ?lang=es
Muchas gracias
  #2 (permalink)  
Antiguo 10/11/2015, 05:23
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Variable SESSION por enlace

deberias utilizar una cookie para ello, visita mi web para que veas (no es propaganda) http://psslpro.com alli utilizo una cookie para el idioma y el enlace es un select, bueno, la variable la paso por get, seria algo asi:

Código HTML:
Ver original
  1. <a href="tupagina.php?lang=es">Español</a>
  2. <a href="tupagina.php?lang=en">English</a>

y en el archivo que procesa la info, esta asi para detectar si es una sesion o una cookie:

Código PHP:
Ver original
  1. header('Cache-control: private'); // IE 6 FIX
  2.  
  3. if(isset($_GET['lang'])){
  4.     $lang = $_GET['lang'];
  5.  
  6.     //registra sesion
  7.     $_SESSION['lang'] = $lang;
  8.    
  9.     //define cookie
  10.     setcookie('lang', $lang, time() + (3600 * 24 * 30));
  11.    
  12.     //busca en variables cookie y session
  13. }else if(isset($_SESSION['lang'])){
  14.     $lang = $_SESSION['lang'];
  15. }else if(isset($_COOKIE['lang'])){
  16.     $lang = $_COOKIE['lang'];
  17. }else{
  18.     $lang = 'es';
  19. }
  20.  
  21. switch ($lang) {
  22.   case 'en':
  23.   $lang_file = 'lang/lang.en.php';
  24.   break;
  25.  
  26.   case 'es':
  27.   $lang_file = 'lang/lang.es.php';
  28.   break;
  29.  
  30.   case 'po':
  31.   $lang_file = 'lang/lang.po.php';
  32.   break;
  33.  
  34.   default:
  35.   $lang_file = 'lang/lang.es.php';
  36.  
  37. }
  38.  
  39. include_once $lang_file;

espero te sirva
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 10/11/2015, 05:29
Avatar de agusax  
Fecha de Ingreso: junio-2011
Ubicación: Puerto Real (Cádiz)
Mensajes: 74
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Variable SESSION por enlace

El problema es que quiero que desaparezca el ?lang=es de la dirección, con el _GET los valores se pasan por ahí
  #4 (permalink)  
Antiguo 10/11/2015, 05:40
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Variable SESSION por enlace

bueno en ese caso vas a tener que crearte un form y utilizar un select y con js realizar el submit cuando selecciones un idioma
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 10/11/2015, 06:11
Avatar de agusax  
Fecha de Ingreso: junio-2011
Ubicación: Puerto Real (Cádiz)
Mensajes: 74
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Variable SESSION por enlace

Lo he solucionado de otro modo:
Index.php
Código PHP:
Ver original
  1. <?php
  2.     // Para que no se muestre warning
  3.     error_reporting(E_ERROR | E_PARSE);
  4.  
  5.     session_start();
  6.  
  7.     $_SERVER['REQUEST_URI'];
  8.  
  9.     if($_SESSION['lang']=='en'){
  10.         include('lang/en_index.php');
  11.         include('lang/en_menu.php');
  12.     }else{
  13.         include('lang/es_index.php');
  14.         include('lang/es_menu.php');
  15.     }
  16. ?>

lang.php
Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     $idioma = $_GET['lang'];
  4.     $_SESSION['lang']=$idioma;
  5.     header('Location:' . getenv('HTTP_REFERER'));
  6. ?>

Y de este modo cuando hago click a una bandera de idioma de la siguiente manera ya me funciona correctamente:
Código HTML:
Ver original
  1. <li><a href="lang.php?lang=es"> <img src ="images/es.png" height="20px"></a></li>
  2. <li><a href="lang.php?lang=en"> <img src ="images/en.png" height="20px"></a></li>

Etiquetas: enlace, session, variable
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 03:55.