powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите с сессией в php
6 сообщений из 6, страница 1 из 1
Помогите с сессией в php
    #38582766
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Делаю рейтинг фотографий. Хочу сделать так, чтобы пользователь мог изменить рейтинг в плюс и в минус только один раз. Решил сделать это через сессию. Делаю так:

В главном файле index.php:
Код: php
1.
session_start();


В файле обработчике клика на кнопке рейтинга:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
	// $photoPuth - путь к фотографии, сохраненный в базе, в таблице photos
        // $upd_type - тип изменения ('plus' или 'minus')

        $ses = $photoPuth.$upd_type;
	
	if(isset($_SESSION[$ses]) && ($_SESSION[$ses] == 'Y')){
		exit;
	}
	else{
		
		if($upd_type == 'plus'){
			$sql = "update photos set plus = plus + 1 where photo = '$photoPuth'";	
		}
		else{
			$sql = "update photos set minus = minus + 1 where photo = '$photoPuth'";
		}
		
		if(!mysql_query($sql)) {
			exit(mysql_error());
		}
		
		 $_SESSION[$ses] = 'Y';
		
	}



Насколько я понимаю, если я пытаюсь изменить рейтинг в первый раз, проходит апдейт и в $_SESSION[$ses] записывается 'Y'.
При повторной попытке изменить рейтинг в ту же сторону должно срабатывать
Код: php
1.
2.
3.
if(isset($_SESSION[$ses]) && ($_SESSION[$ses] == 'Y')){
		exit;
	}


Но почему-то это не срабатывает, рейтинг меняется еще раз.

Подскажите, что тут не так и как с этим бороться?
...
Рейтинг: 0 / 0
Помогите с сессией в php
    #38583720
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ГужановХочу сделать так, чтобы пользователь мог изменить рейтинг в плюс и в минус только один раз. Решил сделать это через сессию.Умерла сессия или пользователь зашел с другого браузера или почистил куки и т.п. - ну и... и усе, можно заново голосовать.
...
Рейтинг: 0 / 0
Помогите с сессией в php
    #38583789
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и пожалуйста, пусть голосует. Моя защита предусмотрена для того, чтобы кто-то, открыв картинку, не смог кликнуть много раз подряд на плюсе или на минусе. Если же, чтобы проголосовать не один раз, нужно что-то сделать, хотя бы перезайти на сайт, то и пусть голосует. Думаю, что скорее надоест перезаходить, чем что-то сильно заплюсуется/заминусуется
...
Рейтинг: 0 / 0
Помогите с сессией в php
    #38584508
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По логике вроде все верно. Мож сессия не стартует или закрыватся, проверьте.
...
Рейтинг: 0 / 0
Помогите с сессией в php
    #38584749
sxq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как вы узнаете что еще раз можно проголосовать?
у вас проголосовав + можно потом свободно проголосовать и -
судя по $ses = $photoPuth.$upd_type;
Можно + или - по разу

Выводите содержимое $_SESSION и смотрите что там.
...
Рейтинг: 0 / 0
Помогите с сессией в php
    #38584869
2615
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Гужанов,

Если в сессии не установлен флаг голосования ("Y"):

1. В сессию записывается уникальный хеш.
2. Хеш передается в скрытое поле на форме голосования.
3. При голосовании проверяется валидность хеша. Если он совпадает, то идет голосование, хеш удаляется и в сессию записывается "Y". В противном случае голос отклоняется.

У пользователя могут быть отключены куки и он возможно никогда не сможет головать, здесь будут нужны дополнительные затраты.
Также при перезагрузке страницы после успешного голосования следует не выводить голосовалку, т.е. должен вестись журнал голосований.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите с сессией в php
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]