0

重複の可能性:
PHP の「Header Already Sent」エラー

ユーザーが 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()は、残りのHTTPヘッダーと一緒に送信されるCookieを定義します。他のヘッダーと同様に、スクリプトからの出力の前にCookieを送信する必要があります(これはプロトコルの制限です)。<html>これには、タグや<head>空白を含む出力の前に、この関数を呼び出す必要があります。

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

重要なのは、出力の前に呼び出す必要があるということです。

于 2012-08-28T16:03:57.527 に答える
1

あなたのコードはうまく機能しているかもしれません。スクリプトは、ページの読み込み時に Cookie を設定します。ただし、Cookie の設定とその値の取得の両方が 1 つのインスタンスでは機能しないため、値を取得するには、再度読み込みをページングする必要があります。

于 2012-08-28T16:10:38.987 に答える