Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с сессиями
 
 автор: kest131   (29.07.2005 в 14:01)   письмо автору
 
 

У меня на странице есть голосование по 10-бальной шкале.
Когда пользователь голосует то на эту-же страницу передается переменная g ($g)
со значением типа; localhost/test1.php?g=6<1
Где 6-выбраный им бал,а 1-номер.
Нужно сделать так что-бы пользователь мог проголосовать только один раз,при этом надо учитывать номер так как каждый номер должен сохранятся в сессии.
Например: пользователь зашел localhost/test1.php?g=6<1 -проголосовал,
потом зашел localhost/test1.php?g=6<2 -проголосовал,
потом зашел localhost/test1.php?g=6<3 -проголосовал,
потом зашел localhost/test1.php?g=6<(1 или 2 или3 ) -а ему высвечивается что он уже голосовал.

Я писал что-то типа :


session_start();

Тут всякая ерунда .



if($g){

$ly = explode("<", $g);
$n=$ly[1];

if($n!=$_SESSION[n]) { $_SESSION[n]=$n  ;}
else{echo "Bad";}


}






Надеюсь кто-то поймет

   
 
 автор: cheops   (29.07.2005 в 14:10)   письмо автору
 
   для: kest131   (29.07.2005 в 14:01)
 

А в чём проблема?

   
 
 автор: kest131   (29.07.2005 в 14:13)   письмо автору
 
   для: cheops   (29.07.2005 в 14:10)
 

Нужно сделать так что-бы пользователь мог проголосовать только один раз,при этом надо учитывать номер так как каждый номер должен сохранятся в сессии.


Мой код не работает

   
 
 автор: cheops   (29.07.2005 в 16:57)   письмо автору
 
   для: kest131   (29.07.2005 в 14:13)
 

А голосование привязывать нужно к IP-адресу и сессии или только к сессии? Ведь пользователь может просто выключить браузер и проглосовать по-новой.

   
 
 автор: kest131   (29.07.2005 в 19:29)   письмо автору
 
   для: cheops   (29.07.2005 в 16:57)
 

По ip было-бы лучше но я не знаю как.
Может ты знаеш cheops .Если знаеш напиши как.

   
 
 автор: cheops   (29.07.2005 в 19:36)   письмо автору
 
   для: kest131   (29.07.2005 в 19:29)
 

IP-адрес всегда можно извлечь при помощи суперглобального массива $_SERVER['REMOTE_ADDR'], проблема только заключается в его сохранении - доступна ли вам база данных MySQL?

   
 
 автор: kest131   (29.07.2005 в 19:42)   письмо автору
 
   для: cheops   (29.07.2005 в 19:36)
 

MySQL-не проблема.Наверное так и сделаю

   
 
 автор: kest131   (29.07.2005 в 19:47)   письмо автору
 
   для: cheops   (29.07.2005 в 19:36)
 

Однако многие люди сидят под одним IP и одним провайдером.
Нельзя ли как нибуть более детально определять и сортировать пользователей.

   
 
 автор: kest131   (29.07.2005 в 19:48)   письмо автору
 
   для: cheops   (29.07.2005 в 19:36)
 

Однако многие люди сидят под одним IP и одним провайдером.
Нельзя ли как нибуть более детально определять и сортировать пользователей.

   
 
 автор: Денис   (29.07.2005 в 19:36)   письмо автору
 
   для: kest131   (29.07.2005 в 19:29)
 

ну например, если это так важно, можно сверяться по cookie о пользователе и тогда проверять. можно также вести отдельный cookie под голосование - но это было бы глупо.

   
 
 автор: kest131   (29.07.2005 в 19:41)   письмо автору
 
   для: Денис   (29.07.2005 в 19:36)
 

cookie Можно отключить или удалить так что это не выход

   
 
 автор: Денис   (29.07.2005 в 19:56)   письмо автору
 
   для: kest131   (29.07.2005 в 19:41)
 

хорошо, ну если куки можно удалить, то как вы тогда будете проверять залогиневшегося пользователя? он же не будет каждый раз вводить свои данные? а те данные, кот получаются после того, когда было сделано голосование, будут храниться либо в кукисах и потом передаваться на сессиях, либо же у вас на машине в базе даных.

   
 
 автор: kest131   (29.07.2005 в 20:30)   письмо автору
 
   для: Денис   (29.07.2005 в 19:56)
 

Пользователь может удалять не все куки а те которые нужны.
Пользователь также будет проверятся через сессии.

Мой ICQ :203-247-054(Если хочеш поспорить)

   
 
 автор: JC_Piligrim   (29.07.2005 в 22:58)   письмо автору
 
   для: kest131   (29.07.2005 в 20:30)
 

Не надо спорить. Тот, кто захочет накрутить счетчик голосований, найдет способ его накрутить, если хватит квалификации, будте уверены! Кукисы можно удалить. Сессия уже не определится. И проголосовать по-новой. IP-адрес можно поменять. Просто зайти через какой-нибудь общедоступный прокси-сервер. И тоже проголосовать по новой. А если накрутчик будет ну совсем уж крутой - просто напишет прогу или скрипт, который будет автоматически голосовать, пользуясь целым списком из пары сотен proxy-серверов. Может помешать проверка на ввод текста с динамически генерируемой картинки. Опять же, если фон будет простым, а текст четким - злоумышленник просто будет вычитать этот фон из изображения, и распознавать текст. Хотя, это, конечно будет сложнее, и не всякий возмется, если голосование не стоит того, чтобы такими усилиями накручивать. Очень затруднить жизнь спамеру могут такие изображения с кодами для подтверждения, которые генерируются, например, службой регистрации icq-номеров. В клиенте, или на сайте - не важно. Вот там, фон очень часто меняется. А если еще делать переменное количество трудноразличимых символов, как это сделано в форме отправки sms на [url]www.mts.ru[/url] - можно говорить о защите от повторных голосований.

Примите идею к сведению. ;)

   
 
 автор: cheops   (29.07.2005 в 23:15)   письмо автору
 
   для: JC_Piligrim   (29.07.2005 в 22:58)
 

Почти год назад обсуждался вопрос о защите от накруток при голосовании http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=266, ещё одна форма, к которой прибегают, голосование с подтверждением по e-mail, причём без учёта голосов с бесплатных почтовых ящиков, но это жёсткая мера, исключающая голоса большей половины RuNet-а, к тому же всё равно можно крутить систему, если имеется свой собственный выделенный сервер и домен.

   
 
 автор: JC_Piligrim   (30.07.2005 в 00:09)   письмо автору
 
   для: cheops   (29.07.2005 в 23:15)
 

Отсюда мораль с небольшой оговоркой. =)

Мораль: "Все, что может быть взломано - будет взломано, все, что может быть скопировано - будет скопировано!"

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования