Nézzük meg, hogy az előző héten elméletben bemutatott flash-cookie-kat miként lehet a gyakorlatban használni. Ehhez legalább két, szép megoldáshoz három programozási nyelv ismeretére lesz szükség: PHP – vagy bármely más szerver-oldali szkript-nyelv -, ActionScript – a flash működésének beállításához – és JavaScript.

A gyakorlati megoldás pontokba szedve:

Elméleti áttekintő

Minden weboldal, ami munkameneteket használ, az első betöltés előtt helyezi el a cookie-kat a böngészőben, valamilyen alapértelmezett értékkel feltöltve. Az ezt követő betöltések alkalmával a böngésző már a kérésben elhelyezi a cookie-t, így biztosítva, hogy a weboldal képes legyen a felhasználó munkamenetét követni.
Azt szeretnénk elérni, hogy sikeresen vissza tudjuk állítani egy cookie értékét abban az esetben is, ha a felhasználó letörli azokat a böngészőből, vagy akár ugyanazt a munkamenetet tudjuk folytatni egy másik böngésző használata esetében is.
Erre használjuk fel a flash objektumok tárolásának lehetőségét, mivel ez böngészőfüggetlen és megfelelően sok adat tárolására képes. Plusz előny, hogy – egyelőre – elég körülményes az eltávolításuk.

A megvalósításhoz szükség lesz:

  • egy html-részletre, ami a flash beágyazását végzi
  • a flash-re, ami az adatokat menti el
  • egy rövid php-szkripre
  • és egy kis javascript-re

A html kódunkban bárhol elhelyezzük a flash-t beágyazó részletet, és a javascript-et. Amennyiben a többi file-t a megfelelő helyre tettük, a megoldás önjáróvá válik.

HTML

<object
    classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
    width="1"
    height="1"
    id="flash-cookie"
    align="middle">
  <param name="movie" value="http://flash.cookie.local/flashCookie.swf?v=t35tc0ok13f0rm3&o=swf" />
  <param name="quality" value="high" />
  <param name="bgcolor" value="#ffffff" />
  <param name="allowScriptAccess" value="always" />
  <embed
      src="http://flash.cookie.local/flashCookie.swf?v=t35tc0ok13f0rm3&o=swf"
      quality="high"
      bgcolor="#ffffff"
      width="1"
      height="1"
      name="flash-cookie"
      align="middle"
      allowScriptAccess="always"
      type="application/x-shockwave-flash"
      pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

Nekem a fenti kód vált be beágyazáshoz, mindenki igazítsa saját szája íze szerint. Az első és ajánlott módosítás azonban a következő részlet, amivel a t35tc0ok13f0rm3 állandó értéket cserélhetjük dinamikusan a megfelelő előkészítés és ellenőrzés után.

http://flash.cookie.local/flashCookie.swf?v=<?php echo $new_session_id ?>&o=swf

Ellenkező esetben az összes felhasználó ugyanazt a munkamenetet érné el, ami nem kis kuszaságot tud előidézni.

PHP

<?php
$fname = '1x1.gif';
 
session_name('flashCookieBrowser');
session_id($_REQUEST['v']);
session_start();
 
header('Content-Type: image/gif');
header('Content-Length: ' . filesize($fname));
 
$f = fopen($fname, 'rb');
fpassthru($f);

A php szerepe mindössze annyiban áll, hogy beállítja a kért munkamenet-azonosítót, és visszaad egy 1×1 pixel méretű képet. Ez a kép nem kerül megjelenítésre, ezért csak 1×1 pixel és az is átlátszó.
Akkor járunk jól, ha ez a szkript az egyetlen, ami képes követlenül megváltoztatni a süti értékét, a többi oldal pedig mind csak olvassa azt, és dolgozik vele.
A fenti kódot igazából bármelyik – az oldalon megjelenített – képre rádolgozhatjuk, de azzal a későbbi témaváltásokat nehezítjük meg.

A második oldalon van a megoldás lényegi része, az ActionScript a flash-hez és a rövid JavaScript, ami az érték-beállító képet hívja be.

Oldalak: Következő oldal