php,echo在表单发布后没有显示?

时间:2011-09-05 03:39:39

标签: php cookies

我有一个表单,当我发布它我创建一个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,但是它没有被创建

3 个答案:

答案 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请求后才会出现。如果需要,可以手动设置。