Foros del Web » Programando para Internet » PHP »

error en location

Estas en el tema de error en location en el foro de PHP en Foros del Web. Hola , muy buenas , he estado practicando con un tutorial para loggeo de una cuenta ya registrada y el problema es que no se ...
  #1 (permalink)  
Antiguo 20/08/2012, 18:26
 
Fecha de Ingreso: agosto-2012
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
error en location

Hola , muy buenas , he estado practicando con un tutorial para loggeo de una cuenta ya registrada y el problema es que no se ejecuta una sentencia de header('location : index.php') he probado de todo durante ya dos días y nada ,hice un echo antes del header , otro justo despues , los dos se ejecutan pero el problema sigue , y luego hay otro problema y es que al volver manualmente a la pagina de inicio para ver si me he loggeado(si me loggeo deberia desaparecer el enlace de login y aparece otro enlace de salir) pero nada ... y eso que los echos de $_SESSION no dan error y se almacenan correctamente....
Pongo todo el código pero lo único en lo que tengo problema es en el último else
//la contrasena está bien , lo demas me funciona bien...
Código PHP:
<?php
include("funciones.php");
if(!isset(
$_POST['email']) || !isset($_POST['contrasena'])){
    
//compruebo si recibo los datos
    
header("location: loggeo.php?error=1");
    }elseif(
$_POST['email'] == "" || $_POST['contrasena'] == ""){
        
//o si están vacíos
            
header('location: loggeo.php?error=2');
            }else{
                
// en el resto de los casos me conecto a la base de datos y selecciono dichos elementos
                
$sql "select * from usuario where email='".$_POST['email']."'";
                
$conexion conectar_mysql();
                if(!
$consulta mysql_query($sql)){
                    
//si no conecto con al base de datos , doy error 3 interno
                    
header('location: loggeo.php?error=3');
                    }else{
                        
//si conecto con la base de datos , verifico que hay sólo uno seleccioando , sino , doy error.
                        
if(mysql_num_rows($consulta) != 1){
                            
header('location : loggeo.php?error=4');
                            }else{
                                    
//tengo un usuario con ese email
                                    
$usuariomysql_fetch_array($consulta);
                                    if(
$usuario['contrasena'] != md5($_POST['contrasena'])){
                                        echo 
$usuario['contrasena']."echo ".$_POST['contrasena']."echo".$_POST['email'];
                                        }else{
                                            
//la contraseña está bien
                                            
echo "bieeeeeeeeeeeeeeeeeeeeeeeen!";
                                            
session_start()or die('esto va mal en sesion');
                                            
$_SESSION['email_usuario'] = $_POST['email'];
                                            
$_SESSION['nombre_usuario'] = $usuario['nombre'];
                                            
$_SESSION['apellidos_usuario'] = $usuario['apellidos'];
                                            echo 
"hasta aqui bien";
                                            echo 
$_SESSION['email_usuario']."<br/>";
                                            echo 
$_SESSION['nombre_usuario']."<br/>";
                                            echo 
$_SESSION['apellidos_usuario'];
                                            echo 
"antes de location<br/>";
                                            
header('location : index.php');
                                            echo 
"despues de location";                
                                            }
                                }
                            }
                }

?>
  #2 (permalink)  
Antiguo 20/08/2012, 18:41
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: error en location

Después del Header debe ir un exit; para que el código no se siga ejecutando, es muy común usar una función como la siguiente para evitar reescribir el mismo código.

Saludos!


Código PHP:
function redirect($url)
{
    
header('Location: ' $url);
    exit;

  #3 (permalink)  
Antiguo 21/08/2012, 03:48
 
Fecha de Ingreso: agosto-2012
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: error en location

No me funciona como respuesta , ademas , he probado tu funcion tal cual y ahora ni redirije las otras, y mucho menos aquella en que tengo problemas
gracias por la respuesta de todas formas

otra ayudita porfavor?


PD:Para quien quiera ayudar y no comprenda los 'echos' innecesrios , esos solo los hice para ver si se recibian bien las variables , para detectar errores ...
  #4 (permalink)  
Antiguo 21/08/2012, 07:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: error en location

Cita:
Iniciado por kheijum Ver Mensaje
No me funciona como respuesta , ademas , he probado tu funcion tal cual y ahora ni redirije las otras, y mucho menos aquella en que tengo problemas
gracias por la respuesta de todas formas

otra ayudita porfavor?


PD:Para quien quiera ayudar y no comprenda los 'echos' innecesrios , esos solo los hice para ver si se recibian bien las variables , para detectar errores ...
Esa manera que expresa se siente mal, parece que te burlas de los usuarios que te hacen tales observaciones.

En verdad, vamos a pensar que si entiendes lo que te dicen, ¿tienes activado el reporte de errores?

Si quitas los 'echos' ¿no te redirecciona pero tampoco te sale error?

Por favor, te apuesto a que si buscas el mismo problema en el foro encontrarás muchas respuestas, aquí el punto es que tu crees estar bien pero si algo anda mal, ¿nosotros tenemos la culpa de no entender lo que nos dices?

Da mas información que tu 'PD' y verás.

1. Sólo puedes hacer una redirección a la vez
2. Tienes que evitar toda salida antes, no solo los 'echo'
3. Tienes que evitar cualquier otra redirección o se cancelaría la primera
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: location, mysql, sql, usuarios
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 23:39.