Foros del Web » Programando para Internet » PHP »

Problema con header

Estas en el tema de Problema con header en el foro de PHP en Foros del Web. Saludos, No entiendo porque el header que esta en rojo no me lo admite y nunca llega a abrirse la pagina de error, ese mismo ...
  #1 (permalink)  
Antiguo 27/04/2006, 09:17
 
Fecha de Ingreso: enero-2004
Mensajes: 22
Antigüedad: 13 años, 10 meses
Puntos: 1
Problema con header

Saludos,

No entiendo porque el header que esta en rojo no me lo admite y nunca llega a abrirse la pagina de error, ese mismo header("Location: error.php?mensaje=Acceso incorrecto " ); lo uso para comprobar la sesion y se redirige sin problemas a error.php

$consulta = "SELECT nombre, password FROM usuarios WHERE username='$usuario' AND password='$contraseña'";
$busca = mysql_query($consulta);

echo(mysql_num_rows($busca));

if ( mysql_num_rows($busca) == 1 ) {

$total = mysql_fetch_array ($busca);

header("Location: foro.php");

exit();
}

header("Location: error.php?mensaje=Usuario o password incorrecto " );
exit();



¿Por qué me falla aquí?

Gracias
  #2 (permalink)  
Antiguo 27/04/2006, 09:25
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Es que la con la línea:

echo(mysql_num_rows($busca));

estas enviando código html, por lo que header() no va a funcionar porque los header ya han sido enviados. Deberias evitar cualquier salidad de html antes de utilizar header().
Un consejo: para pasar parametros por GET como los que estas pasando (los que tienen caracteres no alfanumericos, como el espacio en blanco) deberias utilizar urlencode():

Código PHP:
<?
...
header("Location: error.php?mensaje=".urlencode("Usuario o password incorrecto"));
?>
Saludos.
  #3 (permalink)  
Antiguo 27/04/2006, 09:26
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
no se tanto aun pero yo haria :

$mensaje = "Usuario o password incorrecto ";
header("Location: error.php?mensaje=$mensaje" );
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #4 (permalink)  
Antiguo 27/04/2006, 09:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En principio tienes un error en la forma de uso de la propagación de datos por el URL. Si tu dato contiene "espacios" o caracteres acentuados, ñ .. etc DEBES codificar ese URL:

Código PHP:
<?
header
("Location: error.php?mensaje=".urlencode("Usuario o password incorrecto"));
Otro problema es usar:
echo(mysql_num_rows($busca));

y despues una llamada a un header() (sea del tipo que sea) .. NO puedes emitir ningún tipo de "salida" al navegador (Cliente) antes de enviar una cabecera. Por eso mismo usas ya tu redireccionamiento y le envias una "frase" para que la página a la que redireccionas muestre ese mensaje de error.

Otro detalle (al margen pero para tener en cuenta) .. ¿ Por qué no usas referencias al mensaje de error? ..sería mucho mejor administrable tu sistema y menos problemas para pasar datos por el URL. Me refiero a:

header ("Location: error.php?msg=1");

y en error.php proceso esa variable y la uso como indice de un array para mostrar mis frases de error.

Código PHP:
<?
if (!emtpy($_GET['msg']){
  
$msg=$_GET['msg'];

  
$mensajes[1]="Blablabal";  
  
$mensajes[2]="Blablabal bla blablalabal";

  echo 
$mensajes[$msg];
}
Pero si muestras el mensaje de error textual que obtienes sería lo ideal para ver que sucede. El error dice el problema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 27/04/2006, 09:34
 
Fecha de Ingreso: enero-2004
Mensajes: 22
Antigüedad: 13 años, 10 meses
Puntos: 1
---------------------------------------

Última edición por alberzap; 20/01/2011 a las 02:47
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 08:58.