こんにちは。hirafujiです。
今日のphpでは、セッション機能について勉強しました。
【セッション機能とは?】
変数を、サーバで保持するための機能。
※セッションとクッキーがあるが、このへんはまた後日。
- 【主な用途】
- 「会員専用ページ」や「ショッピングサイト」等。
- 【セッション機能の使い方】
- 1.変数を保持したい全てのファイルの一番最初に、セッションスタート関数を書記述する。
2.セッション変数に値を代入する。- ・セッションスタート関数とは
- 「セッションをスタートしますよ」という合図となる関数。
「session_start();」の様に記述します。 - ・セッション変数とは
- セッション機能を使うために用いられる変数。
この変数に代入した値のみ、画面をまたいで保持することができる。
通常、セッション変数には配列で値を代入する。
「$_SESSION["キー名"]=”値”;」の様に記述します。
- 【注意事項】
- セッションスタート関数を記述しないと、セッション変数もただの変数として扱われます。
以上、セッション機能の概要です。
このセッション機能によって、具体的にはどのようなことが出来るようになるのでしょうか?ちょっと試してみましょう。
【実際にセッション機能を使ってみよう!】
- 【テーマ】
- お金のかかるスロットマシーンを作ろう!
- 【設計図】
-
- 3つの数字が回るスロットマシーンがある。
- 最初に1000円持っている。
- スロットをするには一回100円かかる。
- 数字が3つ揃うと500円もらえる。
- お金がなくなるとゲームオーバー!
皆さんならどんなコードを書きますか?
ちなみに私は、以下のように書きました。参考までに掲載します。
- 【hirafujiのコード】
-
<?php session_start() ; if (isset ($_SESSION['yen']) ) { } else { $_SESSION['yen'] = 1000 ; } ?> <html> <head> <title>こんにちは!僕スロット!</title> </head> <body> <p>スロットは一回100円です。</p><br /> <form action='このコードを保存するファイル名' method='post'> <input type='submit' name='button' value='スロットをまわす!' /> </form> <?php if (isset ($_POST['button']) && $_SESSION['yen']>=100) { $left=rand(1,9) ; $center=rand(1,9) ; $right=rand(1,9) ; echo $left.",".$center.",".$right."<br /><br />" ; if (($left==$center) && ($center==$right)) { $_SESSION['yen'] +=400 ; echo "フィーバーだよ!!500円バックだよ!やったね!<br /><br /> あなたの所持金は".$_SESSION['yen']."円だよ!" ; } else { $_SESSION['yen'] -= 100 ; echo "<br /><br />あなたの所持金は".$_SESSION['yen']."円だよ!" ; } } elseif (isset ($_POST['button'])) { echo "お金が足りないよ><!" ; } else { echo "ボタンを押してね!" ; } ?> </body> </html>
7,7,7で大フィーバーとか、所持金2000円以上でディニョン君人形プレゼントとか色々と装飾もあったんですが、長くなるので今回はシンプルに・・・。
変なところがあればご指摘いただけると嬉しいです。よろしくお願いします!
・・・と、こんな感じで、セッション機能を学んだことで色々なことが出来るようになりました。
最近、phpの講義が面白くて仕方ありません。これからもこの調子でがんばります!
—-
(2008/05/29 11:29 hirafuji追記)
【コード】の5行目の「$en」を「1000」に訂正しました。ご指摘いただきありがとうございました!
また、「$_SESSION['en']」を「$_SESSION['yen']」に訂正しました。
—-
(2008/05/29 17:28 hirafuji追記)
動画をご覧下さい!
part.1
part.2

by takeru-c, on 05.28.08 @ 11:36 PM
設計図・2「最初に1000円持っている」が実装されていないのでスロットができません><
by hasumi, on 05.29.08 @ 11:06 AM
難しいスロットですね、試してみたのですが数秒程で所持金がなくなりました。。
ソースに関してですが、僕は始めのif文が気になって仕方ありませんでした。
if(! isset($_SESSION["en"])) って書けばelse を書かなくてもすみますよ!
僕もコードを書いてみたので、どんな風に書いたか気になったら声かけてください。
by hirafuji, on 05.29.08 @ 1:40 PM
>takeru-cさん
コメントありがとうございます!
そして、ご指摘ありがとうございました!これではスロットできませんね>< 失礼いたしました。
早速訂正いたしましたので、ぜひもう一度お試しください。
また何かございましたら教えて下さい。よろしくお願いしますです!
by hirafuji, on 05.29.08 @ 1:46 PM
>hasumiさん
コメントありがとうございます!
確かに!そう書けばいいんですね!
実は、本人もその部分の書き方は気になっていました・・・。勉強になりました。ありがとうございます!
hasumiさんのコードもぜひ見せてください。あとで伺います!
by monsterbites, on 05.30.08 @ 2:17 AM
>最近、phpの講義が面白くて仕方ありません。
こう思えることは素晴らしいですね!!
ただ仕事だから与えられていることをやっている人よりも、
仕事の中にも面白さを見付けて楽しめる人の方が、絶対に伸びます。断言できます!
お互いにその気持ちを忘れずにいたいですねw
hirafuji++;
by hirafuji, on 05.30.08 @ 6:53 PM
>monsterbitesさん
とても嬉しいコメントありがとうございます!・・・インクリメントの使い方ウマいですね(笑)
出来ないならできないなりに楽しかったんですが、出来るようになったらさらに楽しくなってきました!
いつまでもこのスタンスでがんばりたいです^^!