我有一个表单,当我发布它我创建一个cookie,然后我读取cookie,如果isset然后做一些事情:
在read.php
<?php if (isset($_COOKIE['voteforme'])) {
echo 'You voted this profile';
} else {?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="vote_points" id="vote_points" value="1000" />
<input type="submit" name="votes_send" id="votes_send" value="Vote for me" />
</form>
<?php } ?>
然后我在'create.php'中做了一些cookie创建:
if (isset($_POST['votes_send'])){
$get_vote_for_me = $_POST['vote_points'];
$get_talent_id = $_POST['talent_id'];
$value1 = "voteforme";
$value2 = "voteforme_points";
setcookie($value1,$value2, time()+3600*24*7);
}
这个脚本正在创建我需要的cookie。基本上,如果设置了cookie $_COOKIE['voteforme']
,则显示一条消息,否则显示该表单。
我遇到的问题是我需要第二次刷新页面以便页面读取cookie并查看是否存在。
文件结构为index.php
,其中包含read.php
和'create.php'
任何想法??
感谢
编辑: 即使我将表单操作设置为任何这些文件,结果也是相同的
编辑,index.php
结构:
<?php
require_once("read.php");
include 'create.php';
?>
<!doctype html>
<head>...
<body>...
<div id="tab5" class="tab_content">
<?php read();?> // the read.php it's a function
</div>
...
read.php
我要求它在顶部,但我实际上并没有在身体内部调用git作为函数
硐:
我还试图在'read.php'中的setcookie
语句中添加else
,但是它没有被创建
答案 0 :(得分:0)
我建议你分开文件。将数据POST到create.php并将create.php中的重定向添加回index.php。这样页面将加载,它将能够读取您的cookie。
或者你可以试试这个,如果还没有这样做的话:
首先包括create.php然后再包含read.php
答案 1 :(得分:0)
为什么不在设置cookie后检查cookie集?然后继续更新您的页面。在进行cookie工作之前,您无法在页面上打印任何内容。
另一种解决方案是使用javascript来减少重新加载次数。
第三个想法是使用一个全局变量,除了cookie之外你还可以检查 - 如果设置cookie,你将根据全局变量执行相应的代码。
答案 2 :(得分:0)
setcookie()没有立即设置$ _COOKIE中的值,它只会在客户端发送另一个cookie请求后才会出现。如果需要,可以手动设置。