Web制作Tips -2ページ目

キャッシュ制御(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のセキュリティについて紹介している本です。

実践的なプログラムを組む場合に必要な開発の

要点が纏まっています。


商用サイトを構築する場合は、ここに書いてあることを

十分理解しておいた方が良いと思います。


セキュリティの学習に終わりは無いので、これを基礎にして

さらに深く研究していくことをお勧めします。


PHPの参考書紹介(2)

ハーシー
速効!図解プログラミングPHP + MySQL―Windows/Linux PHP5対応

PHPに少し慣れてきてから読んでみると、いろいろと発見があると思います。

全体的に重要事項がコンパクトに纏められているので、

とても勉強になると思います。


構成がしっかりしていて、読みやすい。


最後の方には、テンプレートエンジンであるSmartyを使った

アプリケーションの紹介がある。


PHPの参考書紹介(1)

豊崎 直也
TECHNICAL MASTER はじめてのPHPプログラミング―PHP4.3対応

PHPを最初に学ぶ人にとっては分かりやすい本だと思います。

PHPの入門的なところから、MySQLへの接続方法、SQL文の基礎など

最低限知っておかないといけないことは、大体網羅していると思います。

もちろん、こえだけでは足りないので、さらに学習を進めないといけませんが、

PHP入門者にはお勧めだと思います。


SEO対策の参考書

渡辺 隆広
検索にガンガンヒットするホームページの作り方―SEO(検索エンジン最適化)テクニックで効果的にPRしよう

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のインストール方法は別の機会に紹介します。