¿error header?

Iniciado por kosis157, 29 Octubre 2007, 21:02 PM

0 Miembros y 1 Visitante están viendo este tema.

kosis157

Hola tengo un problema antes utilizaba el EasyPHP pero ahora como en mi colegio tengo instalado el XAMPP me puse en mi ordenador, con el EasyPHP me iba todo correctamente pero ahora con el XAMPP me tira dos errores:
El código es:
Código (php) [Seleccionar]

<?php
if(isset($_POST['login'])){
$redir=$_SERVER['HTTP_REFERER'];
$url=explode("?",$redir);
$redir=$url[0];

$user=$_POST['user'];
$pass=$_POST['pass'];
if($user==""){
header ("Location: $redir?error_login=0");
exit;
}
if($pass==""){
header ("Location: $redir?error_login=0");
exit;
}
/** comprobem que el usuario y contraseña estan a la BD*/
include("../conexion.php");
$sql="SELECT `id`,`pass`,`carrec`,`ban`,`last_day`,`entradas`,`alta` FROM usuari";
$sql .=" WHERE `nick` LIKE '".$user."' LIMIT 1";
$result=mysql_query($sql);
if(mysql_num_rows($result)==0){
header ("Location: $redir?error_login=1");
exit;
}
$row=mysql_fetch_array($result);
if($row[2]==1){//comprobem k lusuari no estigui ban 1-> BAN; 0-> no ban
header ("Location: $redir?error_login=2");
exit;
}
/*comprobem k estigui de alta*/
if($row['alta']!=1){
header ("Location: $redir?error_login=4");
exit;
}
/** comprovem si la contraseña coincideix*/
if($pass==$row['pass']){
$data=date("d/m/Y");
//actualitzem al ultima visita
$sql="UPDATE `usuari` SET `last_day` = '".$data."',`entradas`=`entradas`+1, `ip`='".$_SERVER['REMOTE_ADDR']."' WHERE `nick` = '".$user."' LIMIT 1" ;
mysql_query($sql);
/*--> linea 42*/session_start();
$_SESSION['id']=$row['id'];
$_SESSION['user']=$user;
$_SESSION['pass']=$pass;
$_SESSION['carrec']=$row['carrec'];
$_SESSION['entradas']=$row['entradas'];
$url="../index.php?".session_name()."=".session_id();
/*--> linea 49*/header ("Location: $url");
}else{
header ("Location: $redir?error_login=3");
exit;
}
mysql_free_result($result);
mysql_close();
}else{
header("Location: login.php");
}
?>


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wwwroot\web\conexion.php:4) in C:\wwwroot\web\usuarios\progress.php on line 42

Warning: Cannot modify header information - headers already sent by (output started at C:\wwwroot\web\conexion.php:4) in C:\wwwroot\web\usuarios\progress.php on line 49


дٳŦ٭

No hagas echo de nada antes de tirar la sesión.

Suerte


Con sangre andaluza :)


kosis157

Cita de: Cp. Lee en 30 Octubre 2007, 04:56 AM
No hagas echo de nada antes de tirar la sesión.

Suerte
Pero esque en el código no hay ningun echo y luego el error del header?

SawMe

session_start(); al prinicipio del script  ;)

eLank0

Deberías de tratar las cookies y las sesiones antes de cualquier código HTML y poner session_start() al principio del script para que cargue las sesiones.

S2

kosis157

Vale y el error del header? :huh:

SawMe

el error del header lo tira por el error de la sesion  :o

aver, php envia headers siempre y cuando no haya ni 1 sola salida de texto, ya sea error o cualquier cosa

ya no debe de pasar nada supongo

kosis157

entonces el código me quedaría así:
Código (php) [Seleccionar]
<?php
session_start
();
if(isset(
$_POST['login'])){
$redir=$_SERVER['HTTP_REFERER'];
$url=explode("?",$redir);
$redir=$url[0];

$user=$_POST['user'];
$pass=$_POST['pass'];
if($user==""){
header ("Location: $redir?error_login=0");
exit;
}
if($pass==""){
header ("Location: $redir?error_login=0");
exit;
}
/** comprobem que el usuario y contraseña estan a la BD*/
include("../conexion.php");
$sql="SELECT `id`,`pass`,`carrec`,`ban`,`last_day`,`entradas`,`alta` FROM usuari";
$sql .=" WHERE `nick` LIKE '".$user."' LIMIT 1";
$result=mysql_query($sql);
if(mysql_num_rows($result)==0){
header ("Location: $redir?error_login=1");
exit;
}
$row=mysql_fetch_array($result);
if($row[2]==1){//comprobem k lusuari no estigui ban 1-> BAN; 0-> no ban
header ("Location: $redir?error_login=2");
exit;
}
/*comprobem k estigui de alta*/
if($row['alta']!=1){
header ("Location: $redir?error_login=4");
exit;
}
/** comprovem si la contraseña coincideix*/
if($pass==$row['pass']){
$data=date("d/m/Y");
//actualitzem al ultima visita
$sql="UPDATE `usuari` SET `last_day` = '".$data."',`entradas`=`entradas`+1, `ip`='".$_SERVER['REMOTE_ADDR']."' WHERE `nick` = '".$user."' LIMIT 1" ;
mysql_query($sql);
$_SESSION['id']=$row['id'];
$_SESSION['user']=$user;
$_SESSION['pass']=$pass;
$_SESSION['carrec']=$row['carrec'];
$_SESSION['entradas']=$row['entradas'];
$url="../index.php?".session_name()."=".session_id();
header ("Location: $url");
}else{
header ("Location: $redir?error_login=3");
exit;
}
mysql_free_result($result);
mysql_close();
}else{
header("Location: login.php");
}
?>

lo de la session_start arriba de todo pero el error persiste :(