単純なやり方なのに、久しぶりにPHPを低いレイヤーから書くと忘れてしまうシリーズ。

文字列でクラスを動的生成する方法:

$class_name = 'Class_Name_Test';
$obj = new $class_name();

PHP5で親クラスのメソッドを呼ぶ方法:

parent::METHOD_NAME();

PHPのクラス名の命名規則例:

Test_Module_Hoge

BASIC認証のやりかた:

function checkLogin()
{
    $users = array();
    $users["username1"] = "password1";
    $users["username2"] = "password2";
    $auth_user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : '';
    $auth_pass = isset($_SERVER['PHP_AUTH_PW'])   ? $_SERVER['PHP_AUTH_PW']   : '';
    // ---
    if (empty($users[$auth_user]) || $users[$auth_user] != $auth_pass) {
        header("WWW-Authenticate: Basic realm=\"Please Login\"");
        header("HTTP/1.0 401 Unauthorized");
        echo "Sorry, Private Page.\n";
        exit;
    }
    return;
}

ロリポップ or heteml でSQLite使う時は、注意が必要なこと。

  • heteml だと、SQLiteのバージョンは、PDOでも、SQLite2 しかない。「sqlite2://xxx.db」のように使う。
  • ロリポップ(2009/02の時点)で、sqlite_escape_string() にバグがある?

バグ回避のために、sqlite_escape_string を次のように使ったら問題なく使えた。或いは、素直に、PDO のプレースホルダの機能を使う。

function my_sqlite_escape_string($str)
{
   return ($str) ? sqlite_escape_string($str) : "";
}