Foros del Web » Programando para Internet » PHP »

Problemas con Cookies

Estas en el tema de Problemas con Cookies en el foro de PHP en Foros del Web. Hola: Estoy trabajando con Cookies y ahora me estan generando problemas. Me explico, hasta el viernes trabajaba con php, mysql, apache en windows y nunca ...
  #1 (permalink)  
Antiguo 25/05/2005, 09:52
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Exclamación Problemas con Cookies

Hola:
Estoy trabajando con Cookies y ahora me estan generando problemas.
Me explico, hasta el viernes trabajaba con php, mysql, apache en windows y nunca tuve un solo problema con las cookies.
Ahora estoy con php, postgresql,apache en Fedora core3 y no hay caso con las cookies, no las pesca, revise la configuracion del browser para ver si era eso pero esta configurado para aceptarlas de echo ya tiene varias (incluyendo la de este foro).
No se cual es el problema...alguien tiene elguna idea??????
Se agradece.
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #2 (permalink)  
Antiguo 25/05/2005, 10:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Como generas tus cookies? .. no sé si conoces que hay parámetros para definir el "path" y el "domino" de la cookie (para su ambito) .. revisalo, parece que en "windows" no suele hacer mucha falta esos parámetros pero si en Lunux.

Un saludo,
  #3 (permalink)  
Antiguo 25/05/2005, 13:49
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Definicion

Gracias Cluster, mira, asi defino la cookie...¿esta bien?

setcookie("usNom",$row["nombre"],time() + 3600);
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #4 (permalink)  
Antiguo 25/05/2005, 15:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Le faltaría las definiciones de los parámetros que te comentaba. Revisa la documentación oficial al respecto:

www.php.net/setcookie

Un saludo,
  #5 (permalink)  
Antiguo 25/05/2005, 16:36
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Gracias Nuevamente

revise la documentacion y agregue los parametros que me faltaban pero asi y todo no pasa nada, sigue sin generarlas...
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #6 (permalink)  
Antiguo 25/05/2005, 17:12
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola!

Si estas trabajando en un proyecto local, desde ahorita te digo que no se te va a crear la cookie, por alguna razon que no he investigado a fondo, si estas en local no crea un archivo de cookie, pero si puedes utilizarlas, algo como:

pagina1.php

//Crear cookies, recuerda que no la puedes usar en la misma pagina donde la creas.
setCookie ("varTest"..........);


pagina2.php

//Leer cookie

echo $_COOKIE["varTest"];

Eso si se te debe de funcionar, pero como archivo no la vas a mirar, yo imagina que no se crea porque no tiene la necesidad de pasarla a ninguna otra maquina, porque tienes el cliente y el servidor en la misma computadora.

Bueno, eso es algo que a mi me pasa con cookies en PHP, que en local nunca se crea el archivo de cookies, pero si puedo accesar a ellas.

Por razones de prueba tambien, en la configuracion de tu navegador, por la seguridad en Minimo, y especifica que quieres aceptar todas las cookies, ademas revisa que no tengas un antivirus que las este bloqueando.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #7 (permalink)  
Antiguo 26/05/2005, 13:58
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Todavia nada

Gracias, hice lo que ne dijiste pero nada...bueno, estoy trabajando en un amaquina local que es como el laboratorio de pruebas, cuando las cosas quedan bien se aplica en el servidor general y me asusta lo de que aunque esten ambos configurados de la misma manera, haya cosas que no funcionan en este. Creo que lo mas sano es trabajar con variables de sesion pero nunca lo he hecho...alguien puede darme una mano?. Voy a buscar documentacion sobre el tema, ademas creo, por lo que se comenta en este foro, que las variables de sesion son mas seguras que las cookies.
Bueno, nuevamente cualquier ayuda se agradece.
Adios
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #8 (permalink)  
Antiguo 26/05/2005, 14:03
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola!

Si, $_SESSION["x"] es mucho mas seguro que $_COOKIE["x"], aunque a veces cada una tiene sus aplicaciones.

Bueno, creo que por el siguiente link puedes empezar a informarte.

http://mx2.php.net/manual/es/function.session-start.php

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #9 (permalink)  
Antiguo 26/05/2005, 14:06
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Por otra parte??

Ya checaste que cuando escribes la cookie el valor que escribes es correcto?

Ademas revisa que la fecha de tu servidor sea correcta para que el tiempo de vida que le pusiste a la cookie sea correcta tambien.

Por otra parte en este linea:

setcookie("usNom",$row["nombre"],time() + 3600);

Asegurate que $row["nombre"] tenga un valor correcto.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #10 (permalink)  
Antiguo 26/05/2005, 16:21
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Ahora Es Otro Drama

No se que estoy haciendo mal o si hay algo mal configurado en este servidor pero tampoco me funcionan las variables de sesion. Las defino de la siguiente manera:

$_SESSION['nombre']=$row["nombre"];

lo ruteo con salidas (echo) y me muestra el valor que contiene la variable, es decir toma un valor, no esta vacia, pero cuando pregunto por ella en la pagina siguiente, simplemente no entra como si la variable no existiera y si pongo un echo antes de realizar la consulta, me dice que "la variable _session, no ha sido definida....no entiendo nada.

Explicando un poco el funcionamiento cuando se ingresa al sistema existe una pagina que se llama control, en ella se pregunta por el usuario y la clave que han sido ingresados, si son validos entonces genera la sesion de usuario y redirecciona inmediatamente a la pagina de inicio que se llama default, la cual esta compuesta por un top, un center y un menu. Cada uno de estos frames tiene un "include(login.php)" y es en la funcion login donde verifica que las variables de sesion que fueron definidas en control esten correctas, si es asi devuelve la variable $loginConect=True, solo con esta validacion se puede ver el resto de la pagina, si loginConect=False, la persona no puede ver el contenido.

Es en la pagina login donde pregunto:
if(isset($_SESSION["nombre"]) //entonces hace el resto, sino...obviamnete no entra.
y es aqui donde no reconoce la variable de session.....que demonios esta mal?????
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #11 (permalink)  
Antiguo 26/05/2005, 17:05
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
codigos

Este es el codigo de la pagina control.php:

Código PHP:
<?php


if(trim($_POST["usr"]) != "" && trim($_POST["psw"]) != "")

{

    
$nickN $_POST["usr"];

    
$passN $_POST["psw"];



    
$result pg_query("SELECT nombre,psw,usr,nivel FROM operador WHERE usr='$nickN' and estado='1'");

    if(
$row pg_fetch_array($result))

    {

        if(
$row["psw"] == $passN)

        {

             
session_start();                

                     
$_SESSION['usNom']=$row["nombre"]; 

                     
$_SESSION['usNick']=$row["usr"]; 

                     
$_SESSION['usPass']=$row["psw"];

                     
$_SESSION['usNivel']=$row["nivel"];

                  

                     
header("Location:default.htm");
                }
         }

      
}

pg_close();

?>
me arroja varios errorres:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/html/digital/admin/control.php:6) in /var/www/html/digital/admin/control.php on line 35

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/html/digital/admin/control.php:6) in /var/www/html/digital/admin/control.php on line 35

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/digital/admin/control.php:6) in /var/www/html/digital/admin/control.php on line 41

Y este es el codigo de la pagina login.php:
Código PHP:
<?php

$loginCorrecto 
true;


if(isset(
$_SESSION["usNick"]) && isset($_SESSION["usPass"]))

{

  

        
$result pg_query("SELECT * FROM operador WHERE usr='".$_SESSION["usNick"]."' AND psw='".$_SESSION["usPass"]."' AND estado='1'");

     if(
$row pg_fetch_array($result))

    {

        
$loginCorrectotrue;

        
$idUsr $row["sigla"];

        
$pswUsuarioL $row["psw"];

        
$usrUsuarioL $row["usr"];

        
$nombreUsuarioL $row["nombre"];

        
$nivelUsr $row["nivel"];

    }

    else

    {

        

    }

    
pg_free_result($result);

}



?>
la variable que devuelve se llama $loginCorrecto, y por ella pregunta en cada una de las paginas.
Bueno espero que alguien se de cuenta de cuales son los errores.
gracias
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #12 (permalink)  
Antiguo 26/05/2005, 17:09
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola!

Bueno, rapidamente, en la primera linea de tu codigo siempre agrega session_start();

es decir:

<?

session_start();

//Todo tu codigo

?>

Eso es lo primero que esta mal.

ANEXANDO: Claro, quita las partes donde tienes session_start() en medio del codigo, y ambas paginas debes tener session_start(); desde el principio.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #13 (permalink)  
Antiguo 26/05/2005, 17:30
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
no pasa nada

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/html/digital/admin/top.php:8) in /var/www/html/digital/admin/login.php on line 2

sigue arrojando el mismo error, sera porque la pagina login.php esta siendo llamada con un include desde las otras paginas?????

:-p
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #14 (permalink)  
Antiguo 26/05/2005, 17:43
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Es muy posible...

Pero a mi me funciona perfecto hacer session_start(); desde un include...

Pon el codigo de la pagina que manda llamar a login.php para verificar que no estas haciendo nada de HTML antes de incluir login.php

Ese es el problema que te arroja, que no puedes hacer nada de HTML antes de session_start();

Falta poco... ya casi te sale completo
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #15 (permalink)  
Antiguo 27/05/2005, 07:49
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 13 años
Puntos: 0
Gracias

efctivamente era eso...comenzaba el php despues de la cabecera html, porque debo darle unos parametros a la pagina, pero genere el session_start(); al inicio de la pagina y liiiiiiiissssttttoooooo.... muchisimas gracias.
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:39.