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:
<?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
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?
session_start(); al prinicipio del script ;)
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
Vale y el error del header? :huh:
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
entonces el código me quedaría así:
<?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 :(