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.