Foros del Web » Programando para Internet » PHP »

No redirecciona

Estas en el tema de No redirecciona en el foro de PHP en Foros del Web. Hola, tengo el siguiente código en un archivo llamado comprobar.php, y teóricamente (ya que en modo local si funciona), después de iniciar la sesión debería ...
  #1 (permalink)  
Antiguo 14/07/2013, 13:05
 
Fecha de Ingreso: julio-2013
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
No redirecciona

Hola, tengo el siguiente código en un archivo llamado comprobar.php, y teóricamente (ya que en modo local si funciona), después de iniciar la sesión debería de redireccionar a acceso.php, pero no lo hace.

Código PHP:
<?php
    session_start
(); 
    include(
'acceso_db.php'); 
    if(isset(
$_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario 
        // comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos 
        
if(empty($_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) { 
            echo 
"Usuario o Password no ha sido ingresado. <a href='javascript:history.back

();'>Reintentar</a>"

        }else { 
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos 
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']); 
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']); 
            
$usuario_clave md5($usuario_clave); 
            
// comprobamos que los datos ingresados en el formulario coincidan con los de la BD 
            
$sql mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM usuarios WHERE 

usuario_nombre='"
.$usuario_nombre."' AND usuario_clave='".$usuario_clave."'"); 
            if(
$row mysql_fetch_array($sql)) { 
                
$_SESSION['usuario_id'] = $row['usuario_id']; // creamos la sesion "usuario_id" y le 

asignamos como valor el campo usuario_id 
                $_SESSION
['usuario_nombre'] = $row["usuario_nombre"]; // creamos la sesion 

"usuario_nombre" y le asignamos como valor el campo usuario_nombre 
                header
("Location: acceso.php"); 
            }else { 
?>
                Usuario o Password incorrecto. <a href="acceso.php">Reintentar</a> 
<?php
            

        } 
    }else { 
        
header("Location: acceso.php"); 
    } 
?>
Checando el log de error me pone el siguiente pero no logro dar cual sea el problema.

Código PHP:
[14-Jul-2013 14:39:24 America/New_YorkPHP Warning:  Cannot modify header information headers already sent by (output started at /home/metropol/public_html/prueba/acceso_db.php:10in /home/metropol/public_html/prueba/comprobar.php on line 18 
  #2 (permalink)  
Antiguo 14/07/2013, 13:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: No redirecciona

Para poder redireccionar con header() se requiere que no hayas enviado nada al navegador, ni un espacio, ni salto de línea, mucho menos contenido HTML.

El mensaje es claro y dice que ya iniciaste una salida en prueba/acceso_db.php en la línea 10.

Porqué funciona en local y no en el servidor?
Porque tal vez tengas configurada alguna opción en local con la que PHP "retiene" la salida y la envía al navegador hasta que se acumula determinada cantidad de bytes. De momento no recuerdo esa directiva ni la capacidad configurada por default.

De hecho, es mejor programar con un orden lógico, evitando enviar salida hasta que sea necesario y, de paso, nos olvidamos de este tipo de problemas.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 14/07/2013, 13:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No redirecciona

El clásico error de las cabeceras.

Por favor consulta lo siguiente: http://www.forosdelweb.com/wiki/PHP:...n_line_4%22%3F
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 14/07/2013, 13:58
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 9 meses
Puntos: 4
Respuesta: No redirecciona

Si, los header no cargan... usa:
Código Javascript:
Ver original
  1. <script type='text/javascript'>window.location.href = 'pagina_a_redireccionar'; </script>
__________________
Keep learning, someday the knowledge will be your future...
  #5 (permalink)  
Antiguo 14/07/2013, 14: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: No redirecciona

Cita:
Iniciado por Loop29 Ver Mensaje
Si, los header no cargan... usa:
Código Javascript:
Ver original
  1. <script type='text/javascript'>window.location.href = 'pagina_a_redireccionar'; </script>
Por favor, si tus solución no es la correcta mejor no opines.

Es pésima idea solucionar esto con Javascript porque además pone en evidencia tu poca experiencia con PHP, ¿me imagino que si sabrás hacerlo correctamente con header() o siempre andas parchando tu código con Javascript?

Aleja tus malas practicas de tus comentarios, gracias.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 15/07/2013, 13:27
 
Fecha de Ingreso: julio-2013
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: No redirecciona

Hola nuevamente gracias a todos por sus respuestas como soy nueva en el php, realmente hay muchos aspectos que todavia desconosco y realmente sigo sin poder encontrar el error que cometi (ya lei los textos de referencia que me mencionan), este es mi codigo del archivo acceso.php que es el que supuestamente me esta dando el problema, agradeceria si me pudieran decir en donde esta el error, gracias.

Código PHP:
<?php
    session_start
(); 
    include(
'acceso_db.php'); 
    if(empty(
$_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías         
?>
        <form action="comprobar.php" method="post"> 
            <label>Usuario:</label><br /> 
            <input type="text" name="usuario_nombre" /><br /> 
            <label>Password:</label><br /> 
            <input type="password" name="usuario_clave" /><br /> 
            <input type="submit" name="enviar" value="Ingresar" /> 
        </form>                     
<?php
    
}else { 
?> 
        <p>Hola <strong><?=$_SESSION['usuario_nombre']?></strong> | <a href="perfil.php?id=<?=$_SESSION['usuario_nombre']?>" target="_blank">Ver Perfil</a> | <a href="actualizar.php?id=<?=$_SESSION['usuario_nombre']?>" target="_blank">Actualizar Datos</a> | <a href="subir.php" target="_blank">Subir Foto</a> | <a href="salir.php">Salir</a></p> 
<?php 
    

?>
  #7 (permalink)  
Antiguo 15/07/2013, 13:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: No redirecciona

Si te fijas ve el error claramente te dice que el culpable es acceso_db.php en la línea 10...

Etiquetas: formulario, html, mysql, select, 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 19:03.