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