Vissza link referer használatával
Gyakran látni a weboldalakon “vissza” linkeket. Általában ezek arra a helyre mutatnak, ahonnan valószínűleg jöhetett a felhasználó, rosszabb esetben javascript-el vannak megoldva. php-vel szépíthetünk egy kicsit ezen.
A feladat egyszerű: amennyiben a felhasználó az oldalon “belülről” (a domain névről, jelen esetben) jött, akkor ténylegesen az előzőleg látogatott oldal linkjét tesszük ki, ellenkező esetben egy linket az oldalunk nyitólapjára.
Jó esetben rendelkezésünkre áll a Referer (a HTTP protokoll szerint a “hivatkozó” oldal címe), méghozzá a SERVER szuperglobális tömb HTTP_REFERER elemeként. Viszont mi nem az url-re, hanem a domain névre vagyunk kíváncsiak, így szükségünk lesz egy ilyenre:
1 2 3 4 5 6 7 8 9 | function getHostFromUrl($url) { $url = preg_replace('/^[\\w]{0,10}?:\/\//', '', $url); while(($newUrl = dirname($url)) != $url && $newUrl != '.') { $url = $newUrl; } return $url; } |
Ez a függvény egy url-ből kiszedi a domain nevet (pl.: http://www.tutorial.hu/letoltes => www.tutorial.hu), és visszaadja azt. Ehhez még írunk egy másik függvényt, és már készen is vagyunk.
1 2 3 4 5 6 7 8 | function fromDomain() { if(getHostfromUrl(@$_SERVER['HTTP_REFERER']) == DOMAIN) { return true; } return false; } |
A DOMAIN konstanst én egy config.php-ben hozom létre, így egy esetleges költözéskor biztosan nem felejtjük el átírni:
1 | define(DOMAIN , 'www.tutorial.hu'); |
És akkor most jöjjön a lényegi rész:
1 2 3 4 5 6 7 8 | if(fromDomain()) { print '<a href="' . $_SERVER['HTTP_REFERER'] . '">Vissza</a>'; } else { print '<a href="A kezdő lapod címe">Vissza a főoldalra</a>'; } |
A scriptnek azonban van azonban egy buktatója: néhány böngésző egyáltalán nem küldi el a referer-t, néhánynál pedig plusz szolgáltatásként ezt lehet módosítani vagy letiltani és ebben az esetben mindig a főoldalra küld a script.
Kapcsolódó bejegyzések:
Amikor regisztrálsz egy weboldalon, az oldal általában leellenőrzi, hogy a beírt e-mail címed szabályos formátumú-e. Ehhez szükségünk van egy sztringre (pl.: $em …
Az alábbi JavaScript kód segítségével könnyedén ellenőrizhetjük, hogy a megadott e-mail cím formailag helyes-e. A function TRUE vagy FALSE értékkel tér vissza. ( …
Bizonyára sokszor megesett már veletek is, hogy egy végtelen nagyságú tömböt objektummá szerettetek volna alakítani. Ez a megoldás rendkívül hasznos, s gyakran …
Ha csak úgy kiteszed egy lapra a linkedet, előbb vagy utóbb (inkább előbb) megtalálnak a spamrobotok és telenyomják a mailboxodat egy rakat kéretlen levéllel. Ha …
A minap ráfutottam arra, hogy a szokásos számos lapozó helyett (1-10 || 11-20 … stb ) ABC-s kell a megrendelőnek. Az adatbázisában szereplő személyeket akarja …

Tweet This
Share on Facebook
Digg This
Save to delicious
Stumble it
RSS Feed