tetsunosukeのnotebook

tetsunosukeのメモです

独自のストレージドライバによるPEAR::Auth

たとえばCSV形式の「id,password」を認証ファイルとして使う場合のサンプルを書いてみた。

カスタムコンテナ(ストレージドライバ)

require_once 'Auth/Container.php';

class CustomAuthContainer extends Auth_Container{
  var $csvFile;
  function CustomAuthContainer($csvFile){ //オプションはここで渡す
    $this->csvFile = $csvFile; 
  }

  function fetchData($username, $password){
    $handle = fopen($this->csvFile,"r");
    // まあこのへんは本筋じゃないのでテキトウに。
    while($data = fgetcsv($handle, 1000, ",")){
      $dat_userid = $data[0];
      $dat_password = $data[1];
      if($username == $dat_userid and $password == $dat_password){
        fclose($handle);
        return true;    // 認証成功の場合はtrueを返す
      }
    }
    fclose($handle);
    return false;
  }
}

認証する、呼び出し側

require_once 'Auth/Auth.php';
require_once 'CustomAuthContainer.php';


$csvFile = "testidpw.csv";
$myauth = new Auth(new CustomAuthContainer($csvFile));

$myauth->start();

if($myauth->getAuth()){
  echo "OK";
}

ってな具合。