Home > PHP > PHP - $_COOKIE -

PHP - $_COOKIE -

  • 2012-05-17 (Thu) 10:28
  • PHP
来週の5月21日月曜日は金環日食が見られるらしいです。175年ぶりに日本で見られるそうで、次は300年後ぐらいになるとか・・。見るに値するかもしれませんね。

しかし・・、現在の天気予報では曇り/雨のようです。その前後は天気が良さそうなので、間の悪い日にちになりそうです。日本ではけっこう広い範囲で見られるそうですから、どこかではしっかりと見られるのでは。でも、見たいですね。
その日のために、日食用のグラスを買った方も多いようです。もし、見れなかったら、そのグラスは何に使えるのでしょうか?^^;

今回のPHPは、スーパーグローバル変数の$_COOKIEについて紹介します。
第24回 $_COOKIE
COOKIEは、Webサーバとブラウザで取り交わされる情報で、これによって動的なホームページが実現できます。$_COOKIEは、現在のスクリプトにHTTPクッキーから渡された変数の配列です。

Cookieに値を保存するには、setcookie関数を使用します。書式は次のようになります。
setcookie(name,value[,expire][,path][,domain][,secure][,httponly])

引数の数は多いですが、必須なのは、クッキーの名前と値です。
 name:クッキーの名前
 value:クッキーの値。この値がクライアントのPCに保存される。
 expire:クッキーの有効期限。保存期間を1日にするには、time()+60*60*24をセット。
 path:サーバ上でのクッキーを有効としたいパスを指定。
 domain:クッキーが有効なドメインを指定。
 secure:セキュアなHTTPS接続の場合のみクッキーが送信されるには、TRUEを設定。
 httponly:TRUEを設定すると、HTTPを通してのみクッキーにアクセスできる。
もし、この関数を宣言する前に何かしらの出力がある場合は、setcookie()は失敗し、FALSEを返します。また、この関数でユーザがクッキーを受け取ったかどうかを判断することはできない。

では、簡単な例を紹介します。test_1.phpのページで、クッキーを設定し、test_2.phpのページに遷移したら、クッキーの値を表示させます。
test_1.php
<?php
 $value = "Cookie Data";
 setcookie("cdata",$value,time()+60);
?>
<html>
 <body>
 <p><a href="test_2.php">確認画面へ</a></p>
 </body>
 </html>

20120517-p01.jpg
test_2.php
<html>
 <head></head>
 <body>
 <p><?php echo "クッキーデータ:". $_COOKIE["cdata"];?></p>
 </body>
</html>

20120517-p02.jpg
結果から分かるように、遷移元のページのクッキーの名前をアクセス先のページで指定すると、クッキーの値が表示されることになります。また、有効期間を1分にしていますので、1分を経った時にtest_2.phpをリロードするとクッキーの値は表示されなくなります。
20120517-p03.jpg

次のサンプルコードは、フォームで入力した値をクッキーの値として保管し、それを表示させるコードを1ファイルで記述したものです。
<?php
 $cookie_value = $_POST["name"];
 setcookie("key",$cookie_value)
?>
<html>
 <body>
  <form action="sample.php" method="post">
   <p><input type="text" name="name" value="" /> 
   <input type="submit" value="送信" /></p>
  </form>
  <?php
   if (isset($_POST["name"])){
    echo "クッキーの値は".$_COOKIE["key"]."です。";
   }else{
    echo "";
   }
  ?>
 </body>
</html>

まず、POST属性で送信された「name」を変数$cookie_valueに格納し、setcookieのクッキーの値にセットします。この時のクッキー名は「key」を指定しています。
html内では、フォームを形成し、テキストボックス名を「name」としています。
PHPコード内では、IFステートメントを使って、POST送信のnameという名前に値がセットされていたら、クッキーの名前を指定して値を表示させます。
もし、名前がない場合は何も出力させない(空白)を出力させます。つまり、最初にこの初めてページにアクセスした時は、POST送信していないので、$_POST["name"]の値は存在しませんので、IFステートメントで分岐処理をさせます。
結果は次のようになります。まず、test_1.phpにアクセスして、「LOOK ME!」などという任意の値を入力して、送信します。
20120517-p04.jpg
送信すると、同ページに入力されたクッキーの値が表示されます。
20120517-p05.jpg

ページを遷移して、閲覧しているユーザ名を各ページに表示させておくことが可能です。例えばログインして自分のページにアクセスすると、ブラウザの上の方に自分のログイン名などが表示されているのを見たことがあると思います。
この表示はログインしているときだけ表示させ、ログアウトすると表示させない仕組みなどに利用できると思います。
また、クッキーの保存期間を1ヶ月ぐらいにしておけば、1ヶ月以内にログインした時は自分のユーザー名を入れなくても、ログインできるメリットも含まれます。

ただし、クッキーはブラウザに保管されるので、他の方がそのブラウザを使って成りすまし的なことができるので、セキュリティ的に疑問が出ます。
もし、1台のパソコンで複数の方が利用されるようであれば、クッキーの事も考慮してブラウザを閲覧する必要があるでしょうね。

Comments:1

wlp 2015-06-29 (Mon) 18:13

http://www.guccihandbags.com.co/
http://www.gucci-outlet.in.net/
http://www.gucci--outlet.com.co/
http://www.guccishoes.net.co/
http://www.guccishoes.us.org/
http://www.hermesbags.com.co/
http://www.hermesbirkin.com.co/
http://www.hermesoutlet.net.co/
http://www.hollister.us.org/
http://www.hollisterclothing-store.in.net/
http://www.insanityworkout.net.co/
http://www.iphone-cases.us/
http://www.ralphlaurenpolo.in.net/
http://www.ray-ban-outlet.us.com/
http://www.raybans.us.org/
http://www.rayban-sunglasses.org.uk/
http://www.rayban-sunglasses.us.org/
http://www.raybansunglassesoutlet.net.co/
http://www.raybanwayfarer.in.net/
http://www.replicahandbags.com.co/
http://www.replicawatches.us.com/
http://www.retro-jordans.com/
http://www.rolex-watches.me.uk/
http://www.rosherun.org.uk/
http://www.rosheruns.us/
http://www.salvatoreferragamo.in.net/
http://www.soccer-shoes.org/
http://www.softball-bats.us/
http://www.suprashoe.net/
http://www.swarovskicrystal.com.co/
http://www.swarovskijewelry.com.co/
http://www.swarovski-uk.org.uk/
http://www.the-northface.com.co/
http://www.the-northface.in.net/
http://www.thenorth-face.org.uk/
http://www.thenorthface.us.org/
http://www.thenorthfacejackets.in.net/
http://www.thomassabo-uk.org.uk/
http://www.tiffanyandco.net.co/
http://www.tiffanyjewelry.us.org/
http://www.tory-burch-outlet.in.net/
http://www.tory-burchoutlet.us.com/
http://www.louboutin.jp.net/
http://www.louis-vuittoncanada.ca/
http://www.louisvuitton.jp.net/
http://www.louis--vuitton.org.uk/
http://www.louisvuitton.so/
http://www.louisvuittonas.com/
http://www.edhardy.in.net/
http://www.levisjeans.com.co/
http://www.bcbgdresses.net/
http://www.bebeclothing.net/
http://www.harrods-london.co.uk/
http://www.guccishoes.com.co/
http://www.ralphlaurenoutletonline.us.org/
http://www.true-religion.com.co/
http://www.truereligionjeans.net.co/
http://www.truereligion-outlet.com.co/
http://www.uggaustralia.net.co/
http://www.uggboots.net.co/
http://www.uggbootsclearance.com.co/
http://www.uggsonsale.com.co/
http://www.uggsoutlet.com.co/
http://www.uptocoachoutlet.com/
http://www.vansshoes.us/
http://www.weddingdressesuk.org.uk/
http://www.yogapants.com.co/
http://www.ugg-boots.us.org/
http://www.poloralphlaurenoutlet.net.co/
http://www.burberryoutletonline.ar.com/
http://www.toms-outlet.net.co/
http://www.michaelkors.in.net/
http://www.christianlouboutinoutlet.net.co/
http://www.toryburchsale.com.co/
http://www.pradaoutlet.com.co/
http://www.longchamp-handbags.in.net/
http://www.longchampoutlet.com.co/
http://www.chanel-bags.com.co/
http://www.truereligion-outlet.us.org/
http://www.abercrombie-and-fitch.us.com/
http://www.timberlandboots-outlet.net/
http://www.timberland-shoes.com/
http://www.tommyhilfiger.net.co/
http://www.tommy-hilfigeroutlet.com/
http://www.tomshoesoutlet.com/
http://www.toms-outlet.in.net/
http://www.toms-shoes.com.co/
http://www.hollisterclothing.in.net/
http://www.newbalance-shoes.org/
http://www.converse--shoes.net/
http://www.lululemonoutlet.com.co/
http://www.nfl-jerseys.in.net/
http://www.cheapjerseys.us.org/
http://www.rolex-watches.us.com/
http://www.rolexwatchesforsale.us.com/
http://www.p90xworkout.in.net/
http://www.giuseppezanotti.com.co/
http://www.maccosmetics.net.co/
http://www.instyler.in.net/
http://www.mizunorunning.net/
http://www.handbagsoutlet.com.co/
http://www.hilfigeroutlet.in.net/
http://www.kate-spade.com.co/
http://www.katespade-outlet.com.co/
http://www.kate-spades.com/
http://www.longchamp.us.org/
http://www.longchamp.com.co/

Comment Form
★下記に2つの英単語をスペースで区切って入力してください

Home > PHP > PHP - $_COOKIE -

Search
Feeds

Page Top