2013-01-02 14 views
5

私はPHPで新しくCookieに関する知識があまりありません。PHPを使ってクッキーにデータを保存するには?

私はデータを一時的に必要とするので、私はクッキーに自分のデータを保存しなければならないようです。私はいくつかの記事を読んでそれのいくつかを試しましたが、私はそれから空白の結果を得る。ここ

は私のコードです:

<?php 
if (isset($_COOKIE['vaccine'])) { 
setcookie('vaccine',$vaccine); 
foreach ($_COOKIE[$vaccine] as $vaccine){ ?> 

<div class="control-group"> 
<label class="control-label"> 
<?php echo '&nbsp'.'<a href="javascript:void(0);" rel="tooltip"  
title="Delete" onclick="delete_vaccination('.$vaccine->vaccination_record_id.');"><i class="icon-minus-sign"></i></a>'.'';?><?php echo $vaccine->vaccination_record_brand;?> 

</label> 
</div> 

<?php }} ?> 
+0

'$のvaccine'の値は何ですか? –

+1

注意:クッキーは、次回のリクエスト時にのみ表示されます。あなたが 'setcookie'を使ってクッキーに固執することは、ユーザが次にスクリプトを呼び出すまで、' $ _COOKIE'には現れません。 – Charles

答えて

2

が表示されます。このためにセッションを使用する必要がありますか?クッキーは一時的なものではなく、クライアントのコンピュータに保存されます。セッションは一時的なもので、破壊するまで生きています。あなたの$_COOKIE配列の$vaccineデリファレンス$_COOKIE[$vaccine]意志:

はさらに、あなたのPHPに多少の誤差が(Cookie処理ではそれほどではない)があります。 $vaccineは配列のようですが、$_COOKIE["Array"]を見ています。あなたはこのようにそれを修正することになるでしょう:

foreach ($_COOKIE["vaccine"] as $vaccine) 

をまた、あなたはクッキーにオブジェクトを入れているとして、あなたは、設定やクッキー取得する前に、それserialize/unserializeにあります。そして、

// fetch the vaccines somewhere first 
setcookie('vaccine',serialize($vaccines)); 

を、最後になぜクッキーが設定されたら、クッキーを設定するのですか?設定されていれば、それを読むべきです。

完全なコード:

<?php 
if (isset($_COOKIE['vaccine'])) { 
    $vaccines = unserialize($_COOKIE['vaccine']); 
    foreach ($vaccines as $vaccine){ ?> 

     <div class="control-group"> 
     <label class="control-label"> 
     <?php echo '&nbsp'.'<a href="javascript:void(0);" rel="tooltip"  
      title="Delete" onclick="delete_vaccination('.$vaccine->vaccination_record_id.');"> 
      <i class="icon-minus-sign"></i></a>'.'';?> 
      <?php echo $vaccine->vaccination_record_brand;?> 

     </label> 
     </div> 

<?php }} ?> 
+0

このことを私に忍耐強く説明してくれてありがとう。 – claire

1

それはあなたの全体のコードであれば、どこ$ワクチンに入るデータはありますか?あなたはそのクッキーを空に設定したようです。

コードバグもあります。 foreachは$ _COOKIE [$ vaccine]の代わりに$ _COOKIE ['vaccine']を持つべきです。しかし、クッキーと配列についてのコメントは下記を参照してください。

さらに、PHP配列をクッキーに保存することはできません。配列をシリアル化してクッキーに保存し、クッキーを元に戻すとシリアル化してPHP配列にする必要があります。どちらか、またはPHPマニュアルの例#3を見てください - http://php.net/manual/en/function.setcookie.phpクッキーの配列をどう扱うかについて。この方法で配列クッキーを使用すると、多くのクッキーが設定されることに注意してください。それは問題になるかもしれません。したがって、シリアライゼーションについて考えてみることもできます。

シリアライゼーションの実装の1つは、PHPマニュアル自体のsetcookieエントリにあります。マニュアルページの 'cwillard at fastmail dot fm'のコメントを参照してください。

また、設定したCookieは、次のページの読み込み時にのみアクセスできます。 $ワクチンにデータを入れるときでも、初めて周りに空白が表示されます。ページのリロード時には、

+0

私はprint_r $ワクチンにしようとしたが、クッキーを設定する方法がわからず、配列を返します。応答してくれてありがとう.. – claire

関連する問題