Хакове за Referring Links widget
Referring Links набира все по-голяма популярност. Потребителите му до момента са към 300 сайта, 80% от които са гръцки. И въпреки многото заявки в секунда към сървъра, още успявам да съм на споделен хостинг. В тази статия ще споделя с читателите си няколко хака, които могат да са ви полезни. Повечето от тях не искам да ги знаят всички потребители ;)
1. Как да махнем търсачките от резултатите?
Започваме с нещо много просто и то е как в резултатния списък да няма търсачки. За целта просто трябва да баннем всички ключови думи на търсачки. Аз лично предпочитам да виждам колко хора идват от търсачките.
<script type="text/javascript">
var banned="google,yahoo,bing,search,feed,directory";
</script>
<script src="http://referringlinks.com/script.js" type="text/javascript"></script>
2. Как да махнем връзката „още препратки“?
Това вече си е хак, за който простосмъртните не знаят. Нямам особен интерес това да се премахва, защото никой няма да отива на страницата на инструмента. За целта се добавя предварително определен код в CSS стиловете на сайта.
li.more {display:none;}
3. Как да се показва точно един резултат?
Ако искате да да показвате само един резултат, тоест този, от който получавате най-много посетители, тогава изпълнявате точка две (премахвате бутона „още препратки“) и използвате код с параметър на links=1.
<script type="text/javascript">
var links=1;
</script>
<script src="http://referringlinks.com/script.js" type="text/javascript"></script>
4. Как да направим списъкът да не се вижда?
Има потребители, които не искат да използват инструмента като widget, а просто като статистически такъв. За целта трябва просто да се скрие целият резултат, примерно чрез CSS и да се запомни адресът на статистиката.
<div style="display:none">
<script src="http://referringlinks.com/script.js" type="text/javascript"></script>
</div>
Може да искате списъкът да се вижда само на точно определена страница, но в същото време да се отчитат референциите към всички страници на сайта. За целта на всички страници добавяте скрития код, а на страницата, която е за референциите, добавяте стандартния такъв. На тази страница, примерно, може да направите и да се показват максималния брой връзки (20).
Referring Links вече и с българска версия
Крайно време беше да направя и българска версия на скрипта ми за препращащи връзки Referring Links. Това, както вече е известно, ми е дипломната работа, която, ако не ми мине котка път, ще трябва да защитавам пред комисия на 7-ми Юли. Едно от изискванията е скриптът ми да има българска версия. А така или иначе трябваше да се направи някога, защото 80% от потребителите са български сайтове.
За тези, които не знаят, Referring Links е притурка (widget) за сайтове, която показва от къде и колко посещения получава сайтът Ви. Работи на всякакви платформи и браузъри. Скриптът е изключително бърз и оптимизиран. Вече сериозен брой сайтове го използват и се надявам този успех да продължи и за напред. На мен лично ми е много полезен и вече не мога без неговите данни.
До скоро системата беше в „Beta“ версия. Вече не е – всички основни проблеми са отстранени. Проектът е на точно една година и честно казано се сблъсках със страшно много проблеми по време на реализацията му. Изключително сложен скрипт, стотици реда код и много проблеми. За всичко обаче се намери решение с времето. Знаех, че ще е сложно, но не съм и предполагал колко сложно ще излезе в същност.
Това е един некомерсиален проект, от който научих много, страшно много. Научих неща за уеб програмирането, които не могат да се прочетат в книги и подобни. Неща, които много хора биха казали, че са невъзможни. Научих, че JavaScript и PHP са велики езици, с неподозирано богатство от функции и възможности. Научих много и за HTTP протокола, изключително важна част от всеки уеб проект.
Скриптът вече работи и се кешира на всяко ниво от трислойната архитектура. Работи на споделен хостинг, но дори всички български сайтове да си го сложат, няма да отчете съществено натоварване, защото изразходва само и единствено трафик, който е на теория е неограничен. Преди няколко дни успях да реша и най-големия проблем – забавянето на някои сайтове, с инсталирана притурката.
Сега се надявам всичко да е наред. Може да има малко правописни грешки в превода и леки бъгове, но ще ги оправя, като попадна на тях. В момента ме чака голямо писане, защото всичко трябва да се документира, а нещата изобщо не са малко. Приканвам който иска – да изпробва скрипта – не боли, нищо не губите, а и винаги може да го махнете. Приемам съвети за бъдещата му реализация.
За тези, които искаха повече данни да се показват – отказах се. Не мисля да го превръщам в статистически инструмент. Главната идея е да е widget и за сега ще си остане такъв. Замислям в скоро време да направя и widget за WordPress, който да се инсталира с един клик през системата и да се настройва през нея. Сега от WordPress още повече улесниха този процес.
Ето българската версия на сайта на инструмента. Дано Ви е полезен.
Referring Links.com – Добавено кеширане
Referring Links скриптът взе доста да товари хостинга, затова се принудих да добавя кеширане на изходните резултати. Задачата изобщо не беше лесна, защото кеширането не е стандартно, а трябваше да се кешират JavaScript файлове. Просто ситуацията не е много обичайна.
Както и да е – справих се някак си, въпреки че съм нов в PHP и главата ми още е омотана с някои други видове езици и стандарти. Базата данни на скрипта надмина 140,000 записа в най-голямата си таблица. Там се съхраняват IP-адресите на всички реферали през последните 30 дни.
Според мен проблемът в натоварването е именно заявката, която извлича и групира резултатите. По репортите от host bulgaria не може много да се разбере къде точно е проблемът, защото срещу SQL ми пише натоварване 0.0, а при мен друго, освен сложната заявка, не товари.
Сега всеки сайт си има JavaScript файл с рефералните му сайтове и посещенията от тях. Този файл се обновява веднъж на ден и се вика само той. Базата данни също се чисти веднъж да ден от стари данни. Това са реферали преди 30 и повече дни. Така системата прави заявки само при отчитане на нов реферал.
Тези заявки само добавят информация и са бързи. При подобни кеширания, обаче, има един момент в сигурността, който много често се отминава. Кашираният файл обикновено се отваря с PHP функцията fopen(). Налага ни се програма от вида: $handle = fopen(„path/to{$_GET['filename']}.html“, „r“);
Ако променливата ‘filename’ е замърсена, един нарушител може да обходи файловата система с вкарване на низове от рода: „../../../../another/path/to/file%00„. Днес не се бях сетил за това, а е много опасно. В последствие подсигурих с регулярен израз валидността на входните данни при подобен вид отваряния на файлове.
Сега остава да се оглеждам за бъгове след последните промени. До сега скриптът не е спирал да работи, въпреки коренните си промени, вече на няколко пъти и натоварването. Дано и за в бъдеще не се случват проблеми, които да наложат спирането му. Днес ограничих заявките към базата с около 100,000 на ден :)


