IPB

Welcome Guest ( Log In | Register )

2 Pages V   1 2 >  
Reply to this topicStart new topic
> Cookie help, Minden a cookiekról
Siluro
post 2005. Aug 15., 17:20
Post #1


Főpilóta
**

Group: haladó tag
Posts: 450
Joined: 05. April 19.
From: Magyarhon
Member No.: 950



Szóval az lenne a problémám, hogy egy ismerőssel hatalmas fejlesztésben vagyunk, de a legutóbb kapott feladaton elakadtam. A lényege amit tudnia kell, azaz, csinalni kell egy cookie kezelo osztalyt, amivel nagyon egyszerüen tudunk cookikat csinálni, törölni, módosítani. Eddig van meg. Hogyan tovább? Nem kódot kérek, hanem leírást, hogy mi hiányzik, mi kell még bele. Köszönöm előre is. Ja és a kód:
CODE

class Cookies {

    function Add($name, $value, $time)
    {
         SetCookie($name, $value, time()+$time, "/");
    }

    function Del($name)
    {
         global $_COOKIES;
         unset($_COOKIES[$name]);
    }

    function Set($name, $value)
    {
         global $_COOKIES;
         $_COOKIES[$name] = $value;
    }

    function IsSet($name)
    {
         global $_COOKIES;
         if (strlen($_COOKIES[$name]) > 0)
              return true;

         return false;
    }

}


--------------------
A Tutorial.hu fórum igazolt Főpilótája és Kvízmestere :)
Sose vitatkozz idiótákkal! Lesülyedsz az ő szintjükre és legyőznek a rutinjukkal!!!
Az életben a nyuszika az igazi jellem: Ott ül a fűbe, de mégse szívja!!
Go to the top of the page
 
+Quote Post
toxin
post 2005. Aug 15., 17:27
Post #2


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



global $_COOKIES;

ez minek a $_* szuperglobál tömbök bárhonnan elérhetőek a szkriptben gondolkodik.gif
http://hu.php.net/manual/hu/reserved.variables.php



This post has been edited by toxin: 2005. Aug 15., 17:36


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
BonD
post 2005. Aug 15., 17:34
Post #3


Segítség, lehugyoz a fa!
****

Group: törzstag
Posts: 1848
Joined: 05. April 25.
From: Magyarország / Kecskemét
Member No.: 966



Nem akarok hülyeséget mondani, de ha globálissá teszel egy egyébként is globális tömböt, akkor az hibás működést eredményez. Én konkrétan a session kezelés kapcsán olvastam, hogy iylen esetben a tömb értéke nem fog mentésre kerülni. Szóval használd csak simán a $_cookies-t! biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
fberci
post 2005. Aug 15., 18:56
Post #4


új tag
*

Group: tag
Posts: 25
Joined: 05. July 11.
Member No.: 1168



A Del() függvénynek nem az lenne a célja, hogy törölje a cookiet? Mert szerintem itt csak a programban törli, a felhasználó gépén nem. Ehhez elvileg a setcookie-t kéne meghívni csak a süti nevével, de gyakorlatban lejáratnak egy múlt idejű időpontot szokás meghatározni.

Ebben nem vagyok teljesen biztos (mivel nem találkoztam még ilyennel), de szerintem így van.


--------------------
Go to the top of the page
 
+Quote Post
BonD
post 2005. Aug 15., 20:24
Post #5


Segítség, lehugyoz a fa!
****

Group: törzstag
Posts: 1848
Joined: 05. April 25.
From: Magyarország / Kecskemét
Member No.: 966



Ha már annyira forszírozzuk ezt az osztály megoldást, akkor az IsSet() függvényt én úgy ahogy van kiszedném belőle, mert minek írsz függvényt egy már meglévő helyett, ami ráadásul ugyanazzal a névvel rendelkezik?


--------------------
Go to the top of the page
 
+Quote Post
TLoF
post 2005. Aug 15., 23:01
Post #6


bitwizard
****

Group: Admin
Posts: 1265
Joined: 03. April 28.
Member No.: 11



Akkor tegyük még hozzá, hogy a $_COOKIES tömb ugyan irható a user space-ből is csak nem szép dolog.

A másik pedig hogy igy ebben a formában az egész osztálynak nincs értelme smile.gif
Az add fügvényed hosszabb lett mint az eredeti parancs, és nem nyújt semmilyen extrát.

A dell fügvényed rossz. Nem a sütit törli.

A set fügvény hülyeség. Minek piszkálod a $_COOKIE tömböt? Attól a süti értéke nem fog változni. Max akkor lenne értelme, hogyha az add után beirnád a $_COOKIE -be is. Akkor süti beállítása után rögtön elérhető lenne a $_COOKIE -ban is a süti tartalma nem csak újra töltődés után.

Az isSet pedig már mint standard php parancs is létezik.


--------------------
Go to the top of the page
 
+Quote Post
BonD
post 2005. Aug 15., 23:15
Post #7


Segítség, lehugyoz a fa!
****

Group: törzstag
Posts: 1848
Joined: 05. April 25.
From: Magyarország / Kecskemét
Member No.: 966



Szvsz felesleges ez az egész osztályosdi... Szép dolog az OOP, de azért az echo()-t ne akarjuk már újra feltalálni! wink.gif


--------------------
Go to the top of the page
 
+Quote Post
toxin
post 2005. Aug 16., 07:49
Post #8


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



én kiszedtem hogy fölösleges mert ha ebből származtatja vagy erre építi majd a felhasználó azonosítást lásd 13-1 php fejlesztés felsőfokonból akkor meg van értelme szvsz növeli a kód olvashatóságát (bár az alábbi osztály nem az alap süti kezelést végzi hanem a kódolását és a verzió követést oldja meg)

CODE

<?php
 //
 // Chapter 13, pg 334-336
 //
 require_once 'Exception.inc';

 class Cookie {
   private $created;
   private $userid;
   private $version;
   private $td;
   private $cookie;

   private $cypher     = 'blowfish';
   private $mode       = 'cfb';
   private $key = 'choose a better key';

   private $cookiename = 'USERAUTH';
   private $myversion  = '1';
   private $expiration = '600';  
   private $warning    = '300';
   private $glue = '|';

   
   public function __construct($userid = false) {
     $this->td = mcrypt_module_open ($this->cypher, '', $this->mode, '');
     if($userid) {
       $this->userid = $userid;
       return;
     }
     else {
       if(array_key_exists($this->cookiename, $_COOKIE)) {
         $buffer = $this->_unpackage($_COOKIE[$this->cookiename]);
       }
       else {
         throw new AuthException("No Cookie");
       }
     }
   }
   public function set() {
     $cookie = $this->_package();
     set_cookie($this->cookiename, $cookie, 0);
   }
   public function logout() {
     set_cookie($this->cookiename);
   }
   public function validate() {
     if(!$this->version || !$this->created || !$this->userid) {
       throw new AuthException("Malformed cookie");
     }
     if ($this->version != $this->myversion) {
       throw new AuthException("Version mismatch");
     }
     if (time() - $this->created > $this->expiration) {
       throw new AuthException("Cookie expired");
     } else if ( time() - $this->created > $this->resettime) {
       $this->set();
     }
   }

   private function _package() {
     $parts = array($this->myversion, time(), $this->userid);
     $cookie = implode($glue, $parts);
     return $this->_encrypt($cookie);
   }
   private function _unpackage($cookie) {
     $buffer = $this->_decrypt($cookie);
     list($this->version, $this->created, $this->userid) = explode($glue, $buffer);
     if($this->version != $this->myversion ||
        !$this->created ||
        !$this->userid)
     {
       throw new AuthException();
     }
   }
   private function _encrypt($plaintext) {
     $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
     mcrypt_generic_init ($this->td, $this->key, $iv);
     $crypttext = mcrypt_generic ($this->td, $plaintext);
     mcrypt_generic_deinit ($this->td);
     return $iv.$crypttext;
   }
   private function _decrypt($crypttext) {
     $ivsize = mcrypt_get_iv_size($this->td);
     $iv = substr($crypttext, 0, $ivsize);
     $crypttext = substr($crypttext, $ivsize);
     mcrypt_generic_init ($this->td, $this->key, $iv);
     $plaintext = mdecrypt_generic ($this->td, $crypttext);
     mcrypt_generic_deinit ($this->td);
     return $plaintext;
   }
   private function _reissue() {
     $this->created = time();
   }
 }
/* vim: set ts=2 sts=2 ai bs=2 expandtab: */
?>



szóval az ebbe szereplő set_cookie(*); -kat le lehet váltani az alap süti kezelő osztály parancsaira bár se rövidebb se jobb nem lesz tőle az is igaz smile.gif

This post has been edited by toxin: 2005. Aug 16., 08:17


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
BlackY
post 2005. Aug 16., 09:09
Post #9


Commander 1337
*****

Group: törzstag
Posts: 5506
Joined: 03. May 25.
From: Szeged
Member No.: 38



Siluro:
CODE

class Cookies
   {
   function CookieAdd($name, $value, $time = 3600)
       {
        SetCookie($name, $value, mktime()+$time, "/");
       $_COOKIE[$name] = $value;
       }

   function CookieDel($name)
       {
       setcookie($name, '', mktime()-3600*24);
       unset($_COOKIES[$name]);
       }

   function CookieSet($name, $value)
        {
        $this->Add($name, $value);
        $_COOKIES[$name] = $value;
        }

   function CookieVal($name)
       {
       if(!IsSet($_COOKIE[$name]))
             {
             return false;
             }
       return $_COOKIE[$name];
       }

   function CookieIsSet($name)
        {
        if(!Empty($_COOKIE[$name]))
             {
             return true;
             }
        return false;
        }
   }

De amúgy télleg felesleges tongue.gif

BlackY


--------------------
BlackY
Blog
Új téma vagy tutorial
Szerkesztő | Törzstag
--
Hogyan kérdezzünk?
Üvöltsük meg együtt a holdat: Wuff :D
Go to the top of the page
 
+Quote Post
toxin
post 2005. Aug 16., 09:28
Post #10


,..,
****

Group: törzstag
Posts: 3130
Joined: 04. August 17.
Member No.: 437



akkor már

CODE

function CookieAdd($name, $value, $time = 3600)
      {
       SetCookie($name, serialize($value), mktime()+$time, "/");
      $_COOKIE[$name] = $value;
      }

function CookieGet($name)
      {
      return unserialize(stripslashes($_COOKIE[$name]));
      }
?>



vagy valami ilyesmi smile.gif


--------------------
Bugs, bugs, bugs. If I had them all in jugs,
I'd dig, dig, dig, till a big, big hole was dug, dug, dug, dug,
And that would be the end of the bug song.
I'm gonna dig, dig, dig, dig, dig, dig, dig, dig, dig .....

The Bug Song - Charles Thomas "Stompin' Tom" Connors
Go to the top of the page
 
+Quote Post
BonD
post 2005. Aug 16., 10:41
Post #11


Segítség, lehugyoz a fa!
****

Group: törzstag
Posts: 1848
Joined: 05. April 25.
From: Magyarország / Kecskemét
Member No.: 966



Azért születnek itt a megoldások a felesleges dolgokra! biggrin.gif Asszem belefogok egy olyan osztály írásába, ami dolgokat ír a képernyőre! biggrin.gif biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
Siluro
post 2005. Aug 16., 13:45
Post #12


Főpilóta
**

Group: haladó tag
Posts: 450
Joined: 05. April 19.
From: Magyarhon
Member No.: 950



Köszi a helpeket. Egy olyan fejlesztésbe vagyok amihez ez kell mindenképpen, de hogy mi az majd meglátjátok ha elkészült, vagy befuccsolt smile.gif Mégeccer thx!!


--------------------
A Tutorial.hu fórum igazolt Főpilótája és Kvízmestere :)
Sose vitatkozz idiótákkal! Lesülyedsz az ő szintjükre és legyőznek a rutinjukkal!!!
Az életben a nyuszika az igazi jellem: Ott ül a fűbe, de mégse szívja!!
Go to the top of the page
 
+Quote Post
BlackPrince
post 2005. Aug 17., 03:45
Post #13


Altartalékos
****

Group: törzstag
Posts: 1930
Joined: 03. December 8.
Member No.: 213



QUOTE(toxin @ 2005. Aug 16., 10:28)
akkor már
...stripslashes...

Ha mar nagy dolog akkor illik a program elejen rekurzivan vegigszaladni ezeken a szuperglobalis tombokon is kiescapelni oket. Es maris securebb a progi. wink.gif

This post has been edited by BlackPrince: 2005. Aug 17., 03:46
Go to the top of the page
 
+Quote Post
C.o.D.er.
post 2005. Dec 7., 19:44
Post #14


tag
**

Group: tag
Posts: 221
Joined: 05. November 20.
From: Martfű
Member No.: 1579



Sziaztok. Én egy szavazót csináltam de ott van a baj hogy akár 1 000 000* is szavazhatok rá. Ezért azt szeretném ha csinálna egy sütit amiben meg van adva a szavazás témája és az hogy már szavazott ebben témában. És neki az jöjjön ki hogy Te már nem szavazhatsz! enyi aszem.
ui: Ja és erről egy kis tutor is elég, ami elmond minden sütivel foglalkozó és kapcsolatos fügvényeket.

This post has been edited by C.o.D.er.: 2005. Dec 7., 19:47


--------------------
Ha valaki még egyszer azzal jön, hogy használja macroszar(azaz microsoft) legújabb tetvét, felkötöm egy lámpavasra!
Go to the top of the page
 
+Quote Post
BlackY
post 2005. Dec 7., 20:24
Post #15


Commander 1337
*****

Group: törzstag
Posts: 5506
Joined: 03. May 25.
From: Szeged
Member No.: 38



http://www.php.net/manual/hu/features.cookies.php

Felhasználói kommenteket is érdemes olvasgatni wink.gif

BlackY


--------------------
BlackY
Blog
Új téma vagy tutorial
Szerkesztő | Törzstag
--
Hogyan kérdezzünk?
Üvöltsük meg együtt a holdat: Wuff :D
Go to the top of the page
 
+Quote Post

2 Pages V   1 2 >
Reply to this topicStart new topic

 



Lo-Fi Version Time is now: 2012. May 21. - 19:57

Harder - webdesigner blog | keresőoptimalizálás | honlapkészítés