Как создать примитивную защиту от лишних кликов?
Вот пример, будет считаться только первый клик: jsfiddle.net/xtzzyu58
Защита от лоха)function countClick () {
    console.log("click!");
}

$('#button').on('click', function () {
    var clicked = localStorage.getItem('clicked');
    if (!clicked) {
         countClick();
         localStorage.setItem('clicked', true);
    }
});
Вешайте "печеньку" и делайте запись в сессию на серверной стороне.
// псевдокод$key = "photo_clicked_$id_photo";
if(has_cookie($key)){
   return false;
}
if(has_session($key)){
   return false;
}
// только теперь засчитываем "голос"
$photo = ORM::Factory('Photo', $id_photo);
$photo->rating++;
$photo->save();
// ну и вешаем сессию и печеньку
Cookie::set($key);
Session::set($key);
return true;