もう18時か、
2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]萌え猫写真館が復活。[PR]  

【PHP】Ethna part.2【国産フレームワーク】

1 :nobodyさん:2007/08/03(金) 08:15:18 ID:BNMV6wHx
国産フレームワーク、Ethnaでいい意味で手抜きなプログラミングライフを。

Ethna -PHPウェブアプリケーションフレームワーク-
http://ethna.jp/

SourceForge.jp: Project Info - Ethna
http://sourceforge.jp/projects/ethna/

クラスドキュメント(phpDocumentor)
http://ethna.jp/doc/

前スレ
【PHPフレームワーク】Ethna【スケルトン自動作成】
http://pc11.2ch.net/test/read.cgi/php/1123070439/

164 :nobodyさん:2008/05/03(土) 23:30:29 ID:???
>>161
http://pc11.2ch.net/test/read.cgi/php/1177683436/276
276 名前:nobodyさん[sage] 投稿日:2008/04/30(水) 12:41:32 ID:???
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん

http://pc11.2ch.net/test/read.cgi/php/1205475360/765
765 名前:nobodyさん[sage] 投稿日:2008/04/29(火) 00:30:20 ID:???
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん


165 :nobodyさん:2008/05/04(日) 14:07:09 ID:NE4g0gE+
[project]-ini.php
で通常DB使う場合に設定する
"dsn"=>"mysql://mysql_user:mysql_userpass@mysql_server/mysql_db",
といった記述なんですが、
mysql_server部分 を動的に変えたい場合、何か良い方法はないでしょうか。
[project]-ini.php 内では
$this->aff->get()とか使用できないので。。。


166 :nobodyさん:2008/05/07(水) 09:06:27 ID:???
>>165
それぞれのdsnにキーを割り付けて、getDBで選択するという手はだめかな

http://ethna.jp/ethna-document-dev_guide-db.html#zc5316fe

167 :nobodyさん:2008/05/08(木) 18:10:16 ID:???
2.3.5 リリースsage

168 :nobodyさん:2008/05/09(金) 20:41:27 ID:lfzI+vCi
validate について質問

1.inputフォーム
2.validate->確認画面
3.DB更新&完了画面

という遷移をしたい場合 validateって3でも必要ですか?
2でvalidateが通った後無理やり GET引数に?varname=XXXX...略、とか
したら、validateが通っていないデータで更新できてしまいますよね?

あと、formでpostを繰り返して遷移していく場合、もどると期限切れに
なりますよね?これって 302とかを使って解決すると思いますが、
Ethna的にはどのように書くのでしょうか?

1. GET なにがしかの form
2. POST confirm [validate] => 302 confirmed
3. GET confirmed
4. POST do => 302 done
5. GET done

169 :nobodyさん:2008/05/10(土) 01:48:48 ID:???
>>168
ヒント:
class DB更新&完了画面Action extends 確認画面Action
{
  function perform()
  {
     DB更新
     return 完了画面のview
   }
}

170 :nobodyさん:2008/05/10(土) 12:38:54 ID:???
>>168
トランザクションチェックやら、CSRFチェックやら、
validate済みデータをセッションに保存しておくやらすればいいんじゃね?

171 :nobodyさん:2008/05/15(木) 18:42:33 ID:luXnYgdJ
>>165
http://ethna.jp/index.php?cmd=read&page=ethna-document-dev_guide-db

にある、「複数のDBオブジェクトを扱う場合」を参考にしてください。

172 :nobodyさん:2008/05/15(木) 18:46:19 ID:???
>>168
3でもvalidateは必要です。
複数の画面を遷移しながら移動する場合はセッションに保存するのがてっとりばやいでしょう。

173 :nobodyさん:2008/05/16(金) 09:22:57 ID:???
戦後教育は文部省と日教組の不毛のイデオロギー対立により本来の教育を蔑ろにし、主役である子供達を放置してきた。最初にその犠牲となっ
たのがいわゆる「団塊チルドレン」と呼ばれる世代である。彼らは歪んだ「権利・自由・平等」を教えられ、「責任・義務」を教えられないま
まに育った。日教組は彼らに経済と言う物差ししか与える事ができず、信念・哲学・自尊心という価値からは程遠い「金と物」にしか価値を見
出せない貧しい精神を育んだのだ。この事は「失われた十年」と呼ばれる90年代に於ける彼らの生き様に大きく影響した。
子供は幼児期に於いて父性と母性の対比の中で社会性を獲得する。「亭主元気で留守が良い」と言うコピーがはやったが、父性不在の家庭はや
がて「団塊チルドレン」の社会性の無さの原因となった。当時オバタリアンと呼ばれた世代は、戦後処理もろくに済んでいないのに平気で海外
へ出かけ、金に飽かせてブランド商品を買い漁り、傲慢さを世界中にまき散らした。彼らの世代に特徴的であるこの品性・品行の悪さは、後の
世代のライフ・スタイルにまで影響を与えた。それ以上に、欧米諸国が未だに日本人を蔑視し、アジア諸国が不信感を持ち続けている事への鈍
感は不幸でさえある。団塊の世代が戦後の営みの中で経済力に見合う人生観や価値観、広義の品性・品行やモラルを獲得していれば日本社会は
ここまで歪まなかっただろう。
90年代は「失われた十年」と呼ばれている。経済と言う物差ししか持たなかった我々は、旧来の発想で経済的な豊かさを追求し続けたが故にバ
ブルの崩壊をもたらした。その時不幸だったのは「我々は何処へ行くのか?」と言う根源的な迷いに気かなかった事だ。この事が90年代を無為
に浪費した最大の原因である。団塊の世代は欧米を追う間は素晴らしい能力を発揮したが、追いついた後のビジョンを描く想像力が欠如してい
た。彼らの責任では無い。社会が彼らにその様な能力を要求しなかったのだ。村上龍の「あの金で何が買えたか」が売れたと聞くが、悲しいの
は未だにその程度の次元でしかバブルを検証できないメンタリティーの低さである。検証すべきは「何故我々が貧しい価値観しか持ち得なかっ
たのか」と言う事である筈だ。まさしく教育の問題である。冒頭で述べた様に信念・哲学・自尊心を育む努力を怠らなければ、もっと違った社
会があった筈である。

174 :nobodyさん:2008/05/18(日) 05:34:12 ID:5L4/s+Ln
Ethnaの中の人、全然やる気無い感じが伝わってくる

175 :nobodyさん:2008/05/18(日) 13:33:05 ID:???
>>174
どのへん?

176 :nobodyさん:2008/05/18(日) 17:29:54 ID:???
DBまわりがよくなればいいのにねえ

177 :nobodyさん:2008/05/18(日) 22:38:14 ID:???
CakePHPに乗り換えたけど、まだちょっと期待してるよ

178 :nobodyさん:2008/05/26(月) 12:53:26 ID:eXimI0Ql
Ethna_ActionForm::handleError()
ってオーバーライドできますか?
なんか {APPID}_ActionFormに書いても出来ないんですけど(´;ω;`)

179 :nobodyさん:2008/05/28(水) 01:02:10 ID:???
ちゃんと{APPID}_ActionFormを継承してるか?

180 :178:2008/05/30(金) 10:07:06 ID:mNLSpKje
>>179
どうもです。

$use_validator_plugin に falseを設定したら動きました。
が、pluginが使えないと色々面倒ですね。

エラーメッセージを全体的に変更したくて、Ethna本体を変更しないように
ってなると、やはり Pluginを自分で書くなりするしかないですか?

たとえば未入力のエラーは標準が
{form}を入力してください
ですが
{form}を入力してくださいね♪
にしたい場合など、みなさんはどうしているんでしょうか?

$form_template とか使うんでしょうか?

181 :nobodyさん:2008/05/30(金) 12:00:15 ID:???
$form => array(
'required_error' => '{form}を入力してくださいね♪ '

182 :nobodyさん:2008/06/02(月) 10:16:58 ID:???
ethnaのサイトウィルスはってあったから注意
iframeのやつね
誰か連絡してやってくれ・・・

183 :nobodyさん:2008/06/02(月) 16:14:36 ID:aKm7Z/AW
ethnaのサイト落ちてますか?

184 :nobodyさん:2008/06/02(月) 19:44:54 ID:???
>>183
ethena.jpが乗っ取られてたらしい。
現在は閉鎖中。


185 :nobodyさん:2008/06/02(月) 20:09:21 ID:???
そして復活した模様

186 :nobodyさん:2008/06/02(月) 22:36:44 ID:???
http://ethna.jp/ethna-news.html#q6a79399
リリース出たね

187 :nobodyさん:2008/06/03(火) 04:54:20 ID:???
さくらインターネットのルータがウイルスに感染してたってこと?
その方が怖いんだが

188 :nobodyさん:2008/06/03(火) 05:15:50 ID:???
さくらスレ見たらやっぱりさくらが問題みたいね
こえーな

189 :nobodyさん:2008/06/03(火) 06:03:26 ID:GVCDkPaZ
ってか大問題なのに騒がれなさすぎだろw
上流でクラックされてたらどうしようもない
サーバ単位の感染の比じゃねーぞ

190 :nobodyさん:2008/06/03(火) 06:30:55 ID:???
http://memo.st.ryukoku.ac.jp/archive/200806.month/9458.html

ルータと同じIPを名乗るマシンがいたんだってよ。ひどいもんだな。

191 :nobodyさん:2008/06/03(火) 09:34:43 ID:???
そんなに簡単に乗っ取れるインターネットっていったい

192 :nobodyさん:2008/06/03(火) 17:20:00 ID:khCiq63d
簡単に言うけど、ssl化すればいいんじゃね?


ところで、Ethnaで アクションからアクションを呼びたい場合って同かけばいいのでしょうか?
今作っているのがバッチ処理の関係なんですけど、バッチ処理をコントロールする
アクションがいて、条件によってサブの処理アクションを呼び出したいんですけど...

/batch.php <= 一定時間ごとに起動
/batch/proc1 <= サブアクション
/batch/proc2   〃
/batch/proc3   〃

あと、2.3.5がリリースされましたが、2.3.2からはそのままアップデート
して何か問題ありますか?

193 :nobodyさん:2008/06/03(火) 19:46:36 ID:???
>>192
確か公式にアクションチェインの方法かいてあったはず


194 :nobodyさん:2008/06/03(火) 20:13:41 ID:khCiq63d
>>193
どうもです。
マニュアル見ててわかりました。

$this->backend->perform($action_name);
を perform()に書いてあげればいいみたいですね。


195 :nobodyさん:2008/06/04(水) 03:06:30 ID:???
>>192
そのままアップデートして問題ないよ。大きくは変わってないので。

196 :nobodyさん:2008/06/10(火) 10:19:27 ID:w4tQWM9Z
$this->session->start() のあとに
$this->session->isStart() してもtrueが返らないのは仕様ですか?
$this->session->isStart(true)とすれば返るんですが...

Ethna_Session::start()のなかで $this->anonymousに代入していないのは
わざとですか?

$_SESSION['__anonymous__'] と Ethna_Session::anonymouse には何か使い
分けている理由があるのですか?



197 :nobodyさん:2008/06/11(水) 08:10:19 ID:???
$this->session->start()じゃなくてsession_start()してんじゃないの?
auto_startとか。

あと匿名と通常のセッションを同時に使い分けることはできない。

気にくわないならEthna_Sessionを継承しる。


198 :JK:2008/06/11(水) 08:31:19 ID:xujtuY+c
>>197
ソース見て見れ!
Ethna_Session::start()
で $anonymousに代入していないから
restoreが呼ばれてからじゃないと
isAnonymous() で取得できないから、isStart()が正常な値を返せない

これは仕様なのか?
ログイン処理で匿名から、通常のセッションに切り替える処理を入れたんだが
ログインチェック処理が何故かうまく通らないから調べたら、そうなっていた

start()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a142
isStart()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a276
isAnonymous()
ttp://ethna.jp/doc/__filesource/fsource_Ethna__classEthna_Session.php.html#a295

199 :nobodyさん:2008/06/11(水) 15:20:49 ID:???
>>198
素直にMLに投げてみたら?

200 :nobodyさん:2008/06/11(水) 20:46:44 ID:???
>>198
だから「同時に使い分けることはできない」んだってば。
これが仕様なのかバグなのかは知らないけど。


201 :JK:2008/06/11(水) 21:08:49 ID:xujtuY+c
>>200
だから、切り替えたいんだってば。
というより。
Anonymous関係なく、 session->start()した直後 isStart()よんでみ?


202 :nobodyさん:2008/06/11(水) 21:59:31 ID:???
start前はbool(false)、
start後はbool(true)になるけど?


203 :nobodyさん:2008/06/11(水) 22:07:52 ID:???
「切り替え」も「同時に使い分ける」と同義。
匿名セッションをdestroy()してから、そのまま通常セッションをstart()してもだめってこと。



204 :JK:2008/06/11(水) 23:40:12 ID:xujtuY+c
>>203
なるほど、そういう説明なら納得。

ログイン前の情報を匿名セッションで保存していて、ログイン後にそれらの
情報を扱いたい場合ってどうしているんですか?

Ethna_Sessionを new して $this->session に渡しちゃうとかですか?

205 :nobodyさん:2008/06/15(日) 01:00:02 ID:???
わざわざ匿名セッションを使う意味がわからんのだけど。
「匿名セッション」=「Ethnaアプリではないアプリが開始したセッションを使うため」かと。


206 :JK:2008/06/15(日) 01:48:12 ID:vmTqGR6A
>>205
実はよくわかってないのです。
匿名=アプリには非ログインだけど、セッションを使いたい
非匿名=アプリにログイン状態
かな〜と、勝手に思っていました。

たとえばログインのアクションを起こす直前の情報を匿名状態で持っていて
ログインが必要なアクションを起こした場合にログイン画面へジャンプ。
ログイン処理が正常に済んだら、保存していた情報でページにジャンプしたり
フォームに入力したりする。

一応ロールっぽい概念は持っているんだけど、一番簡単なログインチェックは
isStart() を呼ぶだけで出来るから便利だなぁなどと思っていたけど、
ちょっと違うのかな?

207 :nobodyさん:2008/06/15(日) 11:45:46 ID:???
それならログインしていようといまいと普通にセッションを使うべし。
ログインしたらセッションの中にフラグを立てる。
あとはisStart()じゃなくてそのフラグを確認するだけ。

208 :JK:2008/06/15(日) 17:30:32 ID:vmTqGR6A
なるほど、ありがとうございます。

えーと、こうなったいきさつを少しだけ、ethnaのサイトに isStart()で
ログインをチェックしているサンプルがあってセッションスタート=ログイン
状態というような感じのサンプルでした。

それでそれを元に開発を進めていったんですが、非ログイン状態でもセッション
を使って何かしたいなぁ。となったときにセッションを明示的に開始していないと
セッションが使えないという罠にはまり、しばらく悩む。
で、ソースを眺めていたら、匿名というのを見つけて、匿名時はisStart()が
falseを返すという性質があるなぁそれなら。
となったわけです。

普通に考えたら、セッションにフラグを持つのが正解ですね。
事実FWを使わないときはそうやって書いていたし...

逆切れすみませんでした。

PHP全般とおしていえることですが、無駄にセッションを開始したくない場合
ってどうやるのが正解ですか?

sessionのauto_startを無効にして
if (!empty($_COOKIE['SESSID'])){
session_id($_COOKIE['SESSID']);
session_start();
}
というような感じでしょうか?

209 :nobodyさん:2008/06/24(火) 20:05:23 ID:et7OSP74
>>208
たぶんそれで問題なあいと思うよ。
まぁそんなに神経質にならなくてもGCがうまいことやってくれます。


ところで、過疎化しているから回答がつかないかもしれないけど質問。
HiddenVarsを使うという記事を見つけたのですが、これって
1.input 2.check 3.do という 3phaseで処理する場合 2で validate
しても 2と3の間でデータを書き換えできますよね?
3の直前に validateを入れたとしても書き換えたデータがそれなりの
ものであれば、2でチェックした内容と違うもので更新できますね?
さらにいうろ 3のアクションのみでデータを登録できちゃうから、
不正登録とか連投ができますよね?
これを防ぐにはセッションやチェックファイル、DBなどを使わないと
だめですよね?
何かいいアイディアありますか?

210 :nobodyさん:2008/06/25(水) 07:08:45 ID:???
>>209
>>170

211 :nobodyさん:2008/07/01(火) 08:37:05 ID:2M+ISpJV
すんません、たとえば複数のテーブルを扱うと時って アクションクラスには
どのように書けばいいのでしょうか?

例えば会員情報に会員状態を表す status(仮登録、本登録、退会、削除)があり、
付随するデータにそのデータの状態をあらわす status(下書き、公開、閲覧停止、削除)
があったりします。


212 :nobodyさん:2008/07/01(火) 11:34:32 ID:???
このスレにレスが付くのは不思議だよな・・・。 

213 :nobodyさん:2008/07/03(木) 08:29:19 ID:cyN9Rfkc
>>212
おまいの自作自演だったりして、このレスもw

83 KB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【AntiVirus】 アンチウィルスソフト総合スレ [UNIX]
Dovecot(1) [UNIX]

新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.0.7.3 2008/07/26
FOX ★ DSO(Dynamic Shared Object)