Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

class para cookies

Estas en el tema de class para cookies en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola amigos estoy realizando un pagina en php pero ahora estoy utilizando clases, lo malo es que no si esta bien lo que estoy haciendo, ...
  #1 (permalink)  
Antiguo 28/02/2009, 19:51
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
class para cookies

hola amigos estoy realizando un pagina en php pero ahora estoy utilizando clases, lo malo es que no si esta bien lo que estoy haciendo, pero poco a poco me doy una idea en fin, he creado esta clase para la creación de cookies,
Código PHP:
<?php 
class COOKIE{
    public function 
__constructor (){
        
self :: SecionCookie ();
        }
    public function 
SecionCookie () {
        if ( !isset( 
$_COOKIE['secion'] ) ){
            
setcookie("secion"truetime() + 31536000);
            }
        }
    public function 
set $nom $val $time $path=""$Url="" $seguro=false){
        
self :: SecionCookie ();
        
setcookie($nom,$val,$time,$path,$Url,$seguro);
        }
    public function 
un_set $nom ) {
        
self :: SecionCookie ();
        unset( 
$_COOKIE[$nom] );
        }
    public function 
destroy (){
        
self :: SecionCookie ();
        unset ( 
$_COOKIE );
        
setcookie("secion"false);
        }
    public function 
get $nom ){
        
self :: SecionCookie ();
        return 
$_COOKIE [$nom];
        }
    public function 
is_set $nom ){
        
self :: SecionCookie ();
        return isset( 
$_COOKIE [$nom] );
        }
     
}

?>
public function destroy (){
self :: SecionCookie ();
unset ( $_COOKIE );
setcookie("secion", false);
}


el caso es que no se si esta bien poner unset en esta parte, para eliminar todas las creadas ,he echo algunas pruebas con este codigo pero a veces funciona y otras no,

lo hecho con esto mas o menos
Código PHP:
<?php
require_once("include/Class_Cookie.php");

if (isset(
$_POST['activa'])){
    if (isset(
$_POST['nombre'])){
        
COOKIE::set('nombreCook',$_POST['nombre']);
    }
    if ( 
COOKIE::is_set('secion')){
    echo 
COOKIE::get('nombreCook')."<br />";    
    echo 
"la cookie seccion esta activa";
    }else{
        echo 
"la cookie seccin no esta activa";
    }
}
if (isset(
$_POST['elimina'])){
        
COOKIE::un_set('nombreCook');
        echo 
COOKIE::get('nombreCook');
        if ( 
COOKIE::is_set('secion')){
            echo 
"la cookie seccion esta activa";
        }else{
            echo 
"la cookie seccin no esta activa";
        }
}

?>
<form name="form1" method="post" action="">
  <label>nombre
    <input type="text" name="nombre" id="nombre">
  </label>
  <label>
    <input name="activa" type="checkbox" id="activa" value="true">
    activa</label>
  <label>
    <input name="elimina" type="checkbox" id="elimina" value="true">
    elimina</label>
  <label>Enviar
    <input type="submit" name="Enviar" id="Enviar" value="Enviar">
  </label>
</form>
querría saber si esta bien ponerlo ha si o existe otra forma de eliminar las cookies que se hayan creado
gracias
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft

Última edición por Lynxcraft; 28/02/2009 a las 19:57
  #2 (permalink)  
Antiguo 28/02/2009, 20:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: class para cookies

Hola Lynxcraft,

Para eliminar una cookie tienes que ponerla con un tiempo pasado al actual para que sea eliminada por el explorador (adicional al unset).

Por otro lado te recomendaría re-trabajar en tu clase, hay muchas cosas que podrías mejorar, como por ejemplo no veo el caso de todo el tiempo llamar a self::SecionCookie().

Saludos
  #3 (permalink)  
Antiguo 01/03/2009, 03:48
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: class para cookies

hola GatorV si tienes razón con la función self :: SecionCookie (); no avía caído en cuenta XD bueno, aun me queda una duda por ejemplo si creo 5 cookies distintas en varias secciones de la pagina y las quiero eliminar de golpe, como las reconocería ??,por eso he creado la funcion destoy, pero no se si esta bien poner asi, para que cuando el usuario salga de la pagina todas las cookies creadas se destruyan y no tener que ir poniendo una por una ,

el codigo me quedaría mas o menos asi

Código PHP:
<?php 
class COOKIE{
    public function 
__constructor (){
        
self :: SecionCookie ();
        }
    public function 
SecionCookie () {
        if ( !isset( 
$_COOKIE['secion'] ) ){
            
setcookie("secion"truetime() + 31536000);
            }
        }
    public function 
set $nom $val $time=$path=""$Url="" $seguro=false){
        
setcookie($nom,$val,$time,$path,$Url,$seguro);
        }
    public function 
un_set $nom ) {
        unset( 
$_COOKIE[$nom] );
        
setcookie($nom'','','','','');
        }
    public function 
destroy (){
        unset ( 
$_COOKIE );
        
setcookie("secion"false);
        }
    public function 
get $nom ){
        return 
$_COOKIE [$nom];
        }
    public function 
is_set $nom ){
        return isset( 
$_COOKIE [$nom] );
        }
     
}

?>
solo me falta optimizar la funcion destoy XDXD
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #4 (permalink)  
Antiguo 01/03/2009, 11:20
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: class para cookies

Estimado, trata de revisar el estándar de codificación de Zend, ya que veo no estás siguiendo uno claramente (ni te digo que debes cuidar la ortografía, no puedes escribir "secion" ó "avia").

Por ejemplo:

Código PHP:
 <?php 
class Cookie
{
    public function 
__constructor()
    {       
        if (!isset( 
$_COOKIE['seccion'])){
            
setcookie("secion"truetime() + 31536000);
        }
    }
    public function 
set($nom $val$time=0$path=''$Url=''$seguro=false)
    {
       
setcookie($nom,$val,$time,$path,$Url,$seguro);
    }
    public function unset(
$nom)
    {
       unset(
$_COOKIE[$nom]);
       
setcookie($nom,'','','','','');
    }
    public function 
destroy()
    {
       unset( 
$_COOKIE );
       
setcookie("secion"false);
    }
    public function 
get($nom)
    {
       return 
$_COOKIE[$nom];
    }
    public function isset(
$nom)
    {
       return isset(
$_COOKIE[$nom]);
    }     
}
Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 01/03/2009, 11:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: class para cookies

Puedes tener un registro de las cookies en otra cookie y cuando llames a destroy eliminas las cookies que tengas guardadas.

Saludos
  #6 (permalink)  
Antiguo 01/03/2009, 14:44
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: class para cookies

gracias GatorV lo tomare en cuenta a ver como lo integro XDXD
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
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 06:39.