cookie létrehozása paraméter esetén

silytb képe

Sziasztok!
Szeretnék cookiet lementeni egy drupal 6-os site mindegyik aloldaláról, ahol az URL megkap egy bizonyos paramétert. Ez a paraméter (nevezzük 'ajanlo'-nak) az oldalt mások számára ajánló user ID-jét tartalmazza, ergo egy bannerlinket hozok létre, ami tartalmazza a user saját ID-jét (ezt php-val állítom elő). Ha ezt kiteszi a user valahova és erre kattintva nyitja meg egy látogató a site-ot, akkor lementődik egy cookie, ami tartalmazza az 'ajanlo' paraméter értékét. A regisztrációs formoknál figyelem, hogy van-e ilyen nevű cookie, és ha van, akkor megnézem, hogy az értéke az megegyezik-e egy létező user ID-jével, ha igen, akkor a sütiben levő userId-val rendelkező user lesz az ajánlója, meghívója.

Tehát egy paraméterezett link kb így nézne ki:
http://oldalam.hu/valami?ajanlo=123456

A süti mentése meg így:

function saveCookie() {
  if (isset($_GET['ajanlo'])) {
	if ($_GET['ajanlo'] > 0) {
		if ($referrer = db_result(db_query('SELECT uid FROM users WHERE uid = %d', $_GET['ajanlo']))) {
			setcookie('ajanlo', $_GET['ajanlo'], time()+60*60*24*30);
		}
	}	  
  } 
}

A regisztrációs form-nál a süti vizsgálat egy form_alter függvénnyel történik modulból, azt nem részletezném, az megy.

Tudok mindent, csak azt nem, hogy oldjam meg, hogy a site bármelyik oldalánál mentődjön le a süti, ha az URL-ben benne van az 'ajanlo' paraméter.

Két megoldást látok erre, de nem tudom a pontos kivitelezést, hogy minél inkább "drupal-barát" legyen:
1. template.php be kéne betennem a saveCookie() függvényt, majd a page.tpl.php-ben valahogy meghívni.

2. egy modult kéne készíteni, csak nem tudom, hogy milyen hook-ot kell használni, és pontosan hogy nézne ki a module fájl.

Ha valaki meg tudná mondani, hogy melyik megoldást használjam, és pontosan hogyan, azt nagyon megköszönném. Esetleg, ha más lehetőség is van, azt is szívesen fogadom.
Köszönöm.

Drupal verzió: 
silytb képe

Ha készítek egy modult, amiben csak egy hook_init() lesz:

function savecookie_init() {
  if (isset($_GET['ajanlo'])) {
	if ($_GET['ajanlo'] > 0) {
		if ($referrer = db_result(db_query('SELECT uid FROM users WHERE uid = %d', $_GET['ajanlo']))) {
			setcookie('ajanlo', $_GET['ajanlo'], time()+60*60*24*30);
		}
	}	  
  } 
}

ez így jó lesz? mármint, akkor minden oldalnál lementi a cookie-t, ha URL-ben megkapja az ajanlo parametert?

0
0
aruna képe

tűnik az elgondolásod, én még nem csináltam ilyet, nem látom át a buktatóit.

Szerintem érdemes saját modult írni, ha kellően önálló a feladat (ez annak tűnik) és ha több függvényt is használsz.

A hook_init mindig lefut, az oldal betöltődésekor, ide be tudod rakni a süti ellenőrzését és lerakását.

> "A regisztrációs form-nál a süti vizsgálat egy form_alter függvénnyel történik modulból"

Ezt a kódot ^^^ is ebbe a modulba pakolnám, hogy egy helyen legyenek az összetartozó dolgok.

1
0
silytb képe

köszönöm a választ.
megfelelően működik a hook_init-tel a modul.

0
0