Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Защита от накрутки
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Vladimir
Отправлено: 08 Марта, 2009 - 10:32:01
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




CODE:
<?php
require_once './admin/class.db.php';

if (isset($_GET['id']) AND !empty($_GET['id']))
{
$view = "SELECT * FROM `info` WHERE id='".mysql_real_escape_string($_GET['id'])."'";
$result = mysql_query($view);
$info = mysql_fetch_array($result);

//Голосование!
$count = "UPDATE info SET vote=vote+1 WHERE id=$id";
mysql_query ($count);

echo "Голосов: ".$info['vote'];
}
?>
При обращении к этому файлу - файл.php?id=номер - количество голосов (vote) увеличивается на 1. Если вновь обратиться - ещё на 1. И т.д.
Как можно защитить от повторных обращений, по ip и cookie?
 
 Top
Furax
Отправлено: 09 Марта, 2009 - 01:39:47
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Можно, к примеру, создать таблицу базы данных, при обращении к этой странице, если текущего айпишника нет в ней, проводить голосование и добавлять айпишник в базу. По кукам ещё проще: если есть кук с определённым именем - не голосуем. Если нету - голосуем и устанавливаем такой кук.
 
 Top
Vladimir
Отправлено: 14 Марта, 2009 - 14:03:32
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




А если ли скрипт, который может проверить, поддерживает браузер cookie или нет?
Если не поддерживает, то произвести редирект на другую страницу.
 
 Top
Furax
Отправлено: 15 Марта, 2009 - 01:41:16
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Пожалуйста! На первой странице, куда попал пользователь, устанавливаешь cookie и делаешь редирект на вторую. Если на второй этот cookie не задан - редирект на третью. Проверить без перенаправления (или хотя бы AJAX) не получится: сначала браузер посылает запрос со старыми куками, и только потом сервер может установить новые.

Но не забывай, что в любом случае защиту по кукам очень легко обойти...
 
 Top
Vladimir
Отправлено: 15 Марта, 2009 - 02:55:44
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




А ещё можно сделать, чтобы к странице можно было только с браузера обращаться?

Ещё для защиты можно это использовать:
CODE:
<?
if (strpos($_SERVER['HTTP_REFERER'], 'http://сайт.ру/промежуточная_страница.php?id=')===FALSE) { header('location: редирект.htm'); exit (0); }
?>
чтобы невозможно было обойти промежуточную страницу.

(Отредактировано автором: 15 Марта, 2009 - 03:56:56)

 
 Top
Furax
Отправлено: 15 Марта, 2009 - 04:12:21
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Видишь ли, заголовки-то можно какие угодно послать... Если надо гарантировать прохождение через заданную страницу - лучше с неё делать редирект не просто на текущую, а с передачей GET-параметра, генерируемого, допустим, случайно и заносимого в базу. Если этого GETа нет или он не был только что занесён в базу - посылаем.
 
 Top
Vladimir
Отправлено: 15 Марта, 2009 - 07:00:31
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




Мне особенной защиты и не нужно.
Как сделать, чтобы при обращении к странице .php?id=номер создавался cookie, в имени которого был и этот номер?

(Отредактировано автором: 15 Марта, 2009 - 07:06:57)

 
 Top
Furax
Отправлено: 15 Марта, 2009 - 07:37:45
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




CODE:
if (isSet($_GET['id'])) setCookie('id', $_GET['id']);
 
 Top
Vladimir
Отправлено: 18 Марта, 2009 - 07:40:25
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




На вкладке "Конфиденциальность" у меня установлен средний уровень, но cookie не устанавливаются. Пробовал разные способы php.
 
 Top
Furax
Отправлено: 18 Марта, 2009 - 08:34:08
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Если требуется установка куков на более длительный срок, чем до закрытия браузера, нужно указать ещё и время устаревания оных.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0468]     [ Gzipped ]