Foros del Web » Programando para Internet » PHP »

Redireccion si no estas logueado

Estas en el tema de Redireccion si no estas logueado en el foro de PHP en Foros del Web. Hola amigos/as, a ver si me pueden hechar una mano. Tengo un codigo en un "archivo A" que me permite loguearme correctamente y me redirecciona ...
  #1 (permalink)  
Antiguo 03/07/2014, 00:57
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Redireccion si no estas logueado

Hola amigos/as, a ver si me pueden hechar una mano.

Tengo un codigo en un "archivo A" que me permite loguearme correctamente y me redirecciona a un archivo "B".

Esto funciona perfetamente. Pero cuando en el archivo "B" le meto un codigo php para que no se pueda acceder a el escribiendo su url directamente en el navegador saltandose el logueo previo.


Pues hace una cosa rara y es que si le coloco este codigo como digo en el archivo "B".

Entonces el archivo "A" (que es donde se tiene que loguear uno), ya no me manda al archivo "B" sino que redirecciona así mismo, osea al archivo "A" y no se porque hace esto.



codigo de archivo "A" llamado "indexe.php" que es donde se loguea uno primero:

Código PHP:
Ver original
  1.  
  2.     if( isset($_GET['error_sesion']) )
  3.     {
  4.         switch ($_GET['error_sesion'])
  5.         {
  6.         case 1:
  7.             echo "<font color='red'><b>Contrase&ntilde;a introducida incorrecta</b></font>
  8.             <p><a href='../lib/login.php?esesion=1'>Int&eacute;ntelo de nuevo</a></p>";
  9.             break;
  10.         case 2:
  11.             echo "<font color='red'><b>Correo electr&oacute;nico introducido incorrecto</b></font>
  12.             <p><a href='../lib/login.php?esesion=1'>Int&eacute;ntelo de nuevo</a></p>";
  13.             break;
  14.         case 3:
  15.             echo "<font color='red'><b>Rellene los campos correctamente</b></font>
  16.             <p><a href='../lib/login.php?esesion=1'>Int&eacute;ntelo de nuevo</a></p>";
  17.             break;
  18.         case 4:
  19.             echo "<font color='red'><b>Error al conectarse a la base de datos</b></font>
  20.             <p><a href='../lib/login.php?esesion=1'>Int&eacute;ntelo de nuevo</a></p>";
  21.             break;
  22.         case 5:
  23.             echo "<font color='red'><b>Error al seleccionar la base de datos</b></font>
  24.             <p><a href='../lib/login.php?esesion=1'>Int&eacute;ntelo de nuevo</a></p>";
  25.             break; 
  26.         }
  27.     }
  28.     else
  29.     {
  30.         if (isset($_SESSION['username']))
  31.         {
  32.  
  33.             echo '<br/>';
  34.            
  35.             echo 'Hola del indexe, '.'<b>'.$_SESSION['username'].'</b>.';
  36.  
  37.             echo '<div class="btn_cerrar_sesion">
  38.            
  39.                     <a href="../lib/login.php?esesion=1"><img src="../imgss/btn_cerrar_sesion.png" width="120" height="27" alt="boton_cerrar_sesion" /></a>
  40.            
  41.             </div>';
  42.  
  43.         }
  44.         else
  45.         {
  46.             echo '<form method="POST" id="form-login" action="../lib/login.php">
  47.    
  48.                           <div class="titular_email">Correo electr&oacute;nico</div>
  49.                          
  50.                           <input type="text" name="email" id="input_email" tabindex="1" />
  51.                          
  52.                          
  53.                                                                              
  54.                           <div class="titular_password">Contrase&ntilde;a</div>
  55.    
  56.                           <input type="password" name="password" id="input_password" tabindex="2" />                                                   
  57.    
  58.                          
  59.    
  60.                           <!--<div class="enlace_olvide_clave"><a href="">La olvidé</a></div>-->
  61.    
  62.                           <div class="btn_login"><input type=image src="../imgs/btn_login.png" id="btn_inicio" class="buttons" value="Entrar"></input></div>
  63.                                
  64.                   </form>';                            
  65.         }
  66.     }


codigo de archivo "B" llamado "indexe_log.php" que es al que deberia redireccionar una vez logueado:

Código PHP:
Ver original
  1. <?php if(!$_SESSION['email'] == "[email protected]") {       
  2.       header('location: indexe.php');
  3.       } ?>
  4.  
  5.  
  6. <?php echo 'Hola mundo !!!!!'; ?>


Gracias de antemano.
  #2 (permalink)  
Antiguo 03/07/2014, 03:18
 
Fecha de Ingreso: abril-2013
Ubicación: Barcelona
Mensajes: 78
Antigüedad: 11 años
Puntos: 2
Respuesta: Redireccion si no estas logueado

Podrías dar mas información sobre el error y lo que ya as probado.
¿Que contiene $_SESSION['email'] en el momento del if ?
¿Antes del if hay algo?
Para que header funcione tiene que ser lo primero que se mande.

($_SESSION['email'] != "[email protected]")
  #3 (permalink)  
Antiguo 03/07/2014, 05:27
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: Redireccion si no estas logueado

Hola, pues veras

el en el momento del if($_SESSION['email'], el email tiene el valor de: [email protected]

que se metio previamente en el input para loguearse.

y como digo funciona perfectamente, se loguea bien. y manda a indexe_log perfectamente .

ahora va perfectamente si en el indexe_log no pongo el codigo:

Código PHP:
Ver original
  1. if($_SESSION['email'] != "[email protected]") {      
  2.       header('location: indexe.php');
  3.       }

(como ves antes del if no hay nada)

pero claro este codigo que hace que cuando me logueo en vez de redireccionarme de indexe.php a indexe_log.php me redirecciona de indexe.php al mismo indexe.php

y como digo si dejo el codigo de la discordia en indexe_log si intento entrar en indexe_log.php sin loguearme funciona bien y no me deja entrar redirecionandome a indexe.php eso si lo hace bien.
  #4 (permalink)  
Antiguo 03/07/2014, 05:34
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años
Puntos: 4
Respuesta: Redireccion si no estas logueado

falta en el arcihvo "B"

Código PHP:
Ver original 
  #5 (permalink)  
Antiguo 03/07/2014, 05:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: Redireccion si no estas logueado

Lo he puesto incluso poniendo :

Código PHP:
Ver original 

y sigue igual
  #6 (permalink)  
Antiguo 03/07/2014, 09:55
 
Fecha de Ingreso: abril-2013
Ubicación: Barcelona
Mensajes: 78
Antigüedad: 11 años
Puntos: 2
Respuesta: Redireccion si no estas logueado

No se si lo he entendido bien pero creo que lo que te pasa es que no se cumple la condición y te hace el header mandandote otra vez al archivo A.

¿Tienes codificado el email reemplazando algunos caracteres para guardarlos en la base de datos?
¿As probado a reemplazar el header por un echo $_SESSION['email'] para comprobar si te entra en el if y por que?
Código PHP:
<?php 
session_start
();
if(
$_SESSION['email'] != "[email protected]") {        
      
var_dump($_SESSION);
?>
  #7 (permalink)  
Antiguo 03/07/2014, 11:28
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: Redireccion si no estas logueado

Acabo de poner el codigo que me has dado y me dice esto:

Código PHP:
Ver original
  1. array(0) { }


Mira el codigo que gestiona el usuario y contraseña es este:

Código PHP:
Ver original
  1.  
  2. //datos para establecer la conexion con la base de mysql.
  3. include "conex.php";
  4.  
  5. if ($_GET['id'] != "")
  6.  
  7. {
  8.   $link=Conectarse();
  9.   $id_recibido = $_GET["id"];
  10.  
  11.  
  12.   $result = mysql_query("select * from users where id = '$id_recibido'");
  13.  
  14.     if($row = mysql_fetch_array($result))
  15.     {
  16.  
  17.         $_SESSION["username"] = $row["nombre"];
  18.         /*$_SESSION["elavatar"] = $row["avatar"];*/
  19.  
  20.                
  21.         //die (header('Location: ../indexe_log.php?id='.$id_recibido));
  22.        
  23.         die (header('Location: document.location = "../index_log.php"?id='.$id));
  24.                          
  25.     }      
  26. }
  27.  
  28. else if( isset($_GET['esesion']) )
  29.  
  30.     {
  31.         // Borramos toda la sesion
  32.         session_unset();
  33.         session_destroy();
  34.         die (header('Location: ../indexe.php'));
  35.     }
  36.    
  37. else
  38. {  
  39.     if (trim($_POST["email"]) != "" && trim($_POST["password"]) != "")
  40.     {
  41.       $link=Conectarse();
  42.       $email = strtolower(htmlentities($_POST["email"], ENT_QUOTES));  
  43.       $password = $_POST["password"];
  44.  
  45.      
  46.       $result = mysql_query("select * from users where email = '$email' and password = '$password'");
  47.      
  48.       if($row = mysql_fetch_array($result))
  49.       {
  50.           if($row["password"] == $password)
  51.           {
  52.               $_SESSION["username"] = $row["nombre"];
  53.               /*$_SESSION["elavatar"] = $row["avatar"];*/
  54.  
  55.                          
  56.               $id = $row["id"];
  57.               //echo "Has sido logueado correctamente ".$_SESSION["k_username"]." <p>";
  58.               //echo "<a href=\"index_log.php\"> Inicio </a>";
  59.  
  60.  
  61.      
  62.              die (header('Location: /../indexe_log.php?id='.$id));
  63.  
  64.  
  65.  
  66.  
  67.      
  68.           }else{
  69.      
  70.             //Password incorrecto
  71.               $error_sesion=1;
  72.               $direccion='/indexe.php?error_sesion='.$error_sesion;
  73.               die (header("Location: $direccion"));
  74.           }
  75.          
  76.          
  77.           }else{
  78.                //Email incorrecto
  79.                 $error_sesion=2;
  80.                 $direccion='/indexe.php?error_sesion='.$error_sesion;
  81.                 die (header("Location: $direccion"));
  82.           }
  83.      
  84.      
  85.           }else{
  86.             //Debe especificar un email y password
  87.               $error_sesion=3;
  88.               $direccion='/indexe.php?error_sesion='.$error_sesion;
  89.               die (header("Location: $direccion"));
  90.           }
  91.        
  92.    
  93.         mysql_free_result($result);
  94.              
  95.         mysql_close(); 
  96.  
  97. }


solo me falta esto para que funcione
  #8 (permalink)  
Antiguo 03/07/2014, 13:24
 
Fecha de Ingreso: abril-2013
Ubicación: Barcelona
Mensajes: 78
Antigüedad: 11 años
Puntos: 2
Respuesta: Redireccion si no estas logueado

Por si no sabes que hace el var_dump(), te dice todo lo que hay dentro de una variable.
En tu caso en la $_SESSION no tienes nada.
Por otra parte en ninguna parte de este ultimo archivo veo que especifiques el $_SESSION["email"]
Te recomiendo que empieces a usar el mysqli si no lo tienes muy avanzado el proyecto ya que mysql se a quedado un poco obsoleto.
¿El id en la base de datos lo tienes como TEXT o como INT ?
Si lo tienes como INT (que seria lo normal si es un número) no se le puede poner las comillas. id = '$id_recibido'

Edito para decirte mas cosas.
Al email no le pasaría el htmlentities ya que no debería de tener comillas ni nada por el estilo, mas bien lo que tienes que hacer es esto.
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
echo "Email no valido";
}
el if($row["password"] == $password)
No hace nada ya que antes en el sql le as dicho que tiene que tener la misma contraseña.

Si quieres hablamos por privado y me comentas que necesitas para ayudarte mejor.

Última edición por sekafry; 03/07/2014 a las 13:57

Etiquetas: logueado, redireccion
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 15:51.