Помощь в коде..

MrAndrew

Новичок
Помогите мне пожалуйста исправит код, для того, чтобы пользователи не могли накручивать просмотры фотографий. Некоторые пользователи заходят на сайт, как гость, и обновляют страницу тем самым повышая ее просмотры. У меня есть следующее:

1.
PHP:
if (!function_exists('get_image_hits_table')) {
    function get_image_hits_table($image_id, $session_ip, $user_id) {    
        global $site_db;

        if ((int)$user_id > GUEST) {
            $sql = "SELECT h.user_id
                       FROM " . IMAGES_HITS_TABLE . " h
                       INNER JOIN " . IMAGES_TABLE . " i ON (i.image_id = h.image_id)
                       INNER JOIN " . CATEGORIES_TABLE . " c ON (c.cat_id = i.cat_id)
                       WHERE i.image_active = 1 AND i.image_id = " . (int)$image_id . " AND h.user_id = " . (int)$user_id . " AND i.cat_id NOT IN (".get_auth_cat_sql("auth_viewcat", "NOTIN").")";

            $hits_info = $site_db->query_firstrow($sql);
            if (!empty($hits_info['user_id'])) {
                return true;
            }

        } elseif ($user_id == GUEST) {
            $sql = "SELECT h.session_ip
                       FROM " . IMAGES_HITS_TABLE . " h
                       INNER JOIN " . IMAGES_TABLE . " i ON (i.image_id = h.image_id)
                       INNER JOIN " . CATEGORIES_TABLE . " c ON (c.cat_id = i.cat_id)
                       WHERE i.image_active = 1 AND i.image_id = " . (int)$image_id . " AND i.cat_id NOT IN (".get_auth_cat_sql("auth_viewcat", "NOTIN").")";

            $result = $site_db->query($sql);
            if ($num_rows > 0) {
                $ip_check = false;
                while ($hits_row = $site_db->fetch_array($result)) {
                    if ($hits_row['session_ip'] == $session_ip) {
                        $ip_check = true;
                    }
                }
                if ($ip_check == true) {
                    return true;
                }
            }
        }
    }
}
2.
PHP:
// Update Hits
if (function_exists('get_image_hits_table') && get_image_hits_table($image_id, $session_info['session_ip'], $session_info['session_user_id']) !== true) {
  $sql = "UPDATE ".IMAGES_TABLE."
          SET image_hits = image_hits + 1
          WHERE image_id = $image_id";
  $site_db->query($sql);

  $sql = "INSERT INTO " . IMAGES_HITS_TABLE . "
             (field_id, image_id, session_ip, user_id)
             VALUES(NULL, " . (int)$image_id . ", '" . addslashes($session_info['session_ip']) . "', '" . addslashes($session_info['session_user_id']) . "')";

  $result = $site_db->query($sql);
}
3.
PHP:
CREATE TABLE 4images_images_hits (
field_id INT(11) unsigned NOT NULL AUTO_INCREMENT,
image_id INT(11) NOT NULL DEFAULT '0',
session_ip VARCHAR(15) NOT NULL DEFAULT '',
user_id INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY(field_id)
) TYPE=MyISAM;
IP записывается в базу данных, но просмотры все равно засчитываются. Что у меня не так сделано?

Спасибо
 
Сверху