2017-03-23 9 views
-1

私は過去12時間ほど壁に頭をぶつけていましたが、何が間違っているのかわかりません。私はクッキーを設定したいが、傾ける。これで今すぐうんざりする。PHPのクッキーが設定されていません

<!DOCTYPE html> 
<?php 
$cookie_name = "mysiterandomuser"; 
$cookie_value = "justanotheruser"; 
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); 
?> 

<html> 
<body> 

<?php 
if(!isset($_COOKIE[$cookie_name])) { 
    echo "Cookie named '" . $cookie_name . "' is not set!"; 
} else { 
    echo "Cookie '" . $cookie_name . "' is set!<br>"; 
    echo "Value is: " . $_COOKIE[$cookie_name]; 
} 
?> 

<p><strong>Note:</strong> You might have to reload the page to see the new value of the cookie.</p> 

</body> 
</html> 
+0

http://php.net/manual/en/function.setcookie.phpは、他のヘッダーと同様に、スクリプトからの出力前にクッキーを送信する必要があることを明示しています(これはプロトコルの制限です)。これを行うには、タグとタグだけでなく、空白も含めて、出力前にこの関数を呼び出す必要があります。 – fvu

+0

なぜこれもjavascriptとmysqlでタグ付けされていますか? – edwin

+0

@fvu可能な限りすべて試しました。私はPHPコードの下にhtmlタグを移動しました。私のコンピュータの隣に座って、最後の8時間ほどドキュメントを読んでいます。クッキーを設定する方法を提案するウェブサイトを読んでください。私はw3schoolsから正確なコードをコピーして貼り付けるまで何か間違っていると思っていました。それはそれがコピーされた1つの時点で自分のサイトで作業しているのを見た。 – Francisco

答えて

4

ヘッダー/コンテンツが既に送信された後でCookieを設定することはできません。まずクッキーを設定する必要があります。 docs on PHP.net 1として

<?php 
$cookie_name = "mysiterandomuser"; 
$cookie_value = "justanotheruser"; 
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); 
?> 
<!DOCTYPE html> 
<html> 
<body> 

<?php 
if(!isset($_COOKIE[$cookie_name])) { 
    echo "Cookie named '" . $cookie_name . "' is not set!"; 
} else { 
    echo "Cookie '" . $cookie_name . "' is set!<br>"; 
    echo "Value is: " . $_COOKIE[$cookie_name]; 
} 
?> 

<p><strong>Note:</strong> You might have to reload the page to see the new value of the cookie.</p> 

</body> 
</html> 
+0

私はここで答えと同じことをしました。しかし、最悪のことは、htmlの出力があまりにも遅くなってから、私のために働いたということです。 – Zri

+0

@Rob M.私はあらゆる可能な方法を試しました。私はPHPコードの下にhtmlタグを移動しました。私のコンピュータの隣に座って、最後の8時間ほどドキュメントを読んでいます。クッキーを設定する方法を提案するウェブサイトを読んでください。私はw3schoolsから正確なコードをコピーして貼り付けるまで何か間違っていると思っていました。それはそれがコピーされた1つの時点で自分のサイトで作業しているのを見た。 – Francisco

1

...

クッキーは、クッキーがために表示されている必要があり ページの次の読み込みまで見えるようになりません。クッキーが正常に に設定されているかどうかをテストするには、クッキー の有効期限が切れる前に、次の読み込みページでクッキーをチェックしてください。これに

変更この...

<?php 
$cookie_name = "mysiterandomuser"; 
$cookie_value = "justanotheruser"; 
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); 
?> 

...このため

<?php 
if(!isset($_COOKIE[$cookie_name])) { 
$cookie_name = "mysiterandomuser"; 
$cookie_value = "justanotheruser"; 
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); 
} 
?> 

理由は、あなたがすべてのページビュー上でクッキーを設定しているということです。

私は尋ねることは許しても、ブラウザでCookieが有効になっていますか?

+0

私は訪問した後にブラウザを数回閉じましたが、何も起こりません。それはまだ同じことが続いている。クロム、ファイアフォックスのエッジで試してみました。私はこれを修正する必要がありますが、ここでは狂っている – Francisco

+0

godaddyかもしれないこれと何か関係がありますか? coz thats my host – Francisco

+0

@Francisco私は自分の答えを更新しました。それがあなたのために働くかどうか見てください。覚えておいて、ページをリロードする必要があります –