Foros del Web » Programando para Internet » PHP »

Guardar Cookies en php

Estas en el tema de Guardar Cookies en php en el foro de PHP en Foros del Web. Muy buenas nuevamente a todos, tuve problemas con algunos codigos y recurri a una ayuda en internet, la adapté pero sigue sin funcionar ... tengo ...
  #1 (permalink)  
Antiguo 01/10/2010, 19:48
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Guardar Cookies en php

Muy buenas nuevamente a todos, tuve problemas con algunos codigos y recurri a una ayuda en internet, la adapté pero sigue sin funcionar ... tengo problemas como la pagina se me pone en blanco hasta que no me devuelva nada la pagina ...

Este es el codigo PHP en el index ( que articula con 2 inputbox )

Código PHP:
<?php
      $db
=mysql_connect("localhost","esperame_user","asd123123");
mysql_select_db("esperame_luchiano",$db);
       
      function 
quitar($mensaje)
      {
      
$mensaje str_replace("<","&lt;",$mensaje);
      
$mensaje str_replace(">","&gt;",$mensaje);
      
$mensaje str_replace("\'","'",$mensaje);
      
$mensaje str_replace('\"',"&quot;",$mensaje);
      
$mensaje str_replace("\\\\","\\",$mensaje);
      return 
$mensaje;
      }

      if(
trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
      {
      
$nickN quitar($HTTP_POST_VARS["nick"]);
      
$passN quitar($HTTP_POST_VARS["password"]);
      
$result mysql_query("SELECT password FROM usuarios WHERE nick='$nickN'",$db);
      if(
$row mysql_fetch_array($result))
      {
      if(
$row["password"] == $passN)
      {
      
//90 dias dura la cookie
      
setcookie("usNick",$nickN,time()+7776000);
      
setcookie("usPass",$passN,time()+7776000);
      
?>
      Ingreso exitoso!
      <SCRIPT LANGUAGE="javascript">
      location.href = "index.php";
      </SCRIPT>
      <?php
      
}
      else
      {
      echo 
"Password incorrecto";
      }
      }
      else
      {
      echo 
"Usuario no existente en la base de datos";
      }
      
mysql_free_result($result);
      }
      else
      
mysql_close();
      
?>
Bién, supuestamente me crea las cookies pero en el header tengo este codigo para comprobar esas cookies :

Código PHP:
<head>   1.
      <?php
      $db
=mysql_connect("localhost","esperame_user","asd123123");
mysql_select_db("esperame_luchiano",$db);
       
      include(
"login.php");

      if(
$loginCorrecto)
      {
      echo 
"Aqui el contenido solo para usuarios registrados";
      }
      else
      {
      echo 
"El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area";
      }
      
?> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tutomania.net - Tutoriales - Descarga - Manuales - Copyright 2010</title><link href="estilos.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.Estilo3 {
    font-size: 30px;
    font-weight: bold;
    font-family: "Courier New", Courier, monospace;
}
.Estilo4 {font-weight: bold; font-size: 30px;}
body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
}
-->
</style>
</head>

Este es login.php:

Código PHP:
<?php
        $loginCorrecto 
false;
        
$idUsuarioL;
        
$nickUsuarioL;
        
$emailUsuarioL;
        
$nombreUsuarioL;
      if(isset(
$HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"]))
      {
      
$result mysql_query("SELECT * FROM usuarios WHERE nick='".
      
$HTTP_COOKIE_VARS["usNick"]."' AND password='".$HTTP_COOKIE_VARS["usPass"]."'");
      if(
$row mysql_fetch_array($result))
      {
      
setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
      
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);
      
$loginCorrecto true;
      
$idUsuarioL $row["id"];
      
$nickUsuarioL $row["nick"];
      
$emailUsuarioL $row["email"];
      
$nombreUsuarioL $row["nombre"];
      }
      else
      {
      
//Destruimos las cookies.
      
setcookie("usNick","x",time()-3600);
      
setcookie("usPass","x",time()-3600);
      }
      
mysql_free_result($result);
      }
      
?>

Esta es mi pagina http://www.esperameche.com.ar ( si quieren apreciar el registro y después van a index.php no reconoce las cookies ).

¿ Qué puede estar andando mal ? estoy con los pelos de punta.

Saludos cordiales :D.
  #2 (permalink)  
Antiguo 01/10/2010, 20:20
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 14 años, 4 meses
Puntos: 7
Respuesta: Guardar Cookies en php

Oye VbOkonly trato de seguir el tema y de verdad en no logro entender de todas formas no veo donde haces la asignacion a $HTTP_POST_VARS["nick"].

Recuerda usar $_COOKIE o de $_GLOBAL[HTTP_COOKIE]
  #3 (permalink)  
Antiguo 01/10/2010, 20:31
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 3 meses
Puntos: 7
De acuerdo Respuesta: Guardar Cookies en php

Yo cambiaría la función quitar() ya que para eso está la htmlentities():
Código PHP:
$nickN htmlentities($_POST['nick'], ENT_QUOTES"UTF-8"); 
y cambia las antiguas variables de PHP, ya que PHP las renovo por que eran demasiada largas:

Código PHP:
$HTTP_POST_VARS $_POST
$HTTP_COOKIE_VARS 
$_COOKIE 
y siempre después de una coma, usa espacio, para tener un código más ordenado:

Código PHP:
      setcookie("usNick"$nickNtime() + 7776000); 
y para limitar el nick usa la función eregi() que sirve para permitir sólo algunos carácteres:
Código PHP:
if(!ereg("^[A-Za-z0-9]{5,30}$"$nickN ))  {
echo 
'El Nombre de usuario s&oacute;lo puede tener letras y n&uacute;meros.'
y así tienes menos probabilidades de que te hagan una injección html u otra.
  #4 (permalink)  
Antiguo 01/10/2010, 20:32
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

Cita:
Iniciado por egepe Ver Mensaje
Oye VbOkonly trato de seguir el tema y de verdad en no logro entender de todas formas no veo donde haces la asignacion a $HTTP_POST_VARS["nick"].

Recuerda usar $_COOKIE o de $_GLOBAL[HTTP_COOKIE]
Me estoy perdiendo más, la asignación a nick no la entendi muy bien, pero como podria imprementar $_COOKIE o de $_GLOBAL[HTTP_COOKIE] ?
Pensé que no era tan dificil crear una cookie y reconocerla :(
Agradesco por tu ayuda.
  #5 (permalink)  
Antiguo 01/10/2010, 20:34
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

Cita:
Iniciado por Miguelithox Ver Mensaje
Yo cambiaría la función quitar() ya que para eso está la htmlentities():
Código PHP:
$nickN htmlentities($_POST['nick'], ENT_QUOTES"UTF-8"); 
y cambia las antiguas variables de PHP, ya que PHP las renovo por que eran demasiada largas:

Código PHP:
$HTTP_POST_VARS $_POST
$HTTP_COOKIE_VARS 
$_COOKIE 
y siempre después de una coma, usa espacio, para tener un código más ordenado:

Código PHP:
      setcookie("usNick"$nickNtime() + 7776000); 
y para limitar el nick usa la función eregi() que sirve para permitir sólo algunos carácteres:
Código PHP:
if(!ereg("^[A-Za-z0-9]{5,30}$"$nickN ))  {
echo 
'El Nombre de usuario s&oacute;lo puede tener letras y n&uacute;meros.'
y así tienes menos probabilidades de que te hagan una injección html u otra.
Ahora mismo lo estoy probando y les cuento :D
  #6 (permalink)  
Antiguo 01/10/2010, 20:35
Avatar de Miguelithox  
Fecha de Ingreso: diciembre-2008
Ubicación: Viña del Mar
Mensajes: 287
Antigüedad: 15 años, 3 meses
Puntos: 7
Respuesta: Guardar Cookies en php

Cita:
Iniciado por VbOkonly Ver Mensaje
Me estoy perdiendo más, la asignación a nick no la entendi muy bien, pero como podria imprementar $_COOKIE o de $_GLOBAL[HTTP_COOKIE] ?
Pensé que no era tan dificil crear una cookie y reconocerla :(
Agradesco por tu ayuda.
Hacer sesiones con Cookies es fácil, sólo que el código que estás ocupando es muy antiguo, por eso es mejor hacer uno propio y en caso de que modifiquen las cookies tienes que hacer una comparación de algunas variables que tienes guardadas y compararlas con las que hay en la base de datos y si no se cumple la igualdad, no existen las cookies (o se borran). Pero si estás recién conociendo este lenguaje, es mejor que te empieces a familiarizar con el famoso "RegistroUsuarios32" o algo así. Con ese empezé yo.
  #7 (permalink)  
Antiguo 01/10/2010, 20:50
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

Ok, leeré ahora mismo RegistroUsuarios32, y les cuento, ya modifique lo que dijiste pero esta dura la pagina ... Muchas gracias !.
  #8 (permalink)  
Antiguo 04/10/2010, 14:16
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

Miren, sigue sin "hacerme caso" las cookies, busque intensivamente pero nada ... mire ejemplos de registrodeusuarios32 y tampoco ... les paso el codigo:

index.php (aca se llama a las cookies para la verificación):

Código PHP:
<?php
include("conexion.php");
include(
"login.php");

if(
$loginCorrecto)
{
echo 
"Bienvenido ".$nombreUsuarioL;
}
else
{
echo 
"Bienvenido visitante, el sistema no te ha reconocido";
}
?>
Este es el codigo de login.php:

Código PHP:
<?php
      $loginCorrecto 
false;
      
$idUsuarioL;
      
$nickUsuarioL;
      
$emailUsuarioL;
      
$nombreUsuarioL

if(isset(
$_COOKIE["usNick"]) && isset($_COOKIE["usPass"]))
{
$result mysql_query("SELECT * FROM usuarios WHERE nick='".$_COOKIE["usNick"]."' AND password='".$_COOKIE["usPass"]."'",$db);

if(
$row mysql_fetch_array($result))
{
setcookie("usNick",$_COOKIE["usNick"],time()+7776000);
setcookie("usPass",$_COOKIE["usPass"],time()+7776000);
$loginCorrecto true;
$idUsuarioL $row["id"];
$nickUsuarioL $row["nick"];
$emailUsuarioL $row["email"];
$nombreUsuarioL $row["nombre"];
}
else
{
//Destruimos las cookies.
setcookie("usNick""x"time()-3600);
setcookie("usPass""x"time()-3600);
}
mysql_free_result($result);
}
?>
Ya modifiqué algunos parametros que eran obsoletos por si las dudas ... para comprobarlos (uso firefox) miro las cookies de mi pagina y aparecen, pero creo que en el head del index (donde esta el "comprobador" de cookies no me los lee, creo.).

Que puede ser?
  #9 (permalink)  
Antiguo 04/10/2010, 15:21
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

el codigo de index.php esta en el header. el FORM login esta en el body.
  #10 (permalink)  
Antiguo 04/10/2010, 16:45
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Guardar Cookies en php

Hola, una pregunta, que navegador estas utilizando?, porque a mi hoy como por arte de magia, en un sitio que tengo, en chrome ni en internet explorer me almacenan las cookies; en firefox funciona normal.
Hasta ayer funcionaba todo normal, algo rarisimo.

Es mas hace unas horas mande un post:
http://www.forosdelweb.com/f23/no-fu...e-e-ie-847563/

Las cookies las formo así:
Código PHP:
Ver original
  1. setcookie("securitycod", $string, time()+3000,"/");
hasta ayer esto funcionaba, ahora no :|
  #11 (permalink)  
Antiguo 04/10/2010, 16:56
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

Prueba así, hay algunos navegadores ( hasta donde sé ) que por defecto guardan las cookies solos (sin la necesidad de agregarle el directorio en setcookie, se puede especificar donde guardarlas pero en distintos navegadores genera error
Código PHP:
setcookie("securitycod"$stringtime()+3000); 
Una pregunta, como las compruebas? ( capas puedo resolver mi dilema xD ).
  #12 (permalink)  
Antiguo 04/10/2010, 17:12
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Guardar Cookies en php

Comprobar si existe la cookie?
Código PHP:
Ver original
  1. $_COOKIE['securitycod']; //esto te da el valor de la cookie
  2. //haciendo un if
  3. if(!empty($_COOKIE['securitycod'])){
  4. $valorcookie = $_COOKIE['securitycod'];
  5. echo "no esta vacia y el valor es ".$valorcookie;
  6. }
  7. else{
  8. echo"esta vacia";
  9. }
  #13 (permalink)  
Antiguo 04/10/2010, 18:43
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

Bueno, algo parecido a esto pero no me funciona O.O

Código PHP:
<?php
      
      $loginCorrecto 
false;
      
$idUsuarioL;
      
$nickUsuarioL;
      
$emailUsuarioL;
      
$nombreUsuarioL

if(isset(
$_COOKIE["usNick"]) && isset($_COOKIE["usPass"]))
{
$result mysql_query("SELECT * FROM usuarios WHERE nick='".$_COOKIE["usNick"]."' AND password='".$_COOKIE["usPass"]."'");

if(
$row mysql_fetch_array($result))
{
setcookie("usNick",$_COOKIE["usNick"],time()+7776000"/");
setcookie("usPass",$_COOKIE["usPass"],time()+7776000"/");
$loginCorrecto true;
$idUsuarioL $row["id"];
$nickUsuarioL $row["nick"];
$emailUsuarioL $row["email"];
$nombreUsuarioL $row["nombre"];
}
else
{
//Destruimos las cookies.
setcookie("usNick""x"time()-3600"/");
setcookie("usPass""x"time()-3600"/");
}
mysql_free_result($result);
}
?>
Ni se que hacer .. estoy buscando pero en realidad nosé cual es el error.
  #14 (permalink)  
Antiguo 04/10/2010, 19:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Guardar Cookies en php

Hay algo de tu logica que no entiendo,
Código PHP:
Ver original
  1. setcookie("usPass",$_COOKIE["usPass"],time()+7776000, "/"); // aca creas una cookie con el valor de otra cookie??
Donde creas las cookies fuera del if? porque si las creas dentro el if nunca te va a dar true;
Código PHP:
Ver original
  1. if( isset($_COOKIE["usPass"]){
  2. setcookie("usPass","valorcookie", time()+7776000, "/");
  3. } // esto jamas se te va a procesar porque cuando llegas al if la cookie nunca esta creada.
  #15 (permalink)  
Antiguo 04/10/2010, 19:34
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

Aqui creo las cookies, el login.php (sirve para verificar):

ingresar.php
Código PHP:
<?php

      
include("conexion.php");
      

      if(
trim($_POST["nick"]) != "" && trim($_POST["password"]) != "")
      {
      
$nickN htmlentities($_POST['nick'], ENT_QUOTES"UTF-8");
      
$passN htmlentities($_POST['password'], ENT_QUOTES"UTF-8");
      
$result mysql_query("SELECT password FROM usuarios WHERE nick='$nickN'",$db);
      if(
$row mysql_fetch_array($result))
      {
      if(
$row["password"] == $passN)
      {
      
//90 dias dura la cookie
      
setcookie("usNick"$nickNtime()+7776000"/");
      
setcookie("usPass"$passNtime()+7776000"/");
      
?>
      Ingreso exitoso, ahora sera dirigido a la pagina principal.
      <SCRIPT LANGUAGE="javascript">
      location.href = "index.php";
      </SCRIPT>
      <?php
      
}
      else
      {
      echo 
"Password incorrecto";
      }
      }
      else
      {
      echo 
"Usuario no existente en la base de datos";
      }
      
mysql_free_result($result);
      }
      else
      {
      echo 
"Debe especificar un nick y password";
      }
      
mysql_close();
      
?>

El FORM de ingreso esta en el index, cuando se ingresa se crean las cookies y se instalan en el sistema.
Al cerrar la pagina y volver, en el head esta este codigo :

Código PHP:
<?php
include("conexion.php");
include(
"login.php");

if(
$loginCorrecto)
{
echo 
"Bienvenido ".$nombreUsuarioL;
}
else
{
echo 
"Bienvenido visitante, el sistema no te ha reconocido";
}
?>
Donde llama al archivo login.php que cuando valida las cookies, cambia el $loginCorrecto a true (es boolean) y tendría que mostrar finalmente echo "bienvenido ... "

Y eso es lo que no funciona :/
  #16 (permalink)  
Antiguo 04/10/2010, 21:49
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Guardar Cookies en php

Acabo de intentar con:
Código PHP:
<?php
include("conexion.php");
include(
"login.php");

if(
$loginCorrecto==true)
{
echo 
"Bienvenido ".$nombreUsuarioL;
}
else
{
echo 
"Bienvenido visitante, el sistema no te ha reconocido";
}
?>
Pero tampoco funciona ... me interrogué tambien si era el hosting ( es pago ) si la configuracion no permitía cookies ... pero es muy raro, ayer me aparecieron, y hoy aunque creo 100 usuarios y logeo 100 usuarios, ninguna cookie se crea ... ( uso firefox, pero no le veo el problema ... )

En teoría, no se crean las cookies y no se validan ...
usar $_SESSION seria mejor ?, no cargaria mucho el servidor?. Quiero usar cookies para utilizar los menos recursos del hosting.
  #17 (permalink)  
Antiguo 05/10/2010, 06:27
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Guardar Cookies en php

Para tu caso en concreto (logueo de usuario) creo que es infinitamente mas saludable utilizar sessiones.

Etiquetas: cookies
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:30.