PHP活用術
phpで機動的なサイト作り
ローカルマシンにインストール
自分のパソコンでphpを走らせよう。全て無料ソフトで実現出来ます。
- まずApacheをインストール。
- それからphpをインストール。
- 各種設定のヒント
- テキストエディタは必需品。
phpヒントその他
getとpost
- GETメソッドはURLの末尾に「?」をつけ、「パラメーター名="値"」という形式でデータを送る。そのせいで、誰からでも容易に送信内容見ることができる。
- 上記の理由により、GETメソッドを使ったCGIは予期せぬ使い方(いわゆるスクリプト荒らしなどや「人力」でアドレスバーを書き換えてのアクセスなど)をされる場合があるので、適切な予防対策が求められる。
- GETの際のURLの一例
http://hogehoge.example.com/form.php?text=123456&btn=GET%E9%80%81%E4%BF%A1 - POSTメソッドで送るデータはWebブラウザ上には現れない。
- GETよりは悪用されにくい特徴が有るが、クライアント側のマシンで開発者用のツールを用いることで通信内容の解析が可能になる。また通信が暗号化されていない場合、サーバーにアクセスする際の通信をどこかの過程で傍受されて解析される可能性はある。
引用符に注意
- 引用符はダブルクオート「"」、シングルクオート「'」どちらも使える。
- シングルクオート「'」では変数やエスケープ文字は展開されない。
- JISコード(ISO-2022-JP)の2バイト文字列は必ずシングルクオート「'」で括る。
フルパスについて
- ドキュメントルート(サイト内で「href="/"」で表されるURLに対応するディレクトリ)のフルパスを取得する。→$_SERVER["DOCUMENT_ROOT"]
- バーチャルホストを使用している場合、ドキュメントルート内のファイルで__FILE__によって取得した物と異なる場合があるので注意。
- インクルード文などは後者のパスで動作する。
- realpath() 関数でサーバー内の絶対パスを取得することもできる。
ヒアドキュメント活用
- 終端識別子の前には改行。
- 終端識別子の後には文末を示す「;」以外は書けない。
- ヒアドキュメントの中でも変数は展開されるので注意。
- Nowdoc では変数は展開されない。$もそのまま出力される。終端識別子をシングルクオートでくくるほかはヒアドキュメントと同じ記法。
- 識別子に使えるのは英数字だけ。
- Nowdoc のテスト 変数は展開されず、"$"もそのまま出力される。例: $text
- php7.3より前のバージョンとそれ以降のものとで挙動が異なるので注意が必要。
外部ファイルの読み込み
- file_get_contents() を使ってテキストファイルの内容を変数に読み込むことが出来る。
- ファイル内容を表示するだけならreadfile()も使用できる。
--
読込ファイル: https://www.shichido.net/shichido.txt
日時関数の活用
- 現在日時の取得: time()
- ファイル(自分自身)の更新日時取得: getlastmod(), 特定ファイルの更新日時取得: filemtime()
- 自分自身のfilenameは basename(__FILE__) で取得できる。
- 日付の整形はdate()で。
例 echo date("Y-m-d H:i:s",getlastmod());
filemtime= 2024-04-16 14:38:41
- 日付の書式付け一覧
日付の書式指定 (ローカル版)
式の前に@(アットマーク)
- エラー制御演算子
- http://php.net/manual/ja/language.operators.errorcontrol.php
- エラーメッセージを表示させないようにする。
XREA 2017年のサーバー移行に関して
- phpのデフォルトはphp 7.0 になった。そのため文字化けが生じる場合がある。次の対応策1~3のいずれかで解決する。
- https://www.xrea.com/info/brandnew2017.php
- default_charset が「空」からUTF-8に変更になった。
- 対応策1 /public_html/.fast-cgi-bin/php70.ini に、下記一行を追記する。
default_charset = ""
(※ディレクトリごとに制御する場合は、PHPスクリプトと同階層に、上記一行を記載した「.user.ini」ファイルを設置。) - 対応策2 PHPファイル先頭(空行も含め何も文字出力をする前に)、下記一行を追記。
ini_set('default_charset', '');
または文字セットをヘッダーで宣言する 例: header("Content-Type: text/html; charset="Shift_JIS"); - 対応策3 PHPスクリプトをUTF-8で記述する。
- 対応策1 は反映まで2~3分かかる。(特に反映させる為の操作は必要ない。)
URL取得・表示
- 現在のページ(ドキュメントルート以下): $_SERVER["REQUEST_URI"]
- ホスト名を取得する: $_SERVER["HTTP_HOST"]
- プロトコル(http/https)を取得する: (empty($_SERVER["HTTPS"]) ? "http://" : "https://")
- まとめると $fullurl= (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
参考: https://qiita.com/tsujimomo/items/c293d15e34646a826266
文字列の分割
- split関数は廃止
- explode関数で代替
画像表示
U/H5
Webmasters' Tips
Update :2024-04-16 14:38 php 8.1.28
Update :2024-04-16 14:38 php 8.1.28