Comunidad de diseño web y desarrollo en internet online

[Problema] PHP se salta re-dirección por header

Citar            
MensajeEscrito el 06 Abr 2013 05:45 am
Buenas comunidad, he estado trabajando en un proyecto que me tiene realmente entusiasmado hasta el punto de que me he encontrado con un problema en un formulario de logeo, pues cuándo hay success, no redirecciona como debe y se queda pegado en la página sin hacer nada.

Ya he intentado con die, exit, session_destroy, otros métodos de redirección, etc... y nada, no tengo idea de que pueda estar causando este problema.

Esta es parte del código que utilizo:

Código PHP :

<?php
require_once 'core.php';
if (isset($_POST['login'])){
$username = $_POST['username'];
$escaped_username = mysql_real_escape_string($username);
$md5_password = md5($_POST['password']);
$queryN = mysql_query("SELECT * from admin where username = '".$username."' and password = '".$md5_password."'");
if(mysql_num_rows($queryN) == 1)
{
$resultN = mysql_fetch_assoc($queryN);
$_SESSION['username'] = $_POST['username'];
echo "<h4 class='alert_success'>Bienvenido " .$username. ", serás redireccionado automáticamente.</h4>";
session_destroy();
header("Location: ./index.php");  
}else{
echo "<h4 class='alert_error'>Nombre de usuario o contraseña incorrecta</h4>";
}
} else {
}
?>


Agradecería cualquier ayuda o corrección para este problema, muchas gracias.

Por NarkoticSn

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Abr 2013 05:57 am
Agrego, al revisar el error_log que me tira, me sale:

PHP Warning: Cannot modify header information - headers already sent by (output started at /home/soldadur/public_html/[RUTA DEL ARCHIVO]) in /home/soldadur/public_html/[RUTA DEL ARCHIVO] on line 70

Por NarkoticSn

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Abr 2013 12:27 pm
No puedes ejecutar header() si antes has hecho un echo.
Esto se debe a que header() envía una cabecera HTTP al cliente y las cabeceras deben ir antes del contenido de la página. Que es justamente lo que te está diciendo el mensaje de error. Que no se pueden reenviar las cabeceras porque ya se han enviado.

La solución es que quites los echo de este script y los mensajes de error los pongas en las páginas de destino que has puesto en Location.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 06 Abr 2013 01:58 pm
[quote="NarkoticSn"]

Código PHP :

<
header("Location: ./index.php");  

Ese ./ te debe estar jodiendo, pone la URL completa.

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 06 Abr 2013 10:43 pm

SinSemilla escribió:


NarkoticSn escribió:


Código PHP :

header("Location: ./index.php");  


Ese ./ te debe estar jodiendo, pone la URL completa.
Saludos!

En realidad está correcto tal como está, la causa del error es lo que ha dicho DriverOp
Muchas veces un espacio al final de un archivo incluido después de cerrar ?> puede causar este mismo problema, aunque no es el caso.

Por NeftaliYagua

18 de clabLevel



Genero:Masculino  

Activista, Desarrollador, Empresario

chrome
Citar            
MensajeEscrito el 06 Abr 2013 11:16 pm
[quote="NeftaliYagua"]

SinSemilla escribió:


En realidad está correcto tal como está, la causa del error es lo que ha dicho DriverOp
Muchas veces un espacio al final de un archivo incluido después de cerrar ?> puede causar este mismo problema, aunque no es el caso.


Tenes razón... no lei todos los comentarios, aunque sigo pensando que esta mal escrito el location...

De todas formas la solución sería algo así

Código PHP :

header("Refresh: 10; url=index.php");
echo 'Bienvenido usuario, seras redirigido en 10 segundos';


Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 07 Abr 2013 07:40 am

SinSemilla escribió:


De todas formas la solución sería algo así

Código PHP :

header("Refresh: 10; url=index.php");
echo 'Bienvenido usuario, seras redirigido en 10 segundos';



Disculpa que difiera de ti, eso puede confundir al usuario, el requiere una redirección básica, no una redirección temporizada.

Mostrarías un Echo con texto sin formato y sin estructura HTML, lo cuál no me parece que sea una buena práctica.

Por NeftaliYagua

18 de clabLevel



Genero:Masculino  

Activista, Desarrollador, Empresario

chrome
Citar            
MensajeEscrito el 07 Abr 2013 03:20 pm
Es temporizada porque este vago quiere mostrarle un msj al usuario antes de redirigirlo.

El texto no tiene formato porque es un ejemplo para que el lo cambie por lo se le cante el o$%&o... le estoy dando un ejemplo como ayuda, no le estoy haciendo el trabajo final.

Alguna otra objeción???

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.