Archive for 2007年9月

Zend_Authを試す

9月 29th, 2007

ZendFremeworkのZend_Authを試す。
PEAR::Authと違い、認証のみの機能となる。
アクセス制御は別のZend_Aclを使う。

なんとなく整理して書くとこんな感じ。

$_connect = $db->_dbConnect(); //DBにコネクト
$authAdapter = new Zend_Auth_Adapter_DbTable($_connect , 'user' , 'username' , 'password');
 
// リクエストパラメータをセット
$authAdapter->setIdentity( $this->getRequest()->getPost('username') );
$authAdapter->setCredential( $this->getRequest()->getPost('password') );
 
// 認証を実行
$result = $authAdapter->authenticate();
if (!$result->isValid()) {
    // 認証失敗の場合はログイン画面へ
  $this->_redirect('/login');
}else{ 
    // 認証情報をセッションに保存
    $data = $authAdapter->getResultRowObject( null , 'password' ) );  //password以外を保存
   $auth = Zend_Auth::getInstance();
   $auth->getStorage()->write($data);
}

認証後のユーザー取得は

$auth = Zend_Auth::getInstance();
$user = $auth->getIdentity();

となる。

慣れない方法なのでわかりにくいなぁ・・。

2010/01 一部修正

PEAR::DBからPEAR::MDB2へ

9月 27th, 2007

データーベースのコネクト処理に欠かさず利用しているPEAR::DBだが、最新PEARパッケージ群から消えていたり公式からもPEAR::MDB2の移行を進めてるらしい。

利用方法はほぼ同じということで特に抵抗無く移行できると思うので今後はPEAR::MDB2を使っていくか。。
ZendFremeworkを使った開発にはZend_Dbを使っていく予定だが、今まで普通に使っていたパッケージも変えると思うと気が重い。。

< ?php
// まずプログラムの最初に、$mdb2 という名前の
// MDB2 オブジェクトを作成します
require_once 'MDB2.php';
 
$mdb2 =& MDB2::connect('pgsql://usr:pw@localhost/dbnam');
if (PEAR::isError($mdb2)) {
    die($mdb2->getMessage());
}
 
// クエリを実行します
$res =& $mdb2->query('SELECT * FROM clients');
 
// 結果がエラーでないかどうかを常にチェックします
if (PEAR::isError($res)) {
    die($res->getMessage());
}
?>

ZendFremework リクエストオブジェクト・レスポンスオブジェクト

9月 22nd, 2007

ZendFremeworkではスーパーグローブ変数を使わず専用のメソッドを使って取得するルールになっているらしい。
理由はよくわからんがメモ。

リクエストオブジェクト getRequest()でのメソッド

$_GET【クリエストリング】
 →getQuery()

$_POST【POSTデータ】
 →getPost()

$_COKKIE【クッキー】
 →getCookie()

$_SERVER【サーバー変数】
 →getServer()

$_ENV【環境変数】
 →getEnv()

$_POST['hoge'] で済むことを

$request = $this->getRequest();
$param = $request ->getPost('hoge');

なんてありえねールールにするらしい。

同じくechoやprint()などの出力は禁止でレスポンスメソッドを使うようにとのこと。
レスポンスオブジェクト getResponse()でのメソッド

setHeader()
→HTTPヘッダ情報を設定する

setBody()
 →コンテンツ内容を設定する

appenBody()
 →コンテンツ内容を追加する

sendHeaders()
 →HTTPヘッダ情報を出力する

outputBody()
 →コンテンツ内容を出力する

sendResponse()
 →HTTPヘッダ情報とコンテンツ内容を出力する

clearHeaders()
 →ヘッダ情報を消去する

clearBody()
 →コンテンツ内容を消去する

setRedirect()
 →リダイレクト情報を設定する

Fremeworkを使ったからといって開発が楽になるということでもなさそう。。
いまいち理解してないからそー思うのだろうか?

サーバー負荷チェック

9月 18th, 2007

客先がアクセス障害が発生するとのことで検証。
コマンドライン[top]でサーバー負荷チェックができる。

・・・というメモ。

特定プログラムから負荷が発生することを確認。
数分間CPU使用率が100%でその間、アクセス障害が発生していることを確認。
・・・というメモw

検索エンジンはFlashも読むらしい

9月 15th, 2007

ちょっと面白い記事を発見

[Z]ZAPAブロ~グ2.0
Flashは検索エンジンに引っかからないという思い込み

検証に「Googleのファイルタイプ指定検索」の説明と「面白い利用法」があったりする。

自分もFlashは検索エンジンで読み取らないと思っていたのですが違うのですね^^;
誰だ!?嘘の話を広めたのは!!w

XAMPP for Windows 入れてみた

9月 14th, 2007

一つのパッケージで以下のインストールがまとめてできるので便利なXAMPP

XAMPPをインストールする前に個別で入れていたApacheやMySQLは削除してからのほうが良さそう。
・・・自分は後から削除しましたが。
XAMPP

2007年9月14日現在の最新版

XAMPP 1.6.3a

  • Apache HTTPD 2.2.4 + Openssl 0.9.8e
  • MySQL 5.0.43
  • PHP 4.4.7
  • phpMyAdmin 2.10.3
  • Zend Optimizer 3.3.0
  • XAMPP 1.6.3 Patch
  • 他いろいろ

phpspot.netでも詳しいインストール方法が書かれている。

ところでXAMPPってどう読むのでしょうかね?w

Unixコマンド

9月 13th, 2007

最近ちょっといじりはじめたSSH。
基本だろうけどめったに使わないから忘れそうなのでメモ

su – ユーザー変更
su root[Enter]

ls – ファイル一覧
 ls[Enter]

cd – ディレクトリ移動
cd /usr/share/pear[Enter] 絶対パス
cd ../ 相対パス

chmod – パーミッション変更
-R オプション 以下のファイルやディレクトリを全部変更
chmod 777 -R Ethna[Enter] (10進数表記でいいみたい)

参考サイト

Framework Ethnaを試す

9月 11th, 2007

phpのFremeWorkであるEthnaを試した。
http://ethna.jp/

インストールにPearのチャンネルサーバーを使ってみたり、各ファイルをコマンドラインから作成するなど開発支援環境はかなり良さそうだけど・・・やっぱ難しいな^^;
まだ触り程度しかやってないので特に残しておきたいメモがないw

Ext 2.0 Samples公開

9月 11th, 2007

超クールなAjaxライブラリExtがつい最近1.1が正式リリースされたばかりなのに、もう2.0のを公開している・・。
とんでもない開発スピードに脱帽です^^;
これからじっくり1.1を覚えていこうと思っていたのになんてこった。。。

サンプルはとても素晴らしく更に高機能になってる。
だけど覚えようと思ってる側は大変><

Ext 2.0 Samples

script.aculo.us Effect.toggleのメモ

9月 10th, 2007

script.aculo.us Effect.toggleを使ったのでメモ
要素を半透明にしてabsoluteにして表示

<a href="#" onclick="Effect.toggle('d3','slide',{duration :0.2}); return false;">トグル</a>
 
<span id="d3">
 <a href="#" onclick="Effect.toggle('d3','slide',{duration :0.2}); return false;">閉じる</a>
 (トグルだけど表示された中身にも閉じるボタン)
</span>
#d3 {
  position: absolute; /*浮かす*/
  display: none; /*初期は非表示*/
  filter: alpha(opacity=70); /*IE用*/
  opacity: 0.7; /*Safari用*/
  -moz-pacity: 0.7; /*FireFox用*/
}

実際に設置したのを簡略したメモなのでこのままでうまくいくか不明w

2008/04/11 訂正
サンプルコードにsmarty literalが混ざっていたので修正