キャッシュ制御(session_cache_limiter)
ブラウザの「戻る」ボタンを押すと、以下のようなページが表示されることがあります。
警告:ページの有効期限切れ
要求したページは、フォームで送信された情報を使用して作成されました。
このページは、もう利用できません。
セキュリティ保護のため、情報は自動的には再送信されません。
情報を再送信し、この Web ページを表示するには、
ツール バーの [更新] ボタンをクリックしてください。
これを解決するには、PHPのスクリプトの最初に以下の一行を追加します。
session_cache_limiter('private, must-revalidate');
このようにすると、「戻る」ボタンを押しても、「ページの有効期限切れ」の表示はなくなる。
この設定により、「戻る」ボタンを押すと、前のページが再度読み込まれます。
session_cache_limiterの代表的な使い方には、
Proxyサーバやブラウザにキャッシュを許可する:
session_cache_limiter('public');
ブラウザのみにキャッシュを許可する:
session_cache_limiter('private_no_expire');
などの使い方があります。
PHPの参考書(5)
- 大垣 靖男
- はじめてのPHP言語プログラミング入門
ある程度知識がある人向けですが、PHPを使いこなす為の
ヒントがたくさんあります。他の本にはあまり書いていないような
細かな内容まで触れているので、PHPを深く理解することが
できます。
PHP入門ではなく、PHP言語入門になっているところがポイントです!
PHPの参考書紹介(4)
- 鶴田 展之, 繁田 卓二
- PHP実用プログラミング
分量もあり初心者には向いていないが、ある程度PHPの基礎が分かってきてから
読むといろいろと勉強になる本である。上級レベルを目指す人には、お勧めです。
広範囲の話題に触れているので、これをベースにして発展学習すると、実力が
つくと思います。私もよく使っています。
PHPの参考書紹介(3)
PHPのセキュリティについて紹介している本です。
実践的なプログラムを組む場合に必要な開発の
要点が纏まっています。
商用サイトを構築する場合は、ここに書いてあることを
十分理解しておいた方が良いと思います。
セキュリティの学習に終わりは無いので、これを基礎にして
さらに深く研究していくことをお勧めします。
PHPの参考書紹介(2)
PHPに少し慣れてきてから読んでみると、いろいろと発見があると思います。
全体的に重要事項がコンパクトに纏められているので、
とても勉強になると思います。
構成がしっかりしていて、読みやすい。
最後の方には、テンプレートエンジンであるSmartyを使った
アプリケーションの紹介がある。
PHPの参考書紹介(1)
PHPを最初に学ぶ人にとっては分かりやすい本だと思います。
PHPの入門的なところから、MySQLへの接続方法、SQL文の基礎など
最低限知っておかないといけないことは、大体網羅していると思います。
もちろん、こえだけでは足りないので、さらに学習を進めないといけませんが、
PHP入門者にはお勧めだと思います。
SEO対策の参考書
SEO対策について分かりやすく解説している本。SEOを初めて学ぶ方にはお勧めです。
Web制作に関わっている方なら必ず知っておくべき内容でしょう。この本をベースにして、
さらにSEOについて勉強することを勧めます。
クッキーの参照パス
PHPでクッキーをセットする方法は、
setcookie(name,value,expire,path,domain,secure)
name: クッキーの名前
value: クッキーの値
expire: クッキーの有効期限
path: 有効なクッキーのURIのうちパスの部分を指定
domain: クッキーを有効とするドメイン
secure: セキュア属性
となっているが、value以降は省略可能です。
標準的な使い方は、
<php?
// data="テスト"、有効期限1日(60s x 60min x 24hr)
setcookie("data", "テスト", time()+60*60*24);
?>
4番目のパラメータであるpathを省略すると、クッキーをセットした同じURL内でしか
参照することができません。
ここのPathを指定することによって、参照するときのパスを変更することができます。
例えば、abc.net/doc/でcookieをセットした場合は、abc.net/doc/data/の位置から
参照することができません。その場合は、
setcookie("data", "テスト", time()+60*60*24, "/doc/data/")とすると、
abc.net/doc/data/から参照できますが、abc.net/doc/から参照できなくなります。
両方で参照したい場合は、以下のようにセットします。
setcookie("data", "テスト", time()+60*60*24, "/")
ソースコードの流出防止
PHPソースコードは、基本的にはサイトの閲覧者から見ることはできない。
なぜなら、PHPからの実行結果をApacheが受け取ってブラウザーに
送っているからです。
これは、そのファイルがPHPのファイルであるといことをApacheが理解
しているという前提で成り立ちます。
通常、.phpという拡張子が付いたものを、PHPのファイルと認識する為に
httpd.confの中に、以下の一文が入っているはずです。
AddType application/x-httpd-php .php
これにより、.phpの拡張子で終わるファイルはPHPとして実行されます。
PHPの本などを読んでいると、require_onceという関数を使って、
外部のPHPファイルを読み込んでいるのを見かける。
このとき、指定するファイル名が.phpで終わっていれば問題ないのですが、
時々、.inc(インクルードファイルという意味)でファイルを保存しているのを
見ます。
例) require_once(abc.php);
require_once(abc.inc);
.incで終わるファイルは、PHPのソースファイルと解釈されないので、
URLから直接指定されたら、その中身がすべて丸見えになってしまいます。
もし、パスワードなどのセキュリティーに関わる情報が入っていたら、
サーバがハッキングの対象になってしまいます。
こういった場合の解決方法は3つあります。
A.外部ファイルの拡張子を.phpにしておく。
B.httpd.confに以下のように記述し、.incがPHPのファイルであることを
教えておく。
AddType application/x-httpd-php .php .inc
C.外部ファイルを、公開ディレクトリ以外の所に置く
*Cは、共用サーバを利用している場合は難しいかもしれないので、
そういった場合は、A,Bになると思います。
PEARの利用
PEAR(http://pear.php.net/ )という世界中のPHPユーザが登録している
ライブラリーがある。よく使うパッケージはPEARのサイトに登録されているので、
そちらを利用する方が開発工期を短縮することができる。
例えば、RSSを読み込んで、それを解析するするモジュールは、
PEARのXML_RSSを使うと非常に簡単なコードで、
プログラムを組むことができる。
インストールは自動化されているので、とても簡単です。
今回は、Linux環境でのインストール方法を紹介する。
コマンドは、以下の通りです。
ルートユーザでないと、ファイルを所定の位置に保存できないと
思いますのでルートユーザに変更してから行ってください。
# pear install モジュール名
例)XML_RSSの場合
----------------------------------------------------------------------------
#pear install XML_RSS
downloading XML_RSS-0.9.2.tgz ...
Starting to download XML_RSS-0.9.2.tgz (3,515 bytes)
....done: 3,515 bytes
install ok: XML_RSS 0.9.2
----------------------------------------------------------------------------
"install ok"という表示が出れば、インストール成功です。
インストール途中で、以下のようなエラーメッセージが出るときがあります。
requires package `XML_Tree'
XML_RSS: Dependencies failed
これは、XML_RSSをインストールする前に、XML_Treeが必要である
ということを言っています。そういう場合は、XML_Treeを最初に
インストールしてから、XML_RSSをインストールすると
うまくいきます。
インストールしたパッケージは、以下のディレクトリ以下に保存されるので、
/usr/local/lib/php
プログラムから呼び出す為には、パスの設定が必要です。
パスの設定方法は、php.iniのinclude_pathで設定します。
include_path = ".:/usr/local/lib/php:/usr/local/include/php"
例えば、XML_RSSは、以下のディレクトリに保存されているので、
/usr/local/lib/php/XML/RSS.php
プログラムからロードする場合は、
require_once("XML/RSS.php");
と記述すれば、XML_RSSが利用できるようになります。
Windows環境でのPEARのインストール方法は別の機会に紹介します。



