MrAndrew
Новичок
Помогите мне пожалуйста исправит код, для того, чтобы пользователи не могли накручивать просмотры фотографий. Некоторые пользователи заходят на сайт, как гость, и обновляют страницу тем самым повышая ее просмотры. У меня есть следующее:
1.
2.
3.
IP записывается в базу данных, но просмотры все равно засчитываются. Что у меня не так сделано?
Спасибо
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;
}
}
}
}
}
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);
}
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;
Спасибо