Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: kosis157 en 29 Octubre 2007, 21:02 pm



Título: ¿error header?
Publicado por: kosis157 en 29 Octubre 2007, 21:02 pm
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
  1. <?php
  2. if(isset($_POST['login'])){
  3. $redir=$_SERVER['HTTP_REFERER'];
  4. $url=explode("?",$redir);
  5. $redir=$url[0];
  6.  
  7. $user=$_POST['user'];
  8. $pass=$_POST['pass'];
  9. if($user==""){
  10. header ("Location: $redir?error_login=0");
  11. }
  12. if($pass==""){
  13. header ("Location: $redir?error_login=0");
  14. }
  15. /** comprobem que el usuario y contraseña estan a la BD*/
  16. include("../conexion.php");
  17. $sql="SELECT `id`,`pass`,`carrec`,`ban`,`last_day`,`entradas`,`alta` FROM usuari";
  18. $sql .=" WHERE `nick` LIKE '".$user."' LIMIT 1";
  19. $result=mysql_query($sql);
  20. if(mysql_num_rows($result)==0){
  21. header ("Location: $redir?error_login=1");
  22. }
  23. $row=mysql_fetch_array($result);
  24. if($row[2]==1){//comprobem k lusuari no estigui ban 1-> BAN; 0-> no ban
  25. header ("Location: $redir?error_login=2");
  26. }
  27. /*comprobem k estigui de alta*/
  28. if($row['alta']!=1){
  29. header ("Location: $redir?error_login=4");
  30. }
  31. /** comprovem si la contraseña coincideix*/
  32. if($pass==$row['pass']){
  33. $data=date("d/m/Y");
  34. //actualitzem al ultima visita
  35. $sql="UPDATE `usuari` SET `last_day` = '".$data."',`entradas`=`entradas`+1, `ip`='".$_SERVER['REMOTE_ADDR']."' WHERE `nick` = '".$user."' LIMIT 1" ;
  36. mysql_query($sql);
  37. /*--> linea 42*/session_start();
  38. $_SESSION['id']=$row['id'];
  39. $_SESSION['user']=$user;
  40. $_SESSION['pass']=$pass;
  41. $_SESSION['carrec']=$row['carrec'];
  42. $_SESSION['entradas']=$row['entradas'];
  43. $url="../index.php?".session_name()."=".session_id();
  44. /*--> linea 49*/header ("Location: $url");
  45. }else{
  46. header ("Location: $redir?error_login=3");
  47. }
  48. }else{
  49. header("Location: login.php");
  50. }
  51. ?>
  52.  
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



Título: Re: ¿error header?
Publicado por: дٳŦ٭ en 30 Octubre 2007, 04:56 am
No hagas echo de nada antes de tirar la sesión.

Suerte


Título: Re: ¿error header?
Publicado por: kosis157 en 30 Octubre 2007, 15:54 pm
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?


Título: Re: ¿error header?
Publicado por: SawMe en 30 Octubre 2007, 16:27 pm
session_start(); al prinicipio del script  ;)


Título: Re: ¿error header?
Publicado por: eLank0 en 30 Octubre 2007, 17:34 pm
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


Título: Re: ¿error header?
Publicado por: kosis157 en 30 Octubre 2007, 19:04 pm
Vale y el error del header? :huh:


Título: Re: ¿error header?
Publicado por: SawMe en 30 Octubre 2007, 23:09 pm
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


Título: Re: ¿error header?
Publicado por: kosis157 en 31 Octubre 2007, 21:04 pm
entonces el código me quedaría así:
Código
  1. <?php
  2. if(isset($_POST['login'])){
  3. $redir=$_SERVER['HTTP_REFERER'];
  4. $url=explode("?",$redir);
  5. $redir=$url[0];
  6.  
  7. $user=$_POST['user'];
  8. $pass=$_POST['pass'];
  9. if($user==""){
  10. header ("Location: $redir?error_login=0");
  11. }
  12. if($pass==""){
  13. header ("Location: $redir?error_login=0");
  14. }
  15. /** comprobem que el usuario y contraseña estan a la BD*/
  16. include("../conexion.php");
  17. $sql="SELECT `id`,`pass`,`carrec`,`ban`,`last_day`,`entradas`,`alta` FROM usuari";
  18. $sql .=" WHERE `nick` LIKE '".$user."' LIMIT 1";
  19. $result=mysql_query($sql);
  20. if(mysql_num_rows($result)==0){
  21. header ("Location: $redir?error_login=1");
  22. }
  23. $row=mysql_fetch_array($result);
  24. if($row[2]==1){//comprobem k lusuari no estigui ban 1-> BAN; 0-> no ban
  25. header ("Location: $redir?error_login=2");
  26. }
  27. /*comprobem k estigui de alta*/
  28. if($row['alta']!=1){
  29. header ("Location: $redir?error_login=4");
  30. }
  31. /** comprovem si la contraseña coincideix*/
  32. if($pass==$row['pass']){
  33. $data=date("d/m/Y");
  34. //actualitzem al ultima visita
  35. $sql="UPDATE `usuari` SET `last_day` = '".$data."',`entradas`=`entradas`+1, `ip`='".$_SERVER['REMOTE_ADDR']."' WHERE `nick` = '".$user."' LIMIT 1" ;
  36. mysql_query($sql);
  37. $_SESSION['id']=$row['id'];
  38. $_SESSION['user']=$user;
  39. $_SESSION['pass']=$pass;
  40. $_SESSION['carrec']=$row['carrec'];
  41. $_SESSION['entradas']=$row['entradas'];
  42. $url="../index.php?".session_name()."=".session_id();
  43. header ("Location: $url");
  44. }else{
  45. header ("Location: $redir?error_login=3");
  46. }
  47. }else{
  48. header("Location: login.php");
  49. }
  50. ?>

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