Здравствуйте. Делаю рейтинг фотографий. Хочу сделать так, чтобы пользователь мог изменить рейтинг в плюс и в минус только один раз. Решил сделать это через сессию. Делаю так: В главном файле index.php: Код (Text): session_start(); В файле обработчике клика на кнопке рейтинга: Код (Text): // $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'. При повторной попытке изменить рейтинг в ту же сторону должно срабатывать Код (Text): if(isset($_SESSION[$ses]) && ($_SESSION[$ses] == 'Y')){ exit; } Но почему-то это не срабатывает, рейтинг меняется еще раз. Подскажите, что тут не так и как с этим бороться?
Должно быть обработчик не подключается на главный файл. Если нет то собственно в обработчике тоже нужно session_start. А лучше обработать на одной странице.
В начале файла обработчика пишу Код (Text): require_once('../../../index.php''); Получаю сообщение о синтаксической ошибке. Хотя там же написано Код (Text): require_once('../../../config.php'); и ошибки нет. Также в начале файла вместо Код (Text): require_once('../../../index.php''); пишу Код (Text): session_start(); Тоже синтаксическая ошибка. Может быть надо что-то настроить в php.ini?
органичения на единственность делается на уровне базы данных. а сессия это всего-лишь способ передачи данных между запросами. сходу сделал ошибку проектирования.
"Нравится" или "Не нравится" нажать может любой пользователь, в том числе и неавторизованый. как в таком случае сделать ограничение в базе?