設定アップロードするファイルサイズを大きくするphp.ini設定を下記のように変更する。
POSTサイズの制限も影響を受けるので、php.iniとともに変更する。 バージョン表示を消すPHPが出力するヘッダにはPHPのバージョン情報も含まれる。
PHPのバージョンを表示することはセキュリティ面から好ましいとは言えないので、特に理由がない限りはOFFにしておくのが好ましい。 " expose_php = OFF "とする。リクエストの取得GETメソッドおよびPOSTメソッドによってブラウザより渡されるデータの取得方法について。
GETメソッドシステム変数、
$_GET[] を参照する。
このようなフォームからリクエストを受け取る場合は次のように記述する。
取得できない場合は、nullが返される。
POSTメソッドシステム変数、
$_POST[] を参照する。
このようなフォームからリクエストを受け取る場合は次のように記述する。
取得できない場合は、nullが返される。
GET、POST共通システム変数、$_REQUEST[]を参照する。
$_REQUEST[] では、GETメソッド、POSTメソッド両方からのデータ取得が出来る。本来POSTされるべきデータをGETで偽装された場合に区別できないので推奨されない。 チェックボックスの処理チェックボックスでの複数チェックの状態を取得するには、HTMLは次のように記述する。
name属性を「
abc[] 」として配列表記にしておく。PHP側でデータを参照すると配列変数として得られる。 次のように添え字ありでも構わない。
このチェック状態を"hidden"にて次のフォームへ渡す場合も、同様に記述する。
ファイルの受信フォームの記述は、
<form> でenctype="multipart/form-data" を指定する。ファイル選択は、 <input type="file"> にて配置する。
PHP側では受け取ったファイルをテンポラリに保存する。
テンポラリを作るディレクトリは、php.iniで設定する。
スクリプトでは、
$_FILES 配列変数を参照することで、ファイルの詳細を得ることが出来る。ファイルを1つ選び、残り2つは空欄で送信した場合の $_FILES は以下の通り。
元ファイル名、サイズ、テンポラリファイルのパスが入っているので、これを利用する。 保存されたファイルはスクリプトの終了時に削除されるので、必要ならコピーしておく必要がある。 セッションセッションを使用するとスーパーグローバル配列変数$_SESSIONを使用して、セッション機能を利用できる。 セッションの開始/破棄
明示的に開始する場合は、 session_start() 関数を使用する。
既にセッションが開始されている場合は保存されているセッションデータが読み込まれる。
php.iniの設定で自動開始とすることもできる。
明示的にセッションを破棄する場合は、 session_destroy() 関数を使用する。
明示的に破棄しないとサーバに情報が残り続けるので、自動破棄する機構がある。 セッションの有効時間を何秒とするか、php.iniの設定
期限切れセッションデータの物理削除処理(ガベージコレクション)の起動設定。
session_start()関数が呼ばれるたびに、以下の設定値を用いて確率試行が行われる。
セッションデータの利用
スーパーグローバル配列変数 $_SESSION を使用する。
配列と同じ扱いで良い。
if (isset($_SESSION['name'])) {
print $_SESSION['name'].'さん、こんにちは!'; // 登録内容の利用
} 特定の要素を削除する場合は、 unset() 関数にて要素を削除できる。
全ての要素を削除する場合は、新たに配列を割り当てる方が早い。
Smarty
有名なテンプレートエンジン。
テンプレートは標準でファイルを使用する。ファイル以外のリソースを使用する場合は、 register_resource() メソッドにて自前で用意した関数を登録する必要がある。ファイル以外のリソースを使う
http://ml.php.gr.jp/pipermail/php-users/2004-March/021324.html
テンプレートをメモリーから読み込むサンプルが書かれているが、このままではNG。 $smarty->fetch("hensu:".$tmpl); としているが、$tmpl の中身がそのままコンパイル結果の保存ファイル名になってしまう。したがって保存ファイル名が、ファイル名として適切で無い状態になってしまうと落ちることがある。 "{" や "}" を本文で使う
Smrty処理しない範囲が決まっているなら、 {literal} ~{/literal} タグで囲む。スポット的ならそれぞれ、 {ldelim} および{rdelim} が対応している。 |
PHP >