Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 投票系统的setcookie和ask cookie值_Php_Cookies_Vote - Fatal编程技术网

Php 投票系统的setcookie和ask cookie值

Php 投票系统的setcookie和ask cookie值,php,cookies,vote,Php,Cookies,Vote,我想设置一个cookies,让用户在4个类别(悲伤、愤怒、有趣、酷)中只投票一次。 我是一个初学者,所以我知道我的代码很不方便,但这是我第一次尝试,所以如果我有几行多多少少,对我来说并不重要。 出于某种原因,浏览器不会加载vote.php文件(当用户单击一个投票选项时调用)。我就是找不到错误…也许有人马上就看到了? [在我插入cookie之前,代码文件已完全加载,因此调用不是问题。] <?php require_once('connect.php'); $newsid = $_POST['

我想设置一个cookies,让用户在4个类别(悲伤、愤怒、有趣、酷)中只投票一次。 我是一个初学者,所以我知道我的代码很不方便,但这是我第一次尝试,所以如果我有几行多多少少,对我来说并不重要。 出于某种原因,浏览器不会加载vote.php文件(当用户单击一个投票选项时调用)。我就是找不到错误…也许有人马上就看到了? [在我插入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为什么在块中有
if($\u COOKIE['votecookie']='sad')
,而该块仅在
votecookie
不是
sad
时才会运行,关于头('Location:http://$hosts$uris/$extras');-因为这些是单引号,所以正在使用文本值-它试图重定向到http://$hosts$uris/$extras。使用双引号分析字符串中的变量。您是否希望在第一个
if
块中
setcookie('votecookie','sad')
更新在下一个
if
中测试的
$\u COOKIE['votecookie']
<代码>$\u COOKIE
仅在刷新页面时设置。感谢您的回答@巴尔马:sad确实是一个错误,我纠正了它。关于你的第二个问题:不,我不期望它。你能具体解释一下你改变了什么吗?很难看出区别。
<?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;
}
?>