カテゴリー別アーカイブ: PHP

PHP: phpMyAdminのアップグレード・インストール

前記事に続き(単にしばらくほったらかしのOSSが多かっただけに過ぎないが)、phpmyadminもしばらくアップデートしていなかったのでこの際実施した。

まず、最新版を以下のサイトよりダウンロード。
phpMyAdmin

続いて既存のphpmyadminディレクトリをリネームの上、新バージョンへ移行していく。

因みに、最近のバージョンのLanguagesの設定は過去とは少々変わったようだ。危うくlocale -aのja_JP.UTF-8を盲目的にセットするところだった。
Configuration — phpMyAdmin 4.0.5 documentation

その為、config.inc.phpファイル内の修正箇所は以下の通り。

ここで、実際にブラウザからログイン後、日本語UIが確認できればOK。最後にゴミ掃除をすれば完了。拡張機能の無効の警告については今設定ではスコープ外なので割愛。最後に以下の通りゴミ掃除すれば完了。

新バージョンのUIは中々洗練されていてよい。何でも新しい方が良いもんだね。

PHP: Mac+MAMP環境でのPHPUnit, SkeletonGeneratorのインストール方法

PHPでの単体テストモジュールであるPHPUnitをMac OS上のMAMP環境で構築する。基本的に参考サイトに記載の公式のインストール手順通りに行う。(PHP実行パスはMAMP環境上の指定VersionのPHP実行ファイルを指定する必要はあるが。)

続きを読む

Mac+MAMP+Eclipse PDTでPHPのCLIデバッグ環境(Xdebug)を構築

Mac上でのPHP開発環境のセットアップとCLIデバッグ環境の構築で幾つか躓いたところがあったので、備忘録もかねて下記にまとめておく。

MAMP+Eclipse PDTの入手

以下のサイトよりそれぞれダウンロードしインストールする。

続きを読む

Eclipse: ‘Animation start’ has encountered a problemの対処例

eclipse_animation_start (Mac OS)

表題のエラーはMac OS+Eclipse(PDT)+PHP環境で発生。結論から言うと、対処法としては参考サイトに記載のフォーラム内容を参考に以下の手順で解消。

対処法

下記の設定ファイル中の、

以下の行を削除。

もしくは適当なアイコンファイルパスを指定する。

参考サイト

  1. Eclipse Community Forums: PDT » 'Animation Start' has encountered a problem (on launch)
  2. Eclipse for php on Mac OSX 10.5: "Animation Start" error – Stack Overflow

PHP: 添字配列の初期化、出力、代入

ソースコード

実行結果

リファレンス

PHP: フォーム情報の送信・受信 – POSTメソッド

HTMLフォームの情報をPOSTメソッドで送信し、送信されたデータをPHPスクリプトで取得しHTMLに埋め込み表示してみます。フォームの各フィールドははformタグ中でinput、select、textareaタグ等を用いて指定します。特にinputタグは下表の様にtype属性が色々あります。

inputタイプ type属性
テキスト入力 type="text"
パスワード入力 type="password"
ラジオボタン type="radio"
チェックボックス type="checkbox"
送信ボタン type="submit"
ボタン type="buttun"

フォームデータの送信先はformタグのaction属性で指定します。また、そのときのリクエストメソッドの指定はformタグのmethod属性で指定し、ここではPOSTを用いるのでmethod=”post”と記述します。POSTはGETメソッドと異なり特に文字制限はありません。

ソースコード

form_test.html

フォームデータは同ディレクトリに設置したshow_form_data.phpファイルに送信しています。

show_form_data.php

POSTリクエストでshow_form_data.phpへアクセスした場合はexit関数でスクリプトを終了します(→PHP: exit – Manual)。

htmlspecialchars関数で特殊文字をエスケープします(→PHP: htmlspecialchars – Manual)。今回はPOSTメソッドに関する練習用スクリプトなのでバリデーション処理は入れていませんが、実際はセキュリティ対策と合わせて色々フィルタするなり、リダイレクトで別ページに誘導するなりの処理が必要です。最近はこの辺の処理をフレームワークで上手くラップしてくれるのでかなり楽になっています。

あと、余談ですがforeach文では操作対象の配列のコピーを作成して、コピーに対して処理していきます。

実行結果

form_test.html

HTMLフォームへの入力

show_form_data.php

POSTされたデータの出力

PHP: クライアントへのCookieの設定と削除 – setcookie()関数

クライアントのブラウザにCookieを保存・削除する手順の練習をしてみました。

Cookieはサーバからクライアントへレスポンスを送信する際にヘッダに含まれる情報で、Cookie受信以降のクライアントのリクエストにはCookieの情報が含まれます。これによって、クライアントの識別や状態を管理することが出来ます。

Cookieをクライアントに送信する際は有効期限を設定し、削除する際はその有効期限を過去のものとして期限オーバーを装い、ブラウザに削除させます。

具体的に以下の例では、setcookie(<cookie名>[, <値>[, <有効期限>[, <送信パス>[, <送信ドメイン>[, <httpsのときのみの送信?>]]]]])でCookieを設定、削除します。cookie名には変数の他に配列も使用することが出来ます。

ソースコード

Cookieを用いたクライアントへの情報の保存とアクセスのカウント例です。クライアントブラウザ側からのリクエストに含まれるCookieへのアクセスには配列$_COOKIEを用います。

実行結果

1回目のアクセス

2回目以降のアクセス(偶数回)

3回目以降のアクセス(奇数回)

このときのCookieの保持状況をブラウザで確認してみると、
ブラウザFirefoxでCookieを確認

確かに保存されていますね。次のアクセスの際、これを読み込み以下の項目を表示しますが、

直後に削除されます。

Cookieはクライアントを識別するのに便利な機能ですが、これは改ざんされる恐れもありセキュリティに注意して扱わなければなりません。なので、上の例のような分かりやすい配列名で重要なデータ(例えばパスワードなども)を扱うのも好ましくないようです。

クッキーを扱う際の注意点

  • ブラウザの設定によってはCookieをうけつけない。
  • 1つのCookieのサイズは最大4KBまで
  • 1つのドメインでは最大20個まで
  • Cookieの有効期限の判定はクライアントの時計に従う