2015年05月07日

AN HTTPD Server と PHP

Windows 用 WWW サーバー

実運用では無く、学習用の WWWサーバーとしてはこれ以外に無い『AN HTTP Server』ですが、古いソフトなので使い方にコツがあります

※ 古いソフトとなってしまいましたが、検証(テスト)用であればこれで十分です。

取り急ぎ、以下の画像の設定が可能であればそれで設定は十分です。





あとは、C:\httpd142p\user というディレクトリを作成してその中でテストする事が最も簡単です


PHP

PHP For Windows: Binaries and sources Releases

XP ならば、VC6 x86 Non Thread Safe で確実だと思います
Windows7 ならば VC9 x86 Non Thread Safe を試してみて下さい

Zip パッケージを C:\ にダウンロードして解凍して、c:\php にリネームして、
c:\php\php-cgi.exe が存在するようにして、c:\php に以下の php.ini をダウンロードします

php.ini のダウンロード

自分で作成する場合

php.ini-development を php.ini にリネームするのがいいと思います。(以下を参考にして下さい。)
















posted by at 2015-05-07 10:41 | 環境 | このブログの読者になる | 更新情報をチェックする

2013年11月29日

PHP : セッションの注意事項 : 絶対に知っておくべきこと

セッションはアプリケーションを作成する上でのとても重要な機能で、今日の PHP の地位は、この機能を使いやすく実装したおかげだと言えるくらいです。確かに、理屈を知らなくても、簡単に使えてしまうのですが、あらためてドキュメントに目を通すと、良く知らない人では混乱するような事しか書いていません。

セッションを使う為のニ原則

1) ソースコードの先頭で、session_start(); を実行する。
2) セッションの内容をクリアしたい場合は、$_SESSION = array(); を実行する。

とりあえずこの二つを知っておけば間違い無いでしょう。クッキーの存在が基本事項ですが、いまどきクッキーを遮断するようなクライアントもいないでしょうから、特別意識する必要は無いと思います。

で、この裏付けページが以下のページにあるサンプルです。

PHP: session_destroy - Manual

ここに、$_SESSION = array() の記述と、もう少し込み入った内容があります。しかし、通常完全にセッションを削除する理由は見当たらないので、そこは気にせず、以下を気にして下さい

 $_SESSION を使っていない古いコードでのみ session_unset() を使用するようにしましょう。 
つまり、session_unset() を使うなと言う事で、さらに、session_unset() のページへ行くと、以下のように注意が書かれています
$_SESSION が使用されている場合、セッション変数の登録を削除するために unset() すなわち、unset ($_SESSION['varname']); を使用してください。 
$_SESSION スーパーグローバルを使用した セッション変数の登録が不可能になってしまうため、 unset($_SESSION) を使って $_SESSION を完全に unset しないでください。 
これは、つまり 個別の変数の削除は、unset ですが、unset($_SESSION) は、絶対にするなというややこしい警告です。ですから、そのような処理が必要な場合は、$_SESSION = array();で全てをクリアする事を推奨します。 unset ($_SESSION['varname']); は、最後の手段です
posted by at 2013-11-29 09:12 | 環境 | このブログの読者になる | 更新情報をチェックする

2010年09月07日

PHP 用の基本エディタとして Terapad を利用する

以下のリンク先からダウンロードしたスクリプトを実行すると、Terapad のオリジナルサイトから zip をダウロードして解凍し、配置して設定ファイルを作成します。




※ Terapad は、2012/11/12から更新されていませんが、安定したエディタです。(但し、UTF-8 で表示可能な特殊文字を表示できないと言う問題があります)

以下は、プログラムを書くのに重要な個別に設定する必要のある項目です。
( ダウンロードしたインストーラでは、設定済です )








posted by at 2010-09-07 09:11 | 環境 | このブログの読者になる | 更新情報をチェックする

2010年07月31日

ページからの入力を受け取る $_GET と $_POST

この二つの変数は、スーパーグローバル変数と言って、PHP がいかなるスコープでも参照を保証する特別な変数です。

通常、グローバルとローカルの差は明確で、関数定義内における変数は、デフォルトでは常にローカル変数で、グローバルな変数を参照するには、

global 変数名;

と言う宣言をする必要があります。そのような制限をされない変数がスーパーグローバル変数です。

$_GET と $_POST は、ページ内の FORM 要素内で定義された入力関係の要素( INPUT、SELECT、TEXTAREA ) で入力されたデータがセットされますが、FORM 要素の method 属性によって、どちら側にセットされるか決定します。ですから、厳密に分けて使う場合は、どちらのメソッドで送られて来たかチェックする必要がありますが、それは、$_SERVERREQUEST_METHOD でチェックします。
if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) {
}
else {
}

しかし、ソースコードの再利用を考えた場合、どちらのメソッドを使うかは、再利用側の都合でもあるので、以下のような方法で常に $_POST参照するという方法もあります。
foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}


これは、「外部から来る変数」と言われる変数である、$_GET と $_POST ですが、PHP 側で「どこでも使えるグローバル変数エリア」として意図的に使えるという事も意味します。全てのグローバル変数を参照する、$GLOBALS や、元々 $_GET と $_POST をマージした $_REQUEST という変数もありますが、あくまで基本は $_GET と $_POST ですので、扱い方と特性を十分に知っておく必要があります。

例えば、SQL インジェクションに関連するフィールドにはそのような対象であるというprefix を付けておいて、前の例文のループ内で変換しておくというような運用方法もあります。
( または、別の変数にセットして管理する等 )

さらに、入力データですから、デバッグには欠かせない以下のような内容の表示方法も知っておく必要があります
print "<pre>";
print_r($_GET);
print_r($_POST);
print "</pre>";



posted by at 2010-07-31 19:05 | 環境 | このブログの読者になる | 更新情報をチェックする