0

可能重复:
PHP 中的“标头已发送”错误

我有我的代码,以便用户指定他们的 IGN(游戏名称),然后将其存储在 cookie 中。但它不会起作用。

<form action="index.php" method="GET">
    Minecraft IGN:
    <input type="text" name="ign">
    <input type="submit" value="Submit">
</form>

<?PHP
error_reporting(0);
$player = $_GET["ign"];
$exp = time()+86400;
setcookie("ign", $player, $exp, "/", "", "");

if (isset($player)) {
    echo "Your Minecraft Ingame Name Was Set To $player!";
}
?>

<br>

<?PHP
if (isset($player)) {
    echo '<p>Click <a href="http://gophobia.com/phpsend/">Here</a> To Redeem Ur Prizes    :3</p>';
}
echo '<br />';
print_r($_COOKIE);
?>
4

2 回答 2

2

这是一个非常常见的错误,但很容易修复。

这直接来自手册,但说得比我以往任何时候都好:

setcookie() 定义了一个 cookie 与其余的 HTTP 标头一起发送。与其他标头一样,必须在脚本的任何输出之前发送 cookie(这是协议限制)。这要求您在任何输出之前调用此函数,包括<html><head>标记以及任何空格。

http://php.net/manual/en/function.setcookie.php

关键是它必须在任何输出之前调用。

于 2012-08-28T16:03:57.527 回答
1

您的代码可能运行良好。该脚本在页面加载时设置 cookie。但是您必须再次分页加载以检索值,因为设置 cookie 和检索其值都不能在单个实例中工作。

于 2012-08-28T16:10:38.987 回答