2015-04-30 3 views
2

Я хочу установить файлы 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; 
     ?> 
+0

Вместо этого вы должны использовать сеансы. Пользователи могут изменять и удалять файлы cookie – Machavity

+0

Почему у вас есть 'if ($ _ COOKIE ['votecookie'] == 'sad')', когда вы находитесь внутри блока, который запускается только тогда, когда 'votecookie' _not_' sad'? – Barmar

+1

Что касается заголовка («Местоположение: http: // $ hosts $ uris/$ extras»); - потому что это одинарные кавычки, в которых используется буквальное значение - он пытается перенаправить на http: // $ hosts $ uris/$ extras. Используйте двойные кавычки для анализа переменных в строках. https://php.net/manual/en/language.types.string.php – user2182349

ответ

0

Если кто-то заинтересован в ответ: Это, как я сделал это сейчас (я был несколько ошибок в моем коде и ошибка в рассуждениях).

<?php 
require_once('connect.php'); 
$newsid = $_POST['id']; 
if (isset($_POST['submit'])) { 
    if(isset($_COOKIE[$newsid]) && $_COOKIE[$newsid] != 'sad') { 
     if($_COOKIE[$newsid] == 'cool') { 
     $query = mysql_query("UPDATE `index` SET cool=cool-1 WHERE id = '{$newsid}'"); 
     } 
     if($_COOKIE[$newsid] == 'funny') { 
     $query = mysql_query("UPDATE `index` SET funny=funny-1 WHERE id = '{$newsid}'"); 
     } 
     if($_COOKIE[$newsid] == 'enraging') { 
     $query = mysql_query("UPDATE `index` SET enraging=enraging-1 WHERE id = '{$newsid}'"); 
     } 
    $query = mysql_query("UPDATE `index` SET sad=sad+1 WHERE id = '{$newsid}'"); 
    setcookie($newsid, "sad", time() + (10 * 365 * 24 * 60 * 60)); 
    $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[$newsid])) { 
     $query = mysql_query("UPDATE `index` SET sad=sad+1 WHERE id = '{$newsid}'"); 
     setcookie($newsid, "sad", time() + (10 * 365 * 24 * 60 * 60)); 
     $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[$newsid]) && $_COOKIE[$newsid] == '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; 
} 
?> 
+0

Не могли бы вы конкретно объяснить, что вы изменили? Трудно видеть различия. – Barmar

 Смежные вопросы

  • Нет связанных вопросов^_^