php - session_start , problemillas

Iniciado por Neibar, 3 Mayo 2012, 10:54 AM

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

Neibar

Código (php) [Seleccionar]

<?php 
session_start
();
    
$conectarbdmysql_connect"localhost""root""");
if($conectarbd){
$conectar_tablamysql_select_db("bag");
if($conectar_tabla){
          
$comprueba=mysql_query("Select alias,mail,pass from usuarios where mail = '".$_POST['mail']."' && pass='".$_POST['pass']."'");
          if(
$comprueba){
            
$nick mysql_fetch_array(mysql_query("Select alias,mail,pass from usuarios where mail = '".$_POST['mail']."' && pass = '".$_POST['pass']."'"));
            
$_SESSION['nick']= $nick[0];
            if(
$_SESSION['nick']!= ""){
                echo 
"<p> ".$nick[0]." </p>";
            }else{
                
header("Location: ../index.html");
            }
          }
        }
    }
session_destroy();
?>



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:


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.

JohnConnor

#1
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 (php) [Seleccionar]

<?php 
$mail
="johnconnor";
$pass="123";
session_start();
 
$conectarbd=mysql_connect("localhost","root","laclave");
if($conectarbd){
$conectar_tablamysql_select_db("dbusers");
if($conectar_tabla){
          
$comprueba=mysql_query("Select alias,mail,pass from usuarios where mail = '".$mail."' && pass='".$pass."'");
          if(
$comprueba){
$nick mysql_fetch_array(mysql_query("Select alias,mail,pass from usuarios where mail = '".$mail."' && pass = '".$pass."'"));

 
$_SESSION['nick']=$nick[0];
            if(
$_SESSION['nick']!= ""){
                echo 
"<p> ".$nick[0]." </p>";
            }else{
                
header("Location: ../index.html");
            }
          }
        }
    }
session_destroy();
?>



 

CUIDADO CON LOS ATAQUES SQL!

Saludos!

[u]nsigned

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 (php) [Seleccionar]
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 (php) [Seleccionar]
<?php
echo "printando algo";
header("Location: http://www.google.com/");
?>


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

Citarprintando 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

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Neibar

Cita de: 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 (php) [Seleccionar]

<?php 
$mail
="johnconnor";
$pass="123";
session_start();
 
$conectarbd=mysql_connect("localhost","root","laclave");
if($conectarbd){
$conectar_tablamysql_select_db("dbusers");
if($conectar_tabla){
          
$comprueba=mysql_query("Select alias,mail,pass from usuarios where mail = '".$mail."' && pass='".$pass."'");
          if(
$comprueba){
$nick mysql_fetch_array(mysql_query("Select alias,mail,pass from usuarios where mail = '".$mail."' && pass = '".$pass."'"));

 
$_SESSION['nick']=$nick[0];
            if(
$_SESSION['nick']!= ""){
                echo 
"<p> ".$nick[0]." </p>";
            }else{
                
header("Location: ../index.html");
            }
          }
        }
    }
session_destroy();
?>



 

CUIDADO CON LOS ATAQUES SQL!

Saludos!

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

Cita de: El As del Club Paris 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 (php) [Seleccionar]
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 (php) [Seleccionar]
<?php
echo "printando algo";
header("Location: http://www.google.com/");
?>


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


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

Neibar

ya lo solucioné con javascript/php

Código (javascript) [Seleccionar]

echo"<script language='javascript'>window.location='../index.php';</script>;";


gracias !