Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Neibar en 3 Mayo 2012, 10:54 am



Título: php - session_start , problemillas
Publicado por: Neibar en 3 Mayo 2012, 10:54 am
Código
  1. <?php
  2.    $conectarbd= mysql_connect( "localhost", "root", "");
  3. if($conectarbd){
  4. $conectar_tabla= mysql_select_db("bag");
  5. if($conectar_tabla){
  6.          $comprueba=mysql_query("Select alias,mail,pass from usuarios where mail = '".$_POST['mail']."' && pass='".$_POST['pass']."'");
  7.          if($comprueba){
  8.            $nick = mysql_fetch_array(mysql_query("Select alias,mail,pass from usuarios where mail = '".$_POST['mail']."' && pass = '".$_POST['pass']."'"));
  9.            $_SESSION['nick']= $nick[0];
  10.            if($_SESSION['nick']!= ""){
  11.                echo "<p> ".$nick[0]." </p>";
  12.            }else{
  13.                header("Location: ../index.html");
  14.            }
  15.          }
  16.        }
  17.    }
  18. ?>
  19.  

Alguien podria orientarme un poco con el tema de sesiones?
Me he mirado el manual de php --> http://www.php.net/manual/es/features.sessions.php

Pero siguiendo esos pasos, no se porque me salen errores:

Código:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\projecte\pag\content.php:153) in C:\xampp\htdocs\projecte\pag\content.php on line 154

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\projecte\pag\content.php:153) in C:\xampp\htdocs\projecte\pag\content.php on line 154

Si quito el session_start(); y session_destroy(); , funciona bien. Lo que pasa es que quiero privatizar esa pagina para que el que no esté registrado/autentificado no pueda verla.


Título: Re: php - session_start , problemillas
Publicado por: JohnConnor en 3 Mayo 2012, 17:19 pm
la verdad no se por que no funciona, debe ser porque usas xampp, te recomiendo AppServ a menos que uses perl tambien.

prueba con esto:

Código
  1. <?php
  2. $mail="johnconnor";
  3. $pass="123";
  4. $conectarbd=mysql_connect("localhost","root","laclave");
  5. if($conectarbd){
  6. $conectar_tabla= mysql_select_db("dbusers");
  7. if($conectar_tabla){
  8.          $comprueba=mysql_query("Select alias,mail,pass from usuarios where mail = '".$mail."' && pass='".$pass."'");
  9.          if($comprueba){
  10. $nick = mysql_fetch_array(mysql_query("Select alias,mail,pass from usuarios where mail = '".$mail."' && pass = '".$pass."'"));
  11.  
  12. $_SESSION['nick']=$nick[0];
  13.            if($_SESSION['nick']!= ""){
  14.                echo "<p> ".$nick[0]." </p>";
  15.            }else{
  16.                header("Location: ../index.html");
  17.            }
  18.          }
  19.        }
  20.    }
  21. ?>
  22.  
  23.  
 

CUIDADO CON LOS ATAQUES SQL!

Saludos!


Título: Re: php - session_start , problemillas
Publicado por: [u]nsigned en 3 Mayo 2012, 18:23 pm
El problema está claro, en algun lugar estas 'printando' algo, es decir enviando algo al documento html generado. Esto no se puede hacer antes de usar

Código
  1. header("Location: ../index.html");

Puesto que una vez que printamos algo (por ejemplo echo 'hola') ya no se permite modificar la cabecera del documento con header(location...), por ejemplo el siguiente codigo:

Código
  1. <?php
  2. echo "printando algo";
  3. header("Location: http://www.google.com/");
  4. ?>

Te da el siguiente warning ( y obviamente luego no redirije a www.google.com):

Citar
printando algo
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\PoC.php:2) in C:\AppServ\www\PoC.php on line 3


Título: Re: php - session_start , problemillas
Publicado por: Neibar en 3 Mayo 2012, 19:43 pm
la verdad no se por que no funciona, debe ser porque usas xampp, te recomiendo AppServ a menos que uses perl tambien.

prueba con esto:

Código
  1. <?php
  2. $mail="johnconnor";
  3. $pass="123";
  4. $conectarbd=mysql_connect("localhost","root","laclave");
  5. if($conectarbd){
  6. $conectar_tabla= mysql_select_db("dbusers");
  7. if($conectar_tabla){
  8.          $comprueba=mysql_query("Select alias,mail,pass from usuarios where mail = '".$mail."' && pass='".$pass."'");
  9.          if($comprueba){
  10. $nick = mysql_fetch_array(mysql_query("Select alias,mail,pass from usuarios where mail = '".$mail."' && pass = '".$pass."'"));
  11.  
  12. $_SESSION['nick']=$nick[0];
  13.            if($_SESSION['nick']!= ""){
  14.                echo "<p> ".$nick[0]." </p>";
  15.            }else{
  16.                header("Location: ../index.html");
  17.            }
  18.          }
  19.        }
  20.    }
  21. ?>
  22.  
  23.  
 

CUIDADO CON LOS ATAQUES SQL!

Saludos!

si.. los ataques sql seran en breves mi siguiente ojeada xd gracias!

El problema está claro, en algun lugar estas 'printando' algo, es decir enviando algo al documento html generado. Esto no se puede hacer antes de usar

Código
  1. header("Location: ../index.html");

Puesto que una vez que printamos algo (por ejemplo echo 'hola') ya no se permite modificar la cabecera del documento con header(location...), por ejemplo el siguiente codigo:

Código
  1. <?php
  2. echo "printando algo";
  3. header("Location: http://www.google.com/");
  4. ?>

Te da el siguiente warning ( y obviamente luego no redirije a www.google.com):


aaaaaaaaamigo jaajajaja muchas gracias! Vaya error más tonto..


Título: Re: php - session_start , problemillas
Publicado por: Neibar en 3 Mayo 2012, 20:02 pm
ya lo solucioné con javascript/php

Código
  1. echo"<script language='javascript'>window.location='../index.php';</script>;";
  2.  

gracias !