2011/02/28

phpクラスとエラーレベル

php講習 2/28 13週目

・掃除は雨でお休みでした。
・今日からSmartyの予定でしたが、クラスの説明で1日かかった。
<1時間目>
・担当の先生が変わったため、個別に先生と面談(金曜日の続き)
・面談の終わった人は、掲示板の課題。
 テキストの掲示板がある人は、クラス、オブジェクト指向の課題をメーリングリストで送ります。

クラスについては、12/20-21にやってるが内容をすっかり忘れてました。
・クラスの記述では、クラスを定義するファイルは別に作成し呼び出す(include)ようにする。
 (いままでの課題などでは1つのphpファイルに記述していた)

<2時間目>
・クラスファイルの命名規則、クラス名を最初大文字してそのあと「class」を付ける
 Human.class.php
 Dog.class.php
・メールで送付された課題の練習

<3-6時間目>
・課題の練習と解説

・php.iniで文字列検索「error_reporting
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED 

error_reporting = E_ALL
実際の開発では、エラーが出ているものは全てつぶす
今までの説明では、ワーニングでもエラーにせずに済ませていた。
・開発時はエラーをつぶすためonにする。
本番サーバでは、攻撃のヒントになるのでoffにしている。
レンタルサーバでは、php.iniファイルは設定できないので、ini_set()で設定する。
・この講習では、php.iniを元に戻す。
・アクセス修飾子(アクセス権)
public      クラスの外からも参照可能
private     クラス自身からの参照のみ
protected  クラス自身と継承したクラスから参照可能
概念の話しなので、実際にプログラムと動きを見る方がわかりやすい。
・クラスのはなし、継承から。
継承は、symfonyで使う。使ううちに判ってくる。

・クラス図で検索するとクラスを図にしたものの説明がある。

・住所録、login.php
テーブルの内容を読んだら、デバック中は配列(レコード)の内容を確認しておく。
・明日からsmarty、Webテキストの拡張2の状態から始めます。
出来ていない人は準備しておいて下さい。
(おそらく、1月に先生からメールで配布されていたはず)

2011/02/25

php住所録作成、セッション

php講習 2/25

・今日はいい天気です。
花粉症で目が痒い、掃除はお休みしました。

<1時間目>
・今日も課題の作成なし
・住所録、機能拡張の続き(今日までの予定)
テスト項目の整理

<2時間目>
・住所録、機能拡張の続き
テスト、動作確認
一般ユーザで表示が消えない
→記述の間違い 
if ($login_authority=2) {
  ↓
if ($login_authority==2) {
パスワードチェックで半角英数のエラーが出ない 
→ ログイン画面で関数を呼んでいなかった
ログオン画面への戻りでエラーが表示されるときがある
→ タイムアウトのとき、外部変数のエラーが出る
<3時間目>
・住所録、機能拡張の続き
 ログオン画面への戻りでエラーが表示されるときがある
   → タイムアウトのとき、外部変数のエラーが出る
引き続き調査中、Webにあるエラーの対策をいくつか試みたがいずれも効果なし

<4時間目>
・住所録、機能拡張
ログオン画面とセッションコントロールの説明

<5-6時間目>
・住所録、機能拡張
   → タイムアウトのとき、外部変数のエラーが出る
セッションの関数を変更したら、エラーになった。戻すと出ない。
Webで調べたら資料があった、phpのバグらしい。
($_SESSIONのキーとグローバル変数が同じ場合で、
その$_SESSIONが外部からグローバル変数とは関係ない外部変数を
別のグローバル変数を介して受け取っている場合)


session_start();
$aaa = 'abc';
$bbb = $_GET['abc'];
$_SESSION['aaa'] = $bbb;

・変数名を変更して対応

 上の例だと$aaa --> $aabに相当

・来週から、smartyの予定
 クラスのことがよく判っていない状況でデバックが出来るものだろうか。