Я хочу установить файлы cookie, чтобы пользователи голосовали только один раз в 4 категориях (грустный, разгневанный, смешной, крутой). Я новичок, поэтому я знаю, что мой код очень неудобен, но это моя первая попытка, и поэтому мне не важно, есть ли у меня несколько строк более или менее. По какой-то причине браузер не загружает файлы vote.php (которые вызывается, когда пользователь нажимает один вариант голосования). Я просто не могу найти ошибку ... может быть, кто-то сразу ее увидит? [До того как я вставил печенье вещь файлы кода загружены полностью, поэтому вызывающий не вопрос.]setcookie и ask cookie значение для системы голосования
<?php
require_once('connect.php');
$newsid = $_POST['id'];
if (isset($_POST['submit'])) {
if(isset($_COOKIE['votecookie']) && $_COOKIE['votecookie'] !== 'sad') {
if($_COOKIE['votecookie'] == 'cool') {
$query = mysql_query('UPDATE `index` SET cool=cool-1 WHERE id = {$newsid}');
}
if($_COOKIE['votecookie'] == 'funny') {
$query = mysql_query('UPDATE `index` SET funny=funny-1 WHERE id = {$newsid}');
}
if($_COOKIE['votecookie'] == 'sad') {
$query = mysql_query('UPDATE `index` SET enraging=enraging-1 WHERE id = {$newsid}');
}
setcookie('votecookie', 'sad');
$query = mysql_query('UPDATE `index` SET sad=sad+1 WHERE id = '{$newsid}'');
$hosts = $_SERVER['HTTP_HOST'];
$uris = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extras = 'news.php?id={$newsid}&sad=1';
header('Location: http://$hosts$uris/$extras');
exit;
}
if(!isset($_COOKIE['votecookie']) {
setcookie('votecookie', 'sad');
$query = mysql_query('UPDATE `index` SET sad=sad+1 WHERE id = '{$newsid}'');
$hosts = $_SERVER['HTTP_HOST'];
$uris = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extras = 'news.php?id={$newsid}&sad=1';
header('Location: http://$hosts$uris/$extras');
exit;
}
if(isset($_COOKIE['votecookie']) && $_COOKIE['votecookie'] == 'sad') {
$hosts= $_SERVER['HTTP_HOST'];
$uris = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extras = 'news.php?id={$newsid}&sad=0';
header('Location: http://$hosts$uris/$extras');
exit;
}
}
else {
$hosts= $_SERVER['HTTP_HOST'];
$uris = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extras = 'news.php?id={$newsid}&sad=0';
header('Location: http://$hosts$uris/$extras');
exit;
?>
Вместо этого вы должны использовать сеансы. Пользователи могут изменять и удалять файлы cookie – Machavity
Почему у вас есть 'if ($ _ COOKIE ['votecookie'] == 'sad')', когда вы находитесь внутри блока, который запускается только тогда, когда 'votecookie' _not_' sad'? – Barmar
Что касается заголовка («Местоположение: http: // $ hosts $ uris/$ extras»); - потому что это одинарные кавычки, в которых используется буквальное значение - он пытается перенаправить на http: // $ hosts $ uris/$ extras. Используйте двойные кавычки для анализа переменных в строках. https://php.net/manual/en/language.types.string.php – user2182349