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. Tengo una pagina de registro, donde el usuario introduce su nombre, pass, email y demás. Entonces tengo el siguiente trozo de código: Código: if($row= mysql_fetch_array($sql)) ...
  #1 (permalink)  
Antiguo 06/05/2010, 11:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 52
Antigüedad: 13 años, 11 meses
Puntos: 0
Problema con header

Tengo una pagina de registro, donde el usuario introduce su nombre, pass, email y demás.

Entonces tengo el siguiente trozo de código:

Código:
if($row= mysql_fetch_array($sql))
		{
			header("refresh:5; registro.php");
			echo "Error, el usuario ya existe";
		}
		else
		{
			$sql= mysql_query("INSERT INTO usuario (usuario, pass, email) VALUES ('$usuario', '$pass', '$email')") OR DIE ("Error al registrar los datos");
		};
Lo que hace es buscar en la BBDD si coincide el nombre de usuario con alguno en la BBDD, si lo hace devolvería "Error, el usuario ya existe" y pasados 5 segundos debería redirigirte a la misma página de registro.

El caso es que me da el siguiente error:

Warning: Cannot modify header information - headers already sent by...

He estado buscando y he encontrado soluciones que no me han servido, como quitar los espacios antes y después de las etiquetas <?php y ?>, poner esto al principio ob_start(); y esto otro al final del php ob_end_flush(); y nada, no sé que mas hacer.


Os dejo el código completo por si queréis echarle un vistazo (He resaltado en negrita la parte de php):

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<link rel="stylesheet" type="text/css" href="./estilos/alineaciones.css" />
<link rel="stylesheet" type="text/css" href="./estilos/cabecera.css" />
<link rel="stylesheet" type="text/css" href="./estilos/cuerpo.css" />

<style type="text/css">
form	{
	font-weight:bold;
}
</style>
</head>

<body>
<?php
include("datosconexion.php");
$conexion=mysql_connect($dbhost, $dbuser, $dbpass) OR DIE ("Conexion fallida con la base de datos");
$bd=mysql_select_db($db, $conexion) OR DIE ("Base de datos incorrecta");

if(isset($_POST['registro']))
{
	$usuario= $_POST['usuario'];
	$pass= $_POST['pass'];
	$pass_= $_POST['pass_'];
	$email= $_POST['email'];
	$email_= $_POST['email_'];
	
	if(isset($usuario))
	{
		$sql= mysql_query("SELECT usuario FROM usuario WHERE usuario = '".$usuario."'");
		
		if($row= mysql_fetch_array($sql))
		{
			header("refresh:5; index.html");
			echo "Error, el usuario ya existe";
		}
		else
		{
			$sql= mysql_query("INSERT INTO usuario (usuario, pass, email) VALUES ('$usuario', '$pass', '$email')") OR DIE ("Error al registrar los datos");
		};
	};
}
else
{
?>
<table class="tblcabecera">
<tr>
	<td id="tdcbsup">
<tr>
	<td id="tdcb1">
	<td id="tdcbimg"><img src="Img/logo.PNG" alt="Manuales Online" width="150" height="120"/>
	<td id="tdcb2"><a href="">Entrar</a> <a href="registro.php">Registro</a>
	<td id="tdcb3"> Barra de busqueda
</table>

<br /><br /><br />


<table border="1">
<tr>
	<td>
		¿Ya estas registrado? Accede a nuestro contenido poniendo tu usuario y contraseña.
		<form method="post" action="registro.php">
			<table>
			<tr>
				<td class="right">Nombre de usuario:
				<td><input type="text" name="usuario_l" maxlength="18"><br>
			<tr>
				<td class="right">Contraseña:
				<td><input type="password" name="pass_l" maxlength="24"><br>
			</table>
	<td>
		¿Es tu primera vez? ¡Registrate y accede a todos los contenidos de la Web!
			<table>
			<tr>
				<td class="right">Nombre de usuario:
				<td><input type="text" name="usuario" maxlength="18"><br>
			<tr>
				<td class="right">Contraseña:
				<td><input type="password" name="pass" maxlength="24"><br>
			<tr>
				<td class="right">Confirmar contraseña:
				<td><input type="password" name="pass_" maxlength="24"><br>
			<tr>
				<td class="right">E-mail:
				<td><input type="text" name="email" maxlength="50"><br>
			<tr>
				<td class="right">Confirmar e-mail:
				<td><input type="text" name="email_" maxlength="50"><br>
			</table>
	
<tr>
	<td colspan="2">
			<input type="submit" value="Enviar" name="registro">
		</form>
		
</table>
<?php
};
?>
</body>
</html>
Muchas gracias.



EDITO: Encontré el error, resulta que el archivo que incluía, datosconexion.php, tenía HTML y ahí estaba el error, así que lo he quitado y aparte he creado otro php llamado validación y desde ahí redirigiría a registro.php en caso de que ya existiera el usuario y así sucesivamente jeje.

Última edición por Weahl; 06/05/2010 a las 12:04
  #2 (permalink)  
Antiguo 06/05/2010, 13:03
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Problema con header

No puedes usar header después de haber escrito HTML, y el ob_start es lo mismo, tienes que ponerlo antes de cualquier salida HTML para que haga efecto.

Un saludo
  #3 (permalink)  
Antiguo 06/05/2010, 14:56
 
Fecha de Ingreso: mayo-2010
Mensajes: 52
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Problema con header

No si eso lo sabía después de tanto buscarlo, lo que pasa era que no sabía donde estaba el HTML jeje.

Gracias y un saludo ;)

Etiquetas: header
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 11:48.