PHP

PHP で、変数を連想配列(ハッシュ)のキーにしたい。

PHP で、

<?php $items[$item->id] = $item->name; ?>

のようにアクセスしたい。しかしこれではなぜかうまくいかなかった。Perl だとフツーに

<?php $items{$item->id} = $item->name; ?>

というように書けるのに。いったい何がいけないんだろう?

「PHP 連想配列」でググると、だいたいこんな感じの例が出てくる。

<?php $fruits = array( <pre> 'apple' => 'りんご', 'orange' => 'みかん', 'grape' => 'ぶどう' ); ?>

わかったよ、連想配列の宣言と同時に配列変数に値を入れる方法はわんさか出てくるのだ、しかし俺は動的に値を入れたいんだ。配列のキー(添字)を変数にして。たとえば次のように。

続きを読む

PHP で、ダイジェスト認証(Digest Auth)をする HTTP クライアント

PHP で、ダイジェスト認証(RFC2617)付きのサイトにアクセスするにはどうしたらいいのだろう?

まずは PHP で、Perl でいうところの LWP::UserAgent に相当するものはないのだろうか?と探していたところ、あった。CURL というのがそれで、libcurl パッケージをインストールしておく必要があるとのこと。私は、Fedora Core 6 を使っているのだが、Fedora Core 6 をインストールしたときに開発パッケージをなんでもかんでも入れておいたので特に何もする必要はなかった(苦笑)。

とにかくまずは CURL が PHP で動けば、あとはプロトコルとして HTTP、HTTPS(SSL/TLS)、FTP、Telnet、LDAP プロトコルでアクセスするクライアントを作れるようだ。

続きを読む

Linux に、phpMyAdmin 2.9.1 をインストールする方法

簡単にいうと、「scripts/setup.php 実行後、config/config.inc.php を ./ にコピー」 すればよい。

2006/12/31 追記:

Fedora Core 6 で phpMyAdmin を Fedora Core OS 自体のインストール時、またはパッケージマネージャ(ソフトウェアの追加・削除)からインストールした人は、phpMyAdmin は /usr/share/phpMyAdmin にインストールされ、https://127.0.0.1/phpMyAdmin/ からアクセスできる。ここで、ブラウザから基本認証でユーザー名とパスワードを聞かれてくるから、ユーザー名 root、パスワードなしでアクセスする。

(以上)

続きを読む

ウェブサイト構築時のセキュリティのポイント

IPA(独立行政法人情報処理推進機構)の「安全なウェブサイトの作り方」というドキュメントは、なかなかまとまっていて、良い。すべてのウェブアプリ開発者は目を通しておくべきだ。ここではこのドキュメントから注意点をピックアップしてまとめてみた。

  1. SQL インジェクション
  2. OS コマンド・インジェクション
  3. パス名パラメータの未チェック/ディレクトリ・トラバーサル
  4. セッション・ハイジャック
  5. クロスサイト・スクリプティング
  6. クロスサイト・リクエスト・フォージェリ (CSRF)
  7. HTTP ヘッダ・インジェクション
  8. メールの第三者中継

続きを読む

PHP で、cookie を扱う方法

ポイントは次の通り。ソースを参考にして欲しい。

  1. ブラウザ側(HTTP クライアント)への書き込みには setcookie 関数を使う。
  2. setcookie 関数は、Content-type: text/html\n\n を出力する前に呼び出さなければならない。その後に呼び出すとエラーとなる。
  3. cookie の値の読み出しには $_COOKIE['クッキーID'] から値を取得する。
<?php <pre>$COOKIE_ID='count'; // 変数名のようなものをここに書く $DOMAIN='twinkle.cc'; // このスクリプトを置いたサーバのドメイン $RELATIVE_PATH='/'; // ルート以下、サブディレクトもすべて対象にする場合は「/」 $COOKIE_EXPIRE = time() + 10 * 365 * 24 * 60 * 60; //有効期限 10年(10年 x 365日 x 24時間 x 60分 x 60秒) // クッキー発行($DOMAIN の前にはドット「.」を付ける。) setcookie($COOKIE_ID, $_POST['email'], $COOKIE_EXPIRE, $RELATIVE_PATH, ".$DOMAIN"); // あとは、$_COOKIE[クッキーID] でアクセスできる。$_COOKIE[…] は定義済み変数。 ?> ">
  • 前回入力したメールアドレス: <?php print $_COOKIE[$COOKIE_ID]; ?>
  • 新たにメールアドレスを入力:

Update: 2006/09/30
Original: 2006/08/20

続きを読む

PHP で、sha1 のハッシュ値を求める方法

以下のコードを参考のこと。sha1 なので 160ビットの固定長の値は仕様であり、画面への出力は 40バイト固定長の16進数の文字列である(160ビット=160 / 8ビット=バイナリ 20バイト→人間の目に見える形式だとテキスト文字列 40バイト)。

<?php $content = "ここに HTML などのコンテンツが入る"; $digest = sha1($content); // コンテンツのハッシュ値 (16進数) print $digest; ?>
続きを読む

PHP で、TinyMCE を使う。

TinyMCE という AJAX (JavaScript) ベースの HTML エディタのライブラリがある(オンラインのデモはこちら)。これは単体のエディタとして使えように提供されているものではなく、Drupal などの CMS と連動できることを目的として作られている。もちろん自分でこのライブラリを利用する HTML ページを 1枚書いて、オフラインで使ってもよいのだが、せっかくなので PHP と連動させてみた。作った HTML ソースは任意のメールアドレスに送信できるようにした。

ツールバーのカスタマイズは実はそんなに難しくない。詳しくはコードを見ていただきたいが、独断と偏見の最小構成で以下のようにカスタマイズしてみた。

TinyMCE ツールバーカスタマイズ例

設置の仕方だが、ウェブサーバに tinymce などのディレクトリを作ってそこに TinyMCE を解凍して置き、以下のスクリプトを index.php などの名前で保存してそのファイルを同ディレクトリにを置けばよい。

以下のスクリプトを使った TinyMCE のデモはこちら

続きを読む

PHP で、cookie を扱うときのカラクリ(シーケンス)

「PHP で、cookie を扱う方法」に挙げたスクリプトを試してみて、なんだか動きがしっくり来なかった人も多いと思う。そこで今回はそのシーケンスを書いてみた。同じ色で示したシーケンスは同じ情報(メールアドレス)を表している(図をクリックすると拡大します)。

PHP cookie シーケンス

続きを読む

PHP で、角丸枠 (CSS) を作る方法

PHP で角丸枠を作るには、phpMyBorder という PHP のクラスライブラリがあるので、それを利用すると簡単にできる。 https://www.phpmyborder.com/

<?php require_once ''/your_path_to_this_php_class/phpMyBorder2.class.php'; $pmb = new PhpMyBorder(); echo $pmb->begin_round('260px', 'DDDDFF', '78AAFF'); ?> <ul> <li>ここに枠内に入れるコンテンツを書く</li> </ul> <?php echo $pmb->end_round(); ?> </code>
続きを読む
PHP を購読