Hola chicos, perdonar que reviva el post, pero estoy utilizando este sistema de modulación y me ha surgido un problema con las cookies.
Bien, el problema es el conocido Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\portal\index.php:45) in C:\xampp\htdocs\portal\login.php on line 34
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\portal\index.php:45) in C:\xampp\htdocs\portal\login.php on line 35
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\portal\index.php:45) in C:\xampp\htdocs\portal\login.php on line 36
Como bien sabreis no puede haber salida html ni echos espacios en blanco etc antes de poner una setcookie, aqui pongo parte de mi index.php:
<?PHP
if (isset($_GET['id'])) {
if (!empty($_GET['id']) && $_GET['id'] != "index") {
if (file_exists($_GET['id'].".php")) {
include ($_GET['id'].".php");
} else {
echo "No existe esta seccion";
}
} else {
include ("principal.php");
}
} else {
include ("principal.php");
}
?>
</div>
</div>
</div>
<!-- end #content -->
<div id="sidebar">
<ul>
<?PHP
include 'cookie.php';
if($loginCorrecto){echo "<br>Bienvenido <b>".$_COOKIE["usNick"]."</b>";}
else{
include ("login.php");}
?>
Llamo a login.php (obviamente hay salida html y php anterior en el index.php) que contiene un formulario que envia los datos asi mismo y es en setcookie (logico) donde saltan los errores:
<?PHP @session_start();
if (isset($_POST['action']) == "checkdata2") {
}
else{ @header("Location: http://localhost/portal/"); };
?>
<li id="search">
<h3>LOGIN</h3>
<?PHP
$usuario = $_POST['usuario'];
$password = $_POST['password'];
include ("registro/conexion.php");
if (isset($_POST['action']) == "checkdata2") {
if (($_SESSION['tmptxt']) == ($_POST['tmptxt'])) {
if($usuario = NULL || $password == NULL)
{
echo 'ERROR';
}
else
{
$usuario = $_POST['usuario'];
$password = $_POST['password'];
$password = md5($password);
$consulta = mysql_query("SELECT * FROM usuarios WHERE nick='$usuario' AND password='$password'",$conexion) or die ("Error");
$resultado = mysql_num_rows($consulta);
if($resultado != '1')
{
echo "<center></p><b>Datos del usuario <b>".$usuario."</b> no encontrados o incorrectos.</b></p></center>";
}
if($resultado == '1')
{ ob_start();
setcookie("usNick",$usuario,time()+7776000);
setcookie("usPass",$password,time()+7776000);
header('location: index.php');
}
}
}else{
echo "<center><p>Verificacion incorrecta.</p></center>";}
}
?>
<form name="form1" id="form1" method="post" action="<?php echo $PHP_SELF;?>">
<p>
<input name="usuario" type="text" value="nombre..." />
</p>
<p>
<input name="password" type="password" value="contra" />
</p>
<p> <div align="left"><img src="registro/captcha.php"></div> </p>
<p> <input maxlength="7" type="text" name="tmptxt"></p>
<p>
<input type="submit" name="Submit" value="Entrar" />
<input name="action" type="hidden" value="checkdata2">
</p>
</form>
</li>
¿Hay alguna forma de solucionar esto o este sistema no funciona? Porque he buscado y no he dado con la solución.
Muchas gracias.