Foros del Web » Programando para Internet » PHP »

Problema con Cookies para definir idioma

Estas en el tema de Problema con Cookies para definir idioma en el foro de PHP en Foros del Web. Estoy haciendo una práctica que consta de lo siguiente: -Index.php --> (Aquí uso un formulario de acceso (usuario y contraseña) + un select para escoger ...
  #1 (permalink)  
Antiguo 11/03/2014, 06:32
 
Fecha de Ingreso: marzo-2014
Mensajes: 6
Antigüedad: 10 años, 8 meses
Puntos: 0
Problema con Cookies para definir idioma

Estoy haciendo una práctica que consta de lo siguiente:

-Index.php --> (Aquí uso un formulario de acceso (usuario y contraseña) + un select para escoger entre dos idiomas. Catalán y Ingles.
-Logincheck.php --> Este fichero es el que coge el $_POST del usuario, contraseña y el idioma desde el select.
-Miscelania.php --> Contiene la función para determinar que idioma se ha seleccionado usando la cookie almacenada y para lanzar el idioma a las páginas:
intranet.php o error.php .
-luego tengo definidos los idiomas en constantes en dos archivos: cat.php y en.php.

Añado los códigos a ver si alguien me puede orientar un poco ya que estoy un poco perdido:

cat.hp (viceversa el en.php)
Código PHP:
<?php
/*
------------------
Language: cat
------------------
*/

define('LANG_PAGE_TITLE''Aquesta es la meva Intranet');
define'LANG_HEADER_TITLE' 'Benvinguts a La intranet!');
define('LANG_SITE_NAME''La Meva Intranet');
define('LANG_SLOGAN''Disfruteu de la visita');
define('LANG_HEADING''Capçalera');
define('ERROR_LOGIN''Usuario o contrasenya incorrecta')


?>
error.php:
Código PHP:
<?php
include_once 'en.php'
include_once 
'cat.php';
include_once 
'miscelania.php';

?> 

<html>
<head>
<?php echo LANG_HEADER_TITLE?>
<title><?php echo LANG_PAGE_TITLE?></title></head>
<body>

<h1><?php echo LANG_SLOGAN?></h1>

<br><br><br><br><br><br><br><br><br>

<?php echo ERROR_LOGIN?>

</body>

</html>

logincheck.php


Código PHP:
             
  <?php 
  
  session_start
(); 
  include_once 
'config.php'
  include_once 
'miscelania.php';
  if (!isset(
$_POST['submit'])) { 
      
header("Location: ./error.php"); 
      exit(); 
      } 
      
      if(isset(
$_POST['idioma'])) {
          
$idioma = ($_POST['idioma']);
          
setcookie('idioma'$idioma time() + 3600 "/" );
      
                   
      }  
      
 
      
      
$pass md5 ($_POST['contrasena']); 
      
      
      switch(
$_POST["usuari"]) { 
      
          case 
USER1
              if (
strcmp($pass PASSWORD1) == 0) {
           
              
$_SESSION['submit']=$_POST['submit']; 
              
$_SESSION['id_usuari']=$_POST['usuari'];
              
$_SESSION['clau_access']=$_POST['contrasena']; 
              
header("Location: ./intranet.php");
             exit; 
         } 
            else {
                
header("Location: ./error.php?ERROR_LOGIN");
            }
         break; 
        
        
         case 
USER2
             if (
strcmp($pass PASSWORD2) == 0) { 
                 
$_SESSION['submit']=$_POST['submit']; 
                 
$_SESSION['id_usuari']=$_POST['usuari']; 
                 
$_SESSION['clau_access']=$_POST['contrasena']; 
                 
header("Location: ./intranet.php"); 
                 exit; 
             } 
             else {
                
header("Location: ./error.php?ERROR_LOGIN");
            }
                 break; 
             
             
             
             } 
  
             
             
 
?>

miscelania.php

Código PHP:
<?php
session_start
();
include_once(
'en.php');
include_once(
'cat.php');
include_once(
'index.php');


if(isset(
$_POST['idioma'])){
    
$lang $_POST['idioma'];

    
    
$_SESSION['idioma'] = $lang;
    
   
setcookie('lang'$lang time() + 3600 "/" );
    
    
    
}

    
else if(isset(
$_SESSION['idioma'])){
    
$lang $_SESSION['idioma'];
}

else if(isset(
$_COOKIE['lang'])){
    
$lang $_COOKIE['lang'];
}else{
    
$lang 'en';
}

switch (
$lang) {
  case 
'en':
  
$lang_file '../lan/en.php';
  break;
 
  

  case 
'cat':
  
$lang_file '../lan/cat.php';
  break;

  default:
  
$lang_file '../lan/cat.php';

}

include_once 
'../lan'.$lang_file

?>



[/PHP]

El logincheck funciona correctamente y me redirecciona a intranet o error en caso que ponga mal las claves pero cuando me lleva por ejemplo a error solo me aparece el nombre de las constantes sin su valor, no me traduce nada.

En el formulario no tengo nada de php , es un simple formulario html con select option.

¿Alguien me puede guiar un poco?


Gracias!
  #2 (permalink)  
Antiguo 11/03/2014, 08:10
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 13 años, 5 meses
Puntos: 17
Respuesta: Problema con Cookies para definir idioma

Cita:
El logincheck funciona correctamente y me redirecciona a intranet o error en caso que ponga mal las claves pero cuando me lleva por ejemplo a error solo me aparece el nombre de las constantes sin su valor, no me traduce nada.
Si te fijas:

Código PHP:
Ver original
  1. header("Location: ./error.php?ERROR_LOGIN");

No tiene ninguna variable get te falta añadir la variable para en error rescatando el valor de la variable puedas realizar lo que quieres; ejemplo:

Código PHP:
Ver original
  1. header("Location: ./error.php?log=ERROR_LOGIN");
  2. echo $_GET["log"];

Y aparte no creo que rescate el valor de la constante, por el echo de ser una constante pero en eso alomejor me equivoco.

Un saludo.
__________________
Twitter: @ed33x
  #3 (permalink)  
Antiguo 11/03/2014, 09:28
 
Fecha de Ingreso: marzo-2014
Mensajes: 6
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con Cookies para definir idioma

Entonces como puedo añadir la constante ERROR_LOGIN en el header que redirecciona a error para que muestra el contenido de la constante?

y además reemplaze el contenido original de error.php.
  #4 (permalink)  
Antiguo 11/03/2014, 09:39
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 13 años, 5 meses
Puntos: 17
Respuesta: Problema con Cookies para definir idioma

Por ejemplo;

Código PHP:
Ver original
  1. <?php
  2. define('ERROR_LOGIN', 'Usuario o contrasenya incorrecta');
  3. $error_login = constant('ERROR_LOGIN');
  4. if($_GET["v"] == "x"){
  5. header("Location: header_constantes.php?x=$error_login");
  6. }
  7.  ?>
__________________
Twitter: @ed33x
  #5 (permalink)  
Antiguo 11/03/2014, 11:05
 
Fecha de Ingreso: marzo-2014
Mensajes: 6
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con Cookies para definir idioma

Cita:
Iniciado por LiveTechno Ver Mensaje
Por ejemplo;

Código PHP:
Ver original
  1. <?php
  2. define('ERROR_LOGIN', 'Usuario o contrasenya incorrecta');
  3. $error_login = constant('ERROR_LOGIN');
  4. if($_GET["v"] == "x"){
  5. header("Location: header_constantes.php?x=$error_login");
  6. }
  7.  ?>
LiveTechno, mis disculpas por duplicar tema, tienes razón.

El código lo entiendo menos en el apartado

if($_GET["v"] == "x"){

yo estoy utilizando el método POST en el formulario.

¿Que representa que es la v y la x?

Perdon por mi ignorancia pero es que soy muy novato en PHP.


y muchísimas gracias por tu ayuda.
  #6 (permalink)  
Antiguo 11/03/2014, 13:26
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 13 años, 5 meses
Puntos: 17
Respuesta: Problema con Cookies para definir idioma

¡Ahh! No te preocupes por eso lo he puesto para que no se cree un bucle pero olvidalo se quedaría a si:

Código PHP:
Ver original
  1. <?php
  2. define('ERROR_LOGIN', 'Usuario o contrasenya incorrecta');
  3. $error_login = constant('ERROR_LOGIN');
  4. header("Location: header_constantes.php?variable=$error_login");
  5. ?>

A si seria para que te hagas una idea.
__________________
Twitter: @ed33x

Etiquetas: cookies, definir, formulario, html, idioma, select
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:39.