トップページ⇒php
981コメント318KB

【PHP】PEAR Part2

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/01(月) 21:27:12ID:pG+mahP3
落ちてたんで立てとく

■PEAR
http://pear.php.net/

■前スレ
Pear
http://pc8.2ch.net/test/read.cgi/php/985665522/
07527452007/03/01(木) 10:39:52ID:vEHHBeZ0
>>751

純粋にクエリーを発行して配列にオブジェクトを格納するところまでの時間を計測したんですけど
PDO::FETCH_CLASSとかpg_fetch_object(postgresqlなら)を使うと
シチュエーションによっては10倍近い速さなんですよね。

だからSQLビルダだけ使えないかと思ったわけでして。
ただ、取得するデータ件数が少ないと、速度差はごくわずかなので
LIMITで絞ってページングすればほとんど変わらない気もするし・・・

DB_DataObject使うとSQLインジェクションとかプレイスフォルダ使わなくて
ばっちり対策済みなんでしょうか?

もうちょっと色々試してみます・・・

すごい良く出来てると思うので、気になるのは速度だけなんだよな〜
0753nobodyさん2007/03/01(木) 11:20:12ID:???
今更DB_DataObjectもないだろう
PHP4しか使えませんな環境ならしょうがないかもしれんが
最近のフレームワークのO/Rマッパの実装を調べた方がいいと思うよ
ZFやsymfonyで使ってるpropelとかもPDOのアダプタが用意されてるだろう

SQLビルダならPEARにもDB_QueryToolとかあるけど
SQLビルダっつー仕組み自体が古いというかいけてないと思う
基本O/RマッパでシンプルなDBアクセスは
SQLなんて一切気にすることなく操作できて
3つも4つもJOINするような複雑なクエリになる場合は
SQL書いて取得するっていうスタイルが今の流れで
それは理にかなってると思う
実際WEBアプリで必要になるSQLなんてのは
大抵の場合7〜8割方定型でシンプルなクエリだから
複雑なSQLはビルダで組み立てなくても直で書けばいい
ビルダでどうやって複雑なSQLを組み立てるか考えるのは本末転倒

オレオレO/Rマッパ書くためにSQL組み立てる層を書くのが面倒だから
SQLビルダだけ欲しいみたいな感覚ならまあわかるが
INSERT/UPDATE/DELETEは割と簡単に書けるし
SELECTはZFのZend_Db_Selectあたりを参考にするといいんじゃない
0754nobodyさん2007/03/01(木) 11:23:12ID:???
>>753
あなたの言っている全ての機能はDB_DataObjectにも実装されていますが?
それにフレームワーク固有のコードを書いていたら汎用性が全く無くなってしまう。

それこそ、自己満足の時代に逆境したプログラミングでしかない。
0755nobodyさん2007/03/01(木) 11:29:52ID:???
じゃあDB_DataObject使えばいいじゃんw
0756nobodyさん2007/03/01(木) 11:45:56ID:???
PEAR::DB が遅いってのは抽象化インタフェースなんだからある程度は仕方ないと思うが
pdo がいいなら PEAR::DB とインタフェース互換で pdo 直接叩くようなのを書けばいいんじゃないかな
てか書いたら公開してくれw
0757nobodyさん2007/03/01(木) 12:33:14ID:???
>>754
別にDB_DataObjectが機能不足だなんて書いてないし
俺もDBやDB_DataObjectを経て来た上で書いている
あとZend_Dbやpropelにフレームワーク固有のコードとかない
それぞれ独立したライブラリとして作られている
てかDB扱うライブラリに普通FW固有のコードなんて書かない
もうちょっと色んなライブラリ見渡してみてもいいと思うよ
0758nobodyさん2007/03/01(木) 12:37:31ID:???
>それにフレームワーク固有のコードを書いていたら汎用性が全く無くなってしまう。
フレームワークをなんだと思ってるんだ?
0759nobodyさん2007/03/01(木) 15:51:00ID:???
DBからMDB2に移ろうとしているんですが、
MDB2って、なんかDBに比べて不便になってる
気がするんですが、気のせいでしょうか?

insertやupdateの手順がまんどくさくなってるよな。。。
0760nobodyさん2007/03/08(木) 12:27:01ID:???
Html_QuickFormでprocess()を2回使用しようとするとエラーになります。
Fatal error: Cannot redeclare callback1() (previously declared in c:\path\file.php:100)

以下のようにしたい場合はどうすればいいでしょうか?
if($objForm->validate()){
    $objForm->process('callback1');
    $objForm->process('callback2');
}
0761nobodyさん2007/03/08(木) 12:31:50ID:???
単にcallback1()を2回定義しちゃってるだけじゃないの?
07627602007/03/08(木) 14:00:23ID:???
>761
仰る通りでした。ありがとうございました。

補足としては、実はと言っては怒られそうではありますが、
クラス内にprocess()を呼び出すメソッドを作り、その中にコールバック関数を定義しておりました。
このような感じ。
class Form extends HTML_QuickForm{
    function actProcess($callbackFuncName){
        function callbackFunc1(){...}
        function callbackFunc2(){...}
        return $this->process($callbackFuncName, false);
    }
}
ですので、actProcess()を2回目に呼び出すと、
callbackFunc1(),callbackFunc2()がもう一度定義されエラーになっていた模様です。

調べたところ、コールバック関数をprocess()呼び出しのメソッド外に置き、
process()の第一引数をarray(&$this, 'callbackFuncName')のようにすると良い事が分かりました。
以下のような感じ。
class Form extends HTML_QuickForm{
    function actProcess($callbackFuncName)
    {
        return $this->process(array(&$this, $callbackFuncName), false);
    }
    function callbackFunc1(){...}
    function callbackFunc2(){...}
}
0763nobodyさん2007/03/09(金) 15:56:39ID:???
RedHatES上のPHP-4.3.2で
$pear upgrade PEAR
をやったら
PEAR 1.5.1 stable
に無事アップデートできたみたいなんですが、良く見ると
/usr/bin/pear
が無くなってしまった様です。

/usr/share/pear/pearcmd.php
を直接実行しようとしてもエラーが出て、中身を見てみると
<?php
//
// +----------------------------------------------------------------------+
// | PHP Version 5                                                        |
// +----------------------------------------------------------------------+
//....'
になっています。

一旦phpを再インストールするしか復旧する方法は無いでしょうか?
0764nobodyさん2007/03/09(金) 16:07:36ID:???
今俺も試しにアップグレードしてみたが特に問題ないな
whichとfindで探しても全くでてこない?
0765nobodyさん2007/03/09(金) 16:18:35ID:???
Html_QuickFormのselectあります。
これにmultiple属性を設定するにはどんな書式にすればいいんでしょうか?

$QuickForm->addElement('select',);

みたいな書式でできるんでしょうか・・・?
07667632007/03/09(金) 19:18:19ID:???
>>764
取り合えず、同一構成の別サーバからpearコマンドとpearディレクトリごと持ってきて入れ替えたら

$pear list
INSTALLED PACKAGES:
===================
....
PEAR           1.1     stable
....
となっていて、ここから再度アップグレードして見ました

$sudo pear upgrade PEAR
downloading PEAR-1.5.1.tgz ...
...done: 290,252 bytes
upgrade ok: PEAR 1.5.1

$pear list
pear: Command not found.
Exit 1
で、
$find / -name "pear"
してもコマンドは見つからないですね・・・家の環境だけなのか?
0767nobodyさん2007/03/09(金) 21:25:55ID:???
pearディレクトリ毎持ってきたりして入れ替えたら
そりゃ消えようがしゃあないな
アップグレード時にbinにコピーできなかったとか
go-pearでPEARだけ入れ直したらいいんじゃね
0768nobodyさん2007/03/09(金) 22:48:15ID:???
>>767
おお、go-pearなんて便利なものが・・・
これで無事再インストール出来ました。
0769nobodyさん2007/03/09(金) 23:08:13ID:bGciLmRc
Windowsの話?
0770nobodyさん2007/03/11(日) 00:25:48ID:???
>>765
ttp://www.townmedia.org/tips/PEAR/HTML_QuickForm.html
2-2 addElementで使える要素一覧
をみるかぎり、select のarg5に入れればなんでもアリじゃないでしょうか?
0771nobodyさん2007/03/13(火) 18:35:18ID:???
PEAR::Auth を便利に使っています。
別の場所で別の人が同じ ID/PW でログインできますが、
これを拒否する方法はどういうものがあるでしょうか。
( 後からログインした人を拒否できると嬉しいです )
0772nobodyさん2007/03/13(火) 20:09:42ID:???
ログインユーザをセッションIDと一緒に、DBなりファイルに書き出しとけばいいんじゃないの。
同一ユーザ名ログインの時には、それに対応するセッションIDが残ってるかどうかチェックして
なきゃそれでOK。
でも同一ユーザ名・パスワードの複数保持なんていうのがそもそもセキュリティ的にラフすぎ。


0773nobodyさん2007/03/14(水) 09:34:15ID:???
>>772
ありがとうございます。

何かの拍子に ID/PW が漏れた場合、
同時にアクセスされたら漏洩発覚!としたかったんです。
0774nobodyさん2007/03/14(水) 09:44:37ID:???
>>773
そんなのWWWでやるシステムじゃない
0775nobodyさん2007/03/14(水) 12:37:17ID:???
どうやってログアウトをシステム側で察知するかだな。
操作ミスなり回線不良なりでCookieあぼーんすると
直ぐにログインできないってことになる。
0776nobodyさん2007/03/14(水) 12:59:55ID:???
つかブラウザ二個起動した時点で終了
0777nobodyさん2007/03/14(水) 14:20:57ID:???
>>774
ネットバンクとかで無いか?
0778nobodyさん2007/03/14(水) 14:35:20ID:???
>>777
>>776
0779nobodyさん2007/03/14(水) 14:41:52ID:???
>>778
意味ワカラン
0780nobodyさん2007/03/14(水) 14:43:11ID:???
分かった
0781nobodyさん2007/03/14(水) 14:46:43ID:???
>>776
同じIPならセーフとかは?
0782nobodyさん2007/03/14(水) 14:57:05ID:???
>>781
ルータ経由はどうすんの。
0783nobodyさん2007/03/14(水) 19:03:09ID:???
やっぱり難しいさね。
ストリーミングサイトだったら通信継続してるから
感知して第二ユーザはキック出来るけど、そうじゃなきゃ>>775のような
ケースでクレーム来るほうが怖いからなあ。
0784nobodyさん2007/03/14(水) 19:07:01ID:???
ログイン画面で固定のキーを与えるのどうだろう。
0785nobodyさん2007/03/14(水) 19:12:34ID:???
トークン使う
0786nobodyさん2007/03/14(水) 19:21:48ID:???
明示的なログアウト送信がない限り全部一緒の問題を抱える
0787nobodyさん2007/03/14(水) 23:04:39ID:???
まあセッションクッキーのexpire時間を金融サイトみたいに10分とか短く設定しておいて、
10分以内に通信無きゃ強制ログアウトっていうのが許されるサイトなら問題が少なくなる。
最大10分の再ログインラグが出るけどね。
0788nobodyさん2007/03/15(木) 00:52:45ID:???
昔やったサイトというかWebアプリでは
・ユーザは出来るだけ明示的にログアウトするようお願いする
・メインウィンドウがクローズされる時にログアウトのURLを叩くJavaScriptを仕込んでおく
・最終アクセスを全ユーザの全アクションで記録しておいて、ログアウトなしのユーザがログインしようとしたら最終アクセスが10分以内の場合は弾く

イントラ用のアプリケーションだったから負荷とかも考慮した上でここまでやったけど
一般向けのWebサイトじゃどこまでやるかは難しい判断だろうなぁ
0789nobodyさん2007/03/15(木) 09:27:34ID:???
>>787
それは、パスワード漏洩時の対策にはならんのではないか。
まあそもそもの話として同時アクセス=漏洩なのかというか、常時使うシステムでもない限り使う時間がぶつかることがあるのか疑問。
漏洩するとしたら、内部からユーザ情報持ちだしとか、パソコンに付箋紙貼ってある時だと思うんだが、
したら不正利用する人が夜中とかに使えばまあ、システム上はほとんど不正利用にならないだろうし。

>>788
ログアウトするようにお願いするったって
不特定多数のコンピュータリテラシーがまちまちなユーザじゃ無理。
メインウィンドウをクローズしないかもしれないし。

夢を見すぎじゃないかと。
ユーザに過去のログイン・ログアウト情報を提示して、変だったら通報してもらうほうがいいんじゃねえの。
過去にどういう行動をしたのか知ってるのは本人しかいないわけだし。
0790nobodyさん2007/03/15(木) 10:01:20ID:???
>>789
世の中には「テメエにしか分からないこと」を
自動的に論理矛盾なくプログラム側で判断しろ、
という輩もいるわけでwww
0791nobodyさん2007/03/15(木) 11:54:09ID:???
生体認証かな
0792nobodyさん2007/03/15(木) 12:14:00ID:???
>>789
お願いするだけじゃ無理なのが解ってるから2番目・3番目の仕組を入れてるわけで
無理じゃなけりゃJavaScriptだの全アクセス記録だの不要だろw
あと「イントラ用」って書いたんで不特定多数ではない時の話だってのも読み取ってほしいところ

>>791
ログインには使えるけどログアウトしてくれるかどうかは別問題だねそれはw

PCの不意のハングアップまで考慮しようとすると
それこそJavaScriptか何かでサーバとハートビート交換しまくって
途切れたらログアウト処理にするとかまでやらないと難しいだろうなぁ
0793nobodyさん2007/03/15(木) 12:35:50ID:???
>>792
目的が漏洩対策ならいいんじゃない?<生体認証
0794nobodyさん2007/03/15(木) 13:00:52ID:???
>>792
と言われても、話の元の人はイントラ用とは言ってないわけだし、実際採用されたらどうかなあと思うわけで。


結局のところ、普通に当たり前のことをやっとけばいいと思うよ、としか言えないな。
一応法整備されたからパスワードだけかけておけばノーガードでもいんじゃねという話もある。
0795nobodyさん2007/03/15(木) 13:58:14ID:???
>>787
>それは、パスワード漏洩時の対策にはならんのではないか。
元ネタが同時ログインをキックしたいということだけであって、どこに問題がある?
0796nobodyさん2007/03/15(木) 14:21:29ID:???
>>795
>>773
> 何かの拍子に ID/PW が漏れた場合、
> 同時にアクセスされたら漏洩発覚!としたかったんです。

>>771だけ見ればそんなもんかって感じだが。
0797nobodyさん2007/03/15(木) 15:40:15ID:???
同時アクセス「ゆえに」漏洩発覚というロジックはむちゃくちゃだから
どうでもいいじゃん。同時アクセスキックできる方法だけ話してればいい。
07987112007/03/15(木) 17:59:45ID:???
元質問者です。
両方再ログイン促すので十分です。
それで漏洩か運用で分かると思うので。
なんだかいろいろと考えることが多いのですね ^^;
どこかにいい実装例はないでしょうか。
( コードがあると嬉しいです )
0799nobodyさん2007/03/15(木) 18:50:39ID:???
>>798
仮に漏洩してたとして、同時アクセスと思える範疇でアクセスがある、漏洩と判断できる確率って少ないんじゃね。
あれこれ仕掛けてユーザビリティ低下でクレームが発生するほうが高そうに思えるのだが。

まぁどこまでコストをかけるかは措いといて、
>>775で「どうやってログアウトを...」って書いたけど、Cometならできるかもしんない。
Cometシステムを構築したことどころか、lingrさえしたことないので、
どこまで実用的に漏洩を察知できるシステムができるどうかは知らんが。

これでも、ユーザが会社でブラウザを開いたまま帰宅、自宅でログイン出来ねーって言うかもな。
0800nobodyさん2007/03/15(木) 21:24:01ID:fuFXgue7
>ユーザが会社でブラウザを開いたまま帰宅、自宅でログイン出来ねー
イントラ想定してしながらそうじゃないケース想定してるのが痛い
08017992007/03/15(木) 21:34:56ID:???
>>800
え〜と、俺はイントラなんて想定しとらんが?
元質はイントラネタだったのか?
0802nobodyさん2007/03/15(木) 21:35:01ID:???
Cometならできるかもしんないwww
0803nobodyさん2007/03/15(木) 22:37:02ID:???
昔、椅子に座ったらログイン、椅子から立ったらログアウト、
っていう仕組みを作ろうかとか考えたことある。
実用性が無さそうなんでやめたけど。
0804nobodyさん2007/03/15(木) 22:44:26ID:???
あきらめたらそこでログアウトだよ
0805nobodyさん2007/03/15(木) 23:51:51ID:???
>>801
元質はイントラじゃない
イントラ云々はおれが>>788で
「イントラだったからここまでやったけどそうでなければどれくらい手間をかけたもんかな」的に書いただけ

>>803
迂闊にトイレにも行けねーなw
0806nobodyさん2007/03/15(木) 23:57:38ID:???
実際は、イントラ以外使えないというところではそんなもんだろ
0807nobodyさん2007/03/15(木) 23:58:51ID:7hzpmvYO
でも同じユーザーが同時期にアクセスできないようにするってことは、魅力があるね。
なんか旨い方法ないのかな?
0808nobodyさん2007/03/16(金) 00:07:36ID:???
IPとかUAは?
08097992007/03/16(金) 00:15:29ID:???
う〜ん、マジでCometで出来ない?
Cometって時間的にどのくらいコネクションを握ったままできるのかしらんだけど、
擬似サーバプッシュでクライアントからの返答(再リクエスト)がなければログアウト状態と判断できると思う。
保存期間なしのCookieも併用して。

Apacheにmod_cometみたいなモジュールが出てきたらいろいろ面白そうだけどなぁ。
で、PEARとはまったく関係ない話になってしまった。
0810nobodyさん2007/03/16(金) 00:55:14ID:???
>>802が良いこと言ったな。
0811nobodyさん2007/03/16(金) 00:56:45ID:???
プロセス単位じゃなくて、スレッド単位でコネクション維持してくれるモジュールが
無いと、すぐに鯖がパンクするな。
0812nobodyさん2007/03/16(金) 04:10:01ID:???
後のログインを優先させれば解決
0813nobodyさん2007/03/16(金) 07:13:07ID:???
>>812
おまえ脳みそ使ってないだろw
0814nobodyさん2007/03/16(金) 09:00:07ID:tL5WlbtE
で無理やりPHPの話に戻すと、
ttp://hain.jp/index.php/tech-j
にFlashのSocketライブラリを利用してPHP(鯖)+FLASH/JavaScript(客)で
通信を行うという話がのっている(socketjs→ttp://dev.dschini.org/socketjs/)。
これが出来るならなんとかなるんじゃないの。
0815nobodyさん2007/03/16(金) 09:32:57ID:???
>>814
Ajaxでいいじゃないか。
0816nobodyさん2007/03/16(金) 15:00:47ID:???
>>807
利用できる端末を登録制にする。
登録は自分で出来るけど、登録用には別のパスワードを用意して、全てが漏れないと使えないようにする。
端末の登録が変更されると、指定したメールに通知。
たしかソニバンがこれ。
登録済み端末が操作されてしまうのは防げない。
0817nobodyさん2007/03/16(金) 15:25:46ID:???
>>815
Ajaxは、クライアント側の制約(DHTML)がありすぎだからなあ
0818nobodyさん2007/03/16(金) 15:27:39ID:???
>>816
「端末」の同定はどうしてるのだろう?<ソニバン
0819nobodyさん2007/03/16(金) 15:52:41ID:???
>>818
同じPCでブラウザ変えると別端末という認識をされた。
クッキーとかかな。
0820nobodyさん2007/03/16(金) 16:48:41ID:???
>>798
>元質問者です。
>両方再ログイン促すので十分です

これ意味あるかな?
1.そもそも先にログインしている方が「正規ユーザ」とは限らない。
2仮にそうだとしても、.クラックした方が先に再ログインすることも出来る

実際は、こういう事態がおこったら、そのユーザアカウントは仮停止すべきでしょう。
0821nobodyさん2007/03/21(水) 18:47:33ID:78nxSnEz
vistaでpearコマンド、CLIがntdll.dllのエラーで停止しない?
0822nobodyさん2007/03/22(木) 14:53:02ID:???
sage
0823nobodyさん2007/03/23(金) 14:24:37ID:cotQkCWi
すいません

PearでQuickFormを使ってページを作成しています。
controllerを使ってウィザード式にしたいのですが
前のページでデータベースからの検索結果(不特定多数)があり
その結果それぞれにリンクを貼りクリックするとその情報を持って
次のページに行きたいのです。
色々調べたのですがフォームボタンを使ったものしかなく
困ってます。

参考になるページなどありましたら教えてください
よろしくお願いいたします。

0824nobodyさん2007/03/23(金) 18:09:38ID:???
それはQuickFormとかと関係ない。
a href 要素・属性で、POSTで送信したいってことでしょ?
javascriptを使えばいい。
’リンクでPOST’
とかググればすぐ
0825nobodyさん2007/03/25(日) 05:11:07ID:2BiXNRYt
http://pear.php.net/ や http://pear.php.net/ に
アクセスしようとしてもできないのはなんで?

 時間が悪いのかな?
0826nobodyさん2007/03/25(日) 10:38:49ID:???
そうみたいよ。
今は普通にできるから。
0827nobodyさん2007/03/28(水) 09:11:39ID:???
ブラウザ閉じるだけでもセキュリティ的には問題ないしなあ。
ステートレスのHTTPでは無理。

社員にICタグつけておいて、部屋に入ってきたらアクセス許可、退室したらアクセス拒否でいいかと。
0828nobodyさん2007/03/28(水) 17:44:14ID:OFFYL5la
Auth のLoginCallback, postUsername を使ってログインしたユーザーのログを取りたいのですが、
具体的なやり方が分かりません。参考になる書籍かページを教えていただけないでしょうか。
08298282007/03/28(水) 18:55:20ID:???
その後いろいろ試して、
function LoginLog( $user, $params) {
    $usrname = $user;
    $etc_value = $params->post['postしたname'];
    ログ書き込み;
    ・
    ・
}
 ・
 ・
$a = new Auth("DB", $params);
$a -> setLoginCallback("LoginLog");
$a -> start();
 ・
 ・
ってな感じでlogincallback を使うことが出来るようになりました。
postUsername の使い方は分かりませんでしたが、とりあえず上で行こうと思います。
お騒がせしました。
0830nobodyさん2007/04/08(日) 03:01:58ID:n+ShWf8j
>>95
>キャッシュをメモリに置けばお手軽に負荷テストの結果を一桁あげられる

cacheLiteってメモリ云々とかしてたのか
単にキャッシュを作ってreadfile()で表示してるだけなのかと思ってた

ってか、ふーん楽勝〜車輪の再発明でもいいもんね〜とか調子にのって
myCacheSystemを作ってしまったんだが、単にreadfile()で表示するだけでも効果あるよね
携帯3キャリアごとの絵文字が入ったページの表示切り替えなんだが
(いちいち変換するより作りおきと思って)
今は一つのファイルで3キャリア分岐(if...else if...)のPHPコード交じりの静的?に書き出しているんだけど、
アクセスが集中すると、ロックが変になるのかファイルが途中で途切れてパースエラー頻発
おまけにパースエラーはハンドリングできない?ので目視でエラーチェックorz
0831nobodyさん2007/04/10(火) 10:33:43ID:???
別名で作った後リネームでもだめぽ?
0832nobodyさん2007/04/10(火) 13:41:55ID:???
>>830
横レスごめんなさい。携帯3キャリアの絵文字のコード(変換コード?)って
どうやって手に入れたんですか?
それと、最近の携帯は3社共通仕様になってますが、そこのコードも手に入りますか?
将来的に携帯を視野に入れてるので、是非お聞かせ下さい。
0833nobodyさん2007/04/11(水) 04:58:32ID:xStB8qdy
共用サーバ(ロリポ)で、PEARのCache(Cache_Liteじゃない)
で作成されたキャッシュデータがファイルの所有者がapacheになっちゃうので
FTPソフトでは消せないんですが、全て削除するような関数はありますか?
(Cache_liteでいうclean関数みたいな)
0834nobodyさん2007/04/11(水) 05:00:07ID:xStB8qdy
ぬあ、日本語変、ごめんなさい。

共用サーバ(ロリポ)で、PEARのCache(Cache_Liteじゃない)
で作成されたキャッシュデータの所有者がapacheになっちゃうので
FTPソフトでは消せないんですが、全て削除するような関数はありますか?
(Cache_liteでいうclean関数みたいな)

まだ変、ごめんなさい(´;ω;`)
0835nobodyさん2007/04/11(水) 06:30:50ID:???
そのキャッシュディレクトリをブラウザから消すPHPプログラム作ればいいんでない?
そうすればapacheのUIDで消す事ができるでしょ?
0836nobodyさん2007/04/11(水) 11:14:51ID:???
そりゃそうだが PEAR 側でサクッと解決したいからここで訊いてるんだろうなぁと思った
0837nobodyさん2007/04/11(水) 12:40:28ID:???
Cacheのクラス遷移みろ。
コンテナのFILEのクラスをextendsしてsaveメソッドあたりの時にchmodすればいいだけだ。
0838nobodyさん2007/04/11(水) 15:29:36ID:???
そうすると他のユーザでも消せるけどね。
共有鯖使うなって感じ。占有鯖使えば?
0839nobodyさん2007/04/11(水) 18:00:02ID:???
そうするともなにも、前提がそれでもいいという前提だろ。
0840nobodyさん2007/04/11(水) 18:00:33ID:???
>>835
ディレクトリ内のファイル一覧出してunlinkにぶち込んだら綺麗に消えました!
所有者が「apache」ってのに尻込みして、PHPプログラムじゃ消せないだろうと
先入観を持った私がバカでした。
ありがとうございました、本当に助かりました。

>>836
おっしゃるとおり、サクッと消したい気持ちもあったんですが、
純粋にPHPプログラムで消せると思ってなくて・・・ゴメンナサイ、ありがとです。

>>837
私には難しくてよく分かりませんでしたが、優しさは伝わりました、ありがとです。

>>838
貧乏でゴメンナサイ(´・ω・`)
0841nobodyさん2007/04/12(木) 09:52:37ID:???
>>840
>ディレクトリ内のファイル一覧出してunlinkにぶち込んだら綺麗に消えました!

Cache/Container/file.phpを勉強のつもりでいいから読め。
flushで一発だろ。
$cache = new Cache('file',なんたら);
$id = $cache->generateID('なんたr');
ってやってるんだろうから
$cache -> flush($id);
で消えるはずだ。やってないけど。
0842nobodyさん2007/04/12(木) 11:08:01ID:???
>>841
で消えるはずだ。やってないけど。
0843nobodyさん2007/04/12(木) 11:17:40ID:???
?
0844nobodyさん2007/04/18(水) 10:27:31ID:???
QuickFormで

$tmpArray = array();
foreach ($list as $row) {
$tmpCheckBox =& $form->createElement('checkbox');
$tmpCheckBox->setName($i);
$tmpCheckBox->setText($row['name']);
$tmpCheckBox->updateAttributes(array(
'value' => $row['id'],
'id' => 'check_'.$i
));
$tmpArray[] = $tmpCheckBox;
$i++;
}
$form->addGroup($tmpArray, 'ques_01', '', '');

こんな感じで checkbox の value の値は変えられるようになったのですが
freeze() すると値が1に戻ってしまいます。
何とか freeze() を経由しても、継承する方法はないのでしょうか?
0845nobodyさん2007/04/18(水) 12:30:05ID:???
チェックボックスはvalueの値をどうこうするよりも
nameを foo[] とか foo[$i] にした方がいいと思う
0846nobodyさん2007/04/18(水) 12:33:12ID:???
PHP5ベースのQF2きたよー
http://pear.php.net/package/HTML_QuickForm2/
08478442007/04/19(木) 11:31:58ID:???
>>845
name は修正しました。ご指摘ありがとうございます。
いろいろとやってみてるんですが setPersistantFreeze(true) 指定してもだめ。
$_POST の値では渡っているんですが…。
0848nobodyさん2007/04/22(日) 19:06:46ID:???
>>847
だからfreezeしてvalueの値が変わる変わらないに関わらず
該当チェックボックスのnameのPOSTがあるかないかで
判断するようにロジックを組め
チェックボックスってのはチェックするためのボックスのことだ
0849nobodyさん2007/05/07(月) 22:53:29ID:???
HTML_Page2ベータのままで終わってるけど
XHTMLヘッダ部分を生成するPEARって他にないのですか?
0850nobodyさん2007/05/10(木) 17:54:10ID:???
PEAR::Mail が 1.1.9 くらいから RFC822 のチェックをはじめ、
○○○ <[email protected]>
の○○○の部分に []()<>@,;\:". があると送れなくなりました。

mb_encode_mimeheader() は、英数字だけだと
=?ISO-2022-JP〜 のようにしてくれないためメール送信できません。

英数字だけでも =?ISO-2022-JP〜 にしてくれる
関数なりモジュールはないでしょうか?
0851nobodyさん2007/05/10(木) 19:40:51ID:???
自前でやりゃいいんじゃないのかい
$to = '=?ISO-2022-JP?B?' . base64_encode($name) . '?=' . '<' . $to_addr . '>';
みたいな感じで
08528502007/05/11(金) 10:05:20ID:???
>>851
おお、なるほど!ありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています