⇒[[山内の授業のページ]]

アクセス数 &counter();  このページの最終更新 &lastmod();

***プロジェクト 山内担当分 [#za9537ba]

タイトル: PHP言語を用いて、サービス提供型のホームページを作る

概要:
例えば情報検索やオンラインショッピングのサイトなど、サーバーが何らかの計算や処理の結果を送り出すようなホームページサイトがあります。サーバーがユーザからの入力を受け取って計算処理をし、結果を表示するようなホームページサイトを企画し、構築します。

実施方法:~
2009年度から初めて2年生と3年生の合同プロジェクトになります。学年の違う仲間と混成チームを組んで、協力・補間して1つの作品を仕上げて下さい。初めての試みなのでいろいろと不都合も起こるかもしれませんが、是非みんなで協力して有意義な時間にしましょう。~
第1回に8名ずつのグループに分けます。~

全7回は次のように使う予定です。
|   |グループ3|グループ4||
|第1回|4/10|5/29|プロジェクトの概要説明、基本知識の学習(1)|
|第2回|4/17|6/05|基本知識の学習(2)|
|第3回|4/24|6/12|基本知識の学習(3)、サイトデザイン|
|第4回|5/01|6/19|サイトデザインまとめと発表、製作(1)|
|第5回|5/08|6/26|製作(2)|
|第6回|5/15|7/03|製作(3)|
|第7回|5/22|7/10|プロジェクト発表|
|第1回|4/09|6/04|プロジェクトの概要説明、基本知識の学習(1)|
|第2回|4/16|6/11|基本知識の学習(2)|
|第3回|4/23|6/18|基本知識の学習(3)、サイトデザイン|
|第4回|4/30|6/25|サイトデザインまとめと発表、製作(1)|
|第5回|5/07|7/02|製作(2)|
|第6回|5/21|7/09|製作(3)|
|第7回|5/28|7/16|プロジェクト発表|

基本知識のための資料(章別ファイル):
-&ref(chap1.pdf,,.廛蹈献Дトの概要);、
&ref(chap2.pdf,,▲曄璽爛據璽犬HTMLタグ);、
&ref(chap3.pdf,,フォームによる入力);
-&ref(chap4.pdf,,PHP言語);、
&ref(chap5.pdf,,ゥ侫ームとPHPプログラム);
-&ref(chap6.pdf,,Ε如璽織戞璽垢隆霑鍛亮);、
&ref(chap7.pdf,,MySQLを使ってみる);、
&ref(chap8.pdf,,PHPからMySQLを呼び出す);

&ref(all.pdf,,資料一括ダウンロード);



***おまけの資料 [#qb471234]
-セッション管理
--セッション管理をする
---セッションの考え方: Web (http) は、異なる画面の間で≪同じユーザが見ているか≫という情報を持たない。それを持たせるためには、PHPではsessionという機能を使う。~
[[セッション管理の解説:http://www.scollabo.com/banban/php/php_14.html]]、 [[セッションの解説:http://kamakura.cool.ne.jp/oppama/oswa/phpsession.html]]、 [[セッションの解説:http://c-brains.jp/blog/wsg/08/05/22-193020.php]]
---どんな時にセッションが欲しいか: あるページで入力した内容と、次にとんだページで入力した内容が、関連するものであるとき。たとえば、欲しい商品を入力するページを「送信」し、それによって支払い金額を計算して次のページに表示するとき、それに対して「OK」という入力をさせるとすると、違うページで入力することになる。
---認証とセッション: ユーザ認証をした時、認証をしたページと次の(それ以降の)ページとの間で、上記の≪同じユーザが見ているとは限らない≫の状況が起こるので、後ろのページが認証されていないことになる。なので、セッションを使って同じユーザであるようにしなければならない。
---[[PHPマニュアルのセッションの項:http://jp.php.net/session]]
--ユーザの認証をする。
---FORMによってユーザにIDとパスワードを入力(ログイン)させ、サーバー側で持っているパスワードと一致するかどうかを調べればよい。データベースを使うのが簡単だろう。IDとパスワードを保持するテーブルを作っておけばよい。
---テーブルへの登録は、それなりに考えた方法で行う必要があるだろう。たとえば、ヾ浜者IDでログインしたユーザのみID+パスワード登録を許す、▲罅璽極椰佑ログインしたときだけパスワードの変更を許す、といった組み合わせが考えられる。
--認証とセッションを組み合わせる
---認証した結果をセッション内のすべてのページに適用する(つまり、最初に正しくログインしないと、以降のページにアクセスできない。以降のページに直接URLを書いてアクセスしても、見せない)ためには、各ページのPHPの先頭でセッションを確認し、正しくなければ打ち切る、という仕組みを入れる必要がある。
---例(データベースを使ってユーザ認証、ただしMySQLではなくPostgresSQLを使っている):[[第3回:PHP応用 6.セッション管理:http://www.stackasterisk.jp/tech/php/php03_06.jsp]]

--非常に単純化したサンプルプログラムを作った ⇒ [[山内のセッションサンプル>山内の授業のページ/10春/プロジェクト/セッションサンプル]]
---本当はもっときちんと作らないとセキュリティが穴だらけだが、原理だけを理解するためのごく単純化したサンプル。

--付言: ややこしいので、PHPではライブラリが提供されている。PHPLIBや、PEARのSESSIONを使うことができるが、pegasusの環境では用意していない。
-ファイルをアップロードする [[PHPマニュアル:http://jp.php.net/features.file-upload]]、[[PHP入門講座アップロード:http://w1.nirai.ne.jp/freeze/main/file09.html]]、[[山内のサンプル>山内の授業のページ/08春/プロジェクト/アップロード]]

-PHPに引数を渡す~
HTMLページのURLの後ろに"?"を付けて、引数を書くことができる。~
たとえば、http://********.php?name=alphaとかhttp://*******.php?param=hogehogeとか。
このURLによって起動されるページ(phpプログラム)から、alphaなりhogehogeなりを読み出すことができる。具体的には、システムで定義される変数_GET["name"]にalphaが入っていたり、_GET["param"]にhogehogeが入っていたりするので([[PHPマニュアルのここ参照:http://www.php.net/manual/ja/reserved.variables.get.php]])
、それを読み出せばよい。~
~
これを使って、こんなことができる。
    ファイル screen1.php
 <?php
   print('<html> <body>');
   for ($i=0; $i<4; $i++) {
     print('<a href="screen2.php?num=' . $i . '">button' . $i . '</a></br>');
   }
   print(' </body> </html>');
 ?>
~
    ファイル screen2.php (クリックで飛ぶ先)
 <?php
   print('<html><body>');
   print('This is Screen ' . $_GET["num"]);
   print('</body></html>');
 ?>
~
#ref(parameter1.JPG,right,around,wrap);
screen1を実行すると、右の画面が得られる。選択肢としてループで4つの選択肢button0〜3を書いている。~
~
この中から、たとえばbutton2をクリックすると、URL "screen2.php?num=2" をアクセスしようとする。これは、ファイルscreen2.phpを起動すると同時に、引数としてキーワードnumの引数の値2を与えている。~
~
呼び出されたscreen2.phpで、$_GET["num"] によって引数を抽出すると、値2が読めるので、画面に This is Screen 2 のように表示できる。
#ref(parameter2.JPG,right,around,wrap);

***アクティビティの補助 [#w57d7456]
アクティビティの補助手段として、E−ラーニング管理システムmoodleを使ってみます。
-ログイン ⇒ 習志野キャンパスのメールのユーザIDとパスワードで認証
-Wiki 〜 知識の蓄積に使えると思います
-フォーラム 〜 議論に使えると思います
-

アクセスは、http://oregano.yy.is.sci.toho-u.ac.jp/moodle から、「情報科学プロジェクト・山内グループ」をクリック

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS