Category Archives: php

php átirányítás mod_rewrite nélkül

Mindenkivel előfordulhat, hogy olyan környezetben szeretne átirányítgatni, ahol a mod_rewrite nem elérhető.

Nézzük szépen végig az eseteket és az alkalmazható orvosságot.

A legegyszerűbb eset, amikot egy adott URL-t szeretnénk új helyszínre átpasszolni.
Orvosság: php fájl feltöltése a régi helyére az alábbi tartalommal

<?php
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.új-helyszín.hu" ); 
?>

Bonyolítsuk a dolgot, és játszunk olyat, hogy a mappa nevű mappára érkező lekéréseket szeretnénk mondjuk az új helyszínre átküldeni.
Hozzunk létre mondjuk egy redirection.php fájlt az alábbi tartalommal és include-dal meghívjuk a szkript első sorában.

<?php
if(stristr($_SERVER['REQUEST_URI'], '/mappa/')){
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.új-helyszín.hu/");
exit();
}
?>

Kitaláljuk, hogy szeretnénk a www vs. nem-www problémát egyszer és mindenkorra tisztázni, ezzel egységesítve a bejövő linkek támogatását és a duplikált tartalmak egy részét megszűntetve.
Szeressük jobban a www nélküli verziót és az előbb felvázolt redirect.php-be most tegyük ezt a tartalmat.

<?php  
if(stristr($_SERVER["HTTP_HOST"], 'www')){

header("HTTP/1.1 301 Moved Permanently"); header("Location: http://honlapom.hu/" . $_SERVER["REQUEST_URI"]); exit(); } ?>

De van, aki a www-t szereti, kedvezzünk nekik is egy kicsikét.

<?php  if(!stristr($_SERVER["HTTP_HOST"], 'www')){
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.honlapom.hu/" . $_SERVER["REQUEST_URI"]);  
exit();  } 
?>

További kellemes napot!

Click fraud, avagy védd az AdSense fiókodat stílusosan

Röviden összefoglalva a click fraud az a jelenség, amikor egy személy, vagy egy program rossz szándékkal egy fizetett hirdetésre kattint. A jelenség motiváló tényezőjének boncolgatását inkább a pszichológusokra bíznám, inkább valami másra koncentrálnék az elkövetkezőkben.

Egy-két oldalt és prezentációt átnézve egyre inkább úgy tűnik számomra, hogy az ipari méretű csalások mögött leginkább robot hálózatok állnak. Az oldalletöltések azonos IP-ről egyszerre akár több operációs rendszert azonosítva is érkezhetnek.

click fraud

forrás

A probléma ezzel a jelenséggel az, hogy vétlen hirdetés publikálók is áldozatául eshetnek a Google válaszának, az AdSense fiók felfüggesztésnek.

Pár óra alatt azonban sikerült valamiféle dögös megoldást összeeszkábálnom, amit így utólag végiggondolva nem sok teret fog engedni a click fraud kártékony jelenségének.

Első lépésként bemutatnék egy képzeletbeli AdSense kódot, hogy mindjárt bele is kezdhessünk hirdetői fiókunk biztonságosabbá tételébe.

<script type="text/javascript">
google_ad_client = "pub-xxxxxxxxxxxxxxxx";
google_ad_slot = "xxxxxx";
google_ad_width = 234;
google_ad_height = 60;
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

Így néz(ne) ki a te oldaladban is egy Google hirdetés, és a forráskód megjelenítésével ez bárki számára hozzáférhető. Kimásoltam az erre a domainre dedikált kódot, majd beillesztettem egy másik oldalamba és ott is megjelent a hirdetés. Itt már kezdődnek is a gondok. Ha bárki rossz szándékkal kimásolja a javascriptet és bárhová beilleszti, szabadon kattingathat, anélkül, hogy ez neked bármilyen (webstatisztika) módon is feltűnhetne.

Ez a gondolatmenet elvisz minket a legfontosabb lépéshez. A javascript külső, védett fájlba való átmozgatásához.

<script type="text/javascript" src="adsense-kod.js">
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

Ezt követően az adsense-kod.js-be helyezzük a kódnak ezen részletét:

google_ad_client = "pub-xxxxxxxxxxxxxxxx";
/* 234×60, létrehozva 2008.03.01. */
google_ad_slot = "xxxxxx";
google_ad_width = 234;
google_ad_height = 60;

Ezzel a lépéssel az AdSense kód külső fájlba került, de a javascript direkt elérését még nem akadályoztuk meg. Használjuk erre az hotlinking ellen is szükséges .htaccess kódot, a következő formában.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?seo.i-connector.com(/)?.*$ [NC]
RewriteRule .*\.(js)$ http://seo.i-connector.com/ [R,NC]

Ezáltal a .js kiterjesztésű fájlok csak a második sorban specifikált domain fájljai számára lesznek elérhetőek. Direkt eléréskor a harmadik sorban lévő URL lesz az átirányítás végállomása.

Következzék a második lépés, amely során aktív kattinós IP adatgyűjtésbe fogunk kezdeni. Az oldalad kódjában a Google hirdetést ilyen formán építsd be.

<form method="post" action="" id="ads">
<div class="ads">
<script type="text/javascript" src="adsense-code.js">
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
</form>

Lesz tehát egy ajax posztoló form, amely tartalmazza a hirdetés kódját.

A hirdetést taralmazó oldal head részébe kérlek illeszd be ezt a három sort, és már majdnem készen is leszünk.

<script src="mootools.js" type="text/javascript"></script>
<script src="control.js" type="text/javascript"></script>
<?php require "ads-controller.php" >

Amint a három fájlon szépen végigmentünk, addigra a védelem össze is áll (tartalmuk lementésekor kérlek nagyon ügyelj arra, hogy azt a szükséges fájlkiterjeszés megadásával illeszd az oldaladba).

mootools.js
Mootools.net-ről szabadon letölthető javascript keretrendszer.

control.js
Az AdSense hirdetést tartalmazó ads class-szal azonosított div felett végrehajtott egérkattintás (mousedown esemény) válaszául a div-et 800 milisecundum alatt teljesen átlátszóvá transzformálja, valamint vezérli az ajax posztolást az ip-log.php fájl futtatásaként.

Az ip-log.php fájl fogja végezni a statisztikai adatgyűjtést gyűjtést. A benne meghatározott limit változóval ($limit=1000;) indirekt módon szabályozható, hogy hányadik kattintást követően kerüljön a logfájl törlésre, azaz ismét kattinthatóvá válnak a hirdetések a korábban már kattintók számára.

Az indirekt szabályozás abból áll, hogy a logfájl mérete kerül összehasonlításra a limit változóval. Egy IP körülbelül 13 byte. 1000 osztva 13-mal durván 75 kattintás. Azt gondolom a logfájl törlésésére olyan nagyon égető szükségünk nincs is, hiszen a visszatérő látogatóid jellemzően a tartalmadra kíváncsiak, nem is igazán a hirdetések érdeklik őket, de a szkripted futását a fájlméretének növekedésével arányosan lassítani fogja, tehát inkább a fájlméret alapján válassz limitet, mintsem a kattintások száma alapján.

ads-controller.php
Működése roppant mód egyszerű, ha a látogató hirdetési kattantása miatt a logfájlba került, akkor az oldal töltődésekor eszközli a hirdetés eltűnését.

<script type="text/javascript">
window.onload = function()
{ new Fx.Style( "ads", ‘opacity’, {duration: 1000} ).start(1,0);}</script>

A szkript működését ezen a demo oldalon megtekintheted.

Kérlek, hogy ne kattints a hirdetésre, helyette Google Ads képre kattintva ugyanazt a hatást éred el!

Nyilatkozat:

  • a Google AdSense felhasználási feltételeit nem ismerem, ha valamelyik pontjával meglátásod szerint a megoldás ütközik kérlek tudasd velem,
  • a mootools hajlamos szkript ütközésre,
  • semmiért semmilyen felelősséget nem vállalok.

Ha a posztomat végig bírtad olvasni és megértetted, javaslom, hogy nyiss egy sört és dőlj hátra, mert rászolgáltál. 🙂

További kellemes napot kívánok!