トップページphp
983コメント301KB

[PHP][フレームワーク]CodeIgniterスレ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/27(金) 23:17:16ID:???
公式:http://www.codeigniter.com/
チュートリアル:http://codeigniter.com/tutorials/

ユーザガイド日本語訳:http://ci-user-guide-ja.nought-point-999.net/

小回りの利くフレームワークの話題をひとつ!
0202nobodyさん2008/02/06(水) 09:14:57ID:4yRuvbwo
CIってセッションデータ(非セッションID)をクッキーに格納するって読んだんだけどマジ?
クッキーなんて4Kくらいしかないし
それほど安全でもないし
毎回送信されるしでありえないんだが…
0203nobodyさん2008/02/06(水) 09:59:31ID:???
どこで読んだんだ?
0204nobodyさん2008/02/06(水) 10:06:28ID:???
いろんなところで。たとえばこれとか。
http://lists.sourceforge.jp/mailman/archives/codeigniter-users/2007-December/000048.html
0205nobodyさん2008/02/06(水) 11:08:34ID:???
>>202
PHP独自セッションは、スケーラビリティを考慮されていない設計になっていることと、
セキュリティの問題の2点からCIでは独自のセッションデータを保持するようにしていると思われる。

簡単に言うと、(うそ書いてるかも知れないからごめんね、一応自分で調べてみてください)

1.スケーラビリティの考慮漏れ
PHPはセッションデータをサーバの内部に保存する為、負荷分散を考えてサーバを2台に増設したと仮定した場合、
直接アクセスがあった1台のサーバには対象ユーザーのセッションデータが保存され、
もう一方のサーバにはセッションデータが保存されない、負荷分散時のロードバランサー、サーバなどの設定によっては、
2つのサーバ同士でセッションデータ共有がされずにセッション情報がうまく引き継がれない可能性がある。
なので、PHPのセッションを利用しているときに1度目と2度目のユーザーのアクセスが異なるサーバに行った場合にセッションデータが引き継がれない・・・。

2.セキュリティの観点
PHPSESSIONID(こんなんだったけ?)をキーにサーバにセッションデータを登録するから
適当な値で他人のセッションデータが簡単に盗めてしまう可能性がある。(改善されたのかな?)
例えば、ログイン情報をセッションに持っている作りのサイトで、
「http://????.com/login.php?PHPSESSIONID=aaaa」見たいなリンクが張られていてこのリンクをたどってログインした場合に、
他人が「http://????.com/info.php?PHPSESSIONID=aaaa」とアクセスすると
セッションタイムアウトが発生していない限り他人のセッション(この場合「aaaa」というPHPSESSIONIDでログインした人のセッション)をのっとる事が出来る脆弱性があってこれについて、
独自に解決をしていると思われる。

たしか、こんな感じだったと思う。

間違えているかもしれないので、申し訳ないですがPHP独自セッションのまずい点は色々なサイトに載っているからあさって調べてみて・・・。
俺も、だいぶ前に調べたから・・・。
0206nobodyさん2008/02/06(水) 11:11:16ID:???
>>202
DBに保存する方法もあるよ。
0207nobodyさん2008/02/06(水) 12:14:44ID:???
>>205
クッキーに入れるなんて解決になってないよ・・・
珍妙としか言いようがない実装
0208nobodyさん2008/02/06(水) 12:20:16ID:???
一方、railsは2.0からデフォルトで
cookieにセッション情報を格納するようにした
0209nobodyさん2008/02/06(水) 12:32:09ID:???
まじで?
0210nobodyさん2008/02/06(水) 13:02:45ID:???
>>209
うん
cookieに突っ込むsession内容全体のdigestをアプリ固有のキーで生成して
そのdigest自体もcookieに入れておいて、サーバ側で受け付けた時には
そのdigestを検証して信用できるかどうかを調べてOKなら受け入れる、
という感じの実装みたい
0211nobodyさん2008/02/06(水) 13:21:01ID:BSm5jPk+
>digestを検証して信用できるかどうかを調べてOKなら受け入れる

ここがほんとに安全なら楽になるな。
ユーザ側保存に不安があって自前で作るの面倒だったから。
0212nobodyさん2008/02/06(水) 14:52:10ID:???
でもさクッキーの容量は4Kしかないんだろ?
それに携帯だったらどうするんだ?
クッキー使える機種だとしても、一アクセスごとに
最大4Kものパケット料がかかるよな?
0213nobodyさん2008/02/06(水) 15:03:08ID:BSm5jPk+
urlにセッションidくっつけるやりかたが、ユーザ会のサイトに載ってたな。

あと、バリデート済みのPOSTデータをセッションにつっこんで、
確認ボタン押したらそのままinsertとかができなくなるね。
データを一度ユーザ側に預けちゃってるわけだし。おっかない。
0214nobodyさん2008/02/06(水) 15:08:08ID:BSm5jPk+
あ、セッションの内容をもういっかいバリデートすりゃいいだけだ。
吊ってきます。
0215nobodyさん2008/02/06(水) 15:48:02ID:???
>>207
CIもただCookieに単純に入れてOKとしてるわけじゃなかったと思うよ。
セッションの信頼性のチェックとかしてたと思う。
0216nobodyさん2008/02/06(水) 15:53:03ID:???
PHP固有SESSIONの仕様に問題があるから独自セッションまがいの機能をCookie等を使って作ったり、
「PHPSESSIONID」をそのまま信用するようなことをしない対処を行うのはセキュリティ上今のPHPでは必要だと思うのだが。

それをやりやすくCIがやってくれていたはず。
DB使った場合だけだったかも知れないけど・・・。
0217nobodyさん2008/02/06(水) 15:58:42ID:???
>>212
だからそういう携帯や4k超えるような
でかいセッションファイル抱えるような場合は
ファイルやDBのセッション使えばいいって事

でも基本はセッションで扱うデータ量なんてしれてるし、
だったらcookieだけでやってしまえばいいんじゃね、って事
0218nobodyさん2008/02/06(水) 21:34:26ID:???
kohanaってもう実用レベルに達してるの?
0219nobodyさん2008/02/06(水) 21:37:08ID:???
http://kohanaphp.com/tutorials/video/hello_world.html
コハナじゃなくてクワナって言ってるな
0220nobodyさん2008/02/07(木) 05:27:35ID:???
config配下のファイルで
定数定義とかinclude_pathの設定するのはアリ?
ここで関数の定義とかまで出来ちゃうのがphpのすごいとこだけど
0221nobodyさん2008/02/07(木) 05:32:29ID:???
>>210
ダイジェスト生成のロジックが割れたら
いじったデータをセッションに入れられるかもしれない
ユーザには知られたくないデータをセッションに入れることもありうるから
やっぱり抵抗あるなー
0222nobodyさん2008/02/07(木) 06:38:42ID:???
http://d.hatena.ne.jp/stilo/20080123/p2
ciの本が出るらしい
売れるのかな…?
個人的には好きだが
0223nobodyさん2008/02/07(木) 19:12:59ID:???
例外投げてもほったらかしじゃん
PHP4なんて脂肪してんのに
ハンドリングするのエラーだけってどんだけ〜
0224nobodyさん2008/02/07(木) 19:50:59ID:???
例外ハンドリングしてエラー投げ直すようにした(´〜` )ウーン
0225nobodyさん2008/03/03(月) 23:43:59ID:???
attachementのform mail、どうやってこさえてます?
なんだかんだ、uploadして一時ファイルをattacheさせてるんだけど。
もっといい方法ない?
0226nobodyさん2008/03/05(水) 10:07:19ID:wSWuSxOd
>>217
扱うデータ量なんてしれてるならsessionの方がいいよ
cookieを使う利点はサーバー側に負荷がかからないことだよ
扱うテータ量が多いほどcookieを使えばサーバー負荷にならないんだよ
0227nobodyさん2008/03/05(水) 17:13:22ID:???
cookieをやり取りする為の
データ転送量が増えるけどな。
0228nobodyさん2008/03/05(水) 18:16:46ID:???
でも携帯と別処理にしたら汚くならないか?
0229nobodyさん2008/03/16(日) 12:08:31ID:pwsdbwjT
age
0230nobodyさん2008/03/16(日) 12:33:46ID:???
流行ってないね
0231nobodyさん2008/03/20(木) 22:08:46ID:???
CIの本っていつでるんだ?春にでるみたいだけど心待ちにしてる。
0232nobodyさん2008/03/20(木) 23:58:19ID:???
>>231
オンラインマニュアルに載ってる事に補足を加えてウダウダ書いてるだけ
0233nobodyさん2008/03/21(金) 01:05:34ID:???
まあオンラインマニュアル充実してるし、
機能もシンプルだしねぇ
0234nobodyさん2008/03/21(金) 04:14:05ID:???
でもなぁ。MVCで一番重要なモデルが軽視されているからなぁ。
まあ小規模向けだね。
0235nobodyさん2008/03/21(金) 12:34:00ID:???
???
どのあたりでモデルが軽視されていると思ったの?
0236nobodyさん2008/03/21(金) 18:23:01ID:???
必須じゃないってとこじゃない?
わからんけど
0237nobodyさん2008/03/22(土) 00:16:05ID:???
安定版にならないとあんまり使う気にならないんだよなあ。
VerUPが頻繁だと遊ぶ分には楽しいけど実務じゃちょっと。
0238nobodyさん2008/03/22(土) 00:16:56ID:???
今でも結構安定してね?
0239nobodyさん2008/03/22(土) 00:37:50ID:???
scaffoldingが動かないのに安定板?
0240nobodyさん2008/03/22(土) 18:01:21ID:???
>>238
いや、安定してないと言ってるわけじゃないんだけど
更新が頻繁だと嬉しくもあるけどあんまり業務で使いたいと思わなくね?
あまりにも更新が頻繁=すぐ修正されるような問題点がまだまだある
と思えるし。
更新しないから安定してるってわけじゃないけどね。
中身バグだらけだけどただ単に更新止まってるだけとかあるし。
機能の追加の更新ならともかく、あんまり頻繁にBugFixで更新多いと心配になる。
致命的なのがあって、それを更新したから業務で使ってるのも更新しなきゃ→動かなくなった
とかが一番困るし。
0241nobodyさん2008/03/23(日) 16:49:33ID:???
>>240
リリースの頻度で安定している、していないを判定しているやつは素人
中身で判断しろ

修正でも不具合でも深刻具合による
リリーススケジュールの話ならここでしても無駄だ
本家で議論してこい
0242nobodyさん2008/03/24(月) 12:26:43ID:???
>>241
お前はもう少し>>240の書き込みをよく読め。
文盲か。
リリースの頻度で安定度してるかどうかを判断してるなんて書いていないだろ。
0243nobodyさん2008/03/24(月) 14:41:00ID:???
>あまりにも更新が頻繁=すぐ修正されるような問題点がまだまだある

これを書いている時点で何もわかっちゃないだろ
0244nobodyさん2008/03/25(火) 00:17:57ID:???
>>242
オマエこそもう少し文章の書き方を考えたら?w
0245nobodyさん2008/03/25(火) 00:28:01ID:???
ペチパーの質を物語っていますね。とか言われるぞ。
もうちょっと温厚になれないのか。
0246nobodyさん2008/03/25(火) 00:45:11ID:???
ぺちぱーだもの
   みつを
0247nobodyさん2008/03/28(金) 15:03:32ID:???
静かなこのスレが更新されていた!
と見に来たあなた。

書き込んでいるのは俺ですよ! 俺!

中身は何にもありません。ざーんねーんw
0248nobodyさん2008/03/29(土) 03:13:12ID:???
いくつかご相談

1, CIってモデルはオマケと言われてるけど、
CLIベースでモデル開発して、あとはコントローラから呼び出すというスタイルは
一般的ではない?
理由:モデルの開発をわざわざCI上でやりたくない

2, プラグインからモデルのデータセット取得して表示を返すようにしておいて、
それをビュー上で呼び出すようにしようかと思うのだけど、無作法?
理由:表示を構築するだけのコードだったらコントローラに書きたくない

3, 定義されてないコントローラクラスがURIセグメントで指定されたら
「クラス名.html」を自動的に表示する方法ってない?
理由:ロジックがないページまでわざわざコントローラを定義するのは面倒
0249nobodyさん2008/03/30(日) 04:44:30ID:???
>>248

1.一般的ではない
2.無作法
3.ない

に1票
02502482008/03/30(日) 14:38:56ID:???
CIだったら、フレームワークとアプリ機能の実装を分離した状態で開発して
後から乗っけるだけでいいのかなあと思ってたけど、
CIでもできる限りフレームワークの流儀には沿うのね。

確かに、自分がご相談で書いた内容は、
他人がメンテする上で解読が困難になるか・・・
0251nobodyさん2008/04/05(土) 16:57:53ID:???
>>246
その通り。
努力が足りない非正規雇用の増加や、
正社員の中にもサービス残業が嫌だなどという甘えた輩が増えていることは
その証拠でしょうね。
0252nobodyさん2008/04/08(火) 00:06:53ID:???
>>251
>>正社員の中にもサービス残業が嫌だなどという甘え

おまえアホか
サービス残業が嫌だと思う事がなぜ甘えに繋がるの?w

サービス残業をさせる = 違法 って事ぐらいはオツムに入れとけ
0253nobodyさん2008/04/08(火) 01:34:23ID:???
SPAMにマジレスww
0254nobodyさん2008/04/08(火) 15:00:18ID:ozdPGPdu
kohanaPHPのValidationライブラリを強引に移植してみました。

http://oro9.thick.jp/doku.php?id=php:codeigniter:kohana_validate
0255nobodyさん2008/04/11(金) 11:12:15ID:YKNdPaTr
もうそろそろ本が出るかな?
0256nobodyさん2008/04/11(金) 13:56:30ID:DluuZ7jC
MojaviでのActionChainみたいな事するにはどうすればいいでしょう?
他のコントローラで生成したHTMLを部分的にはめ込みたいんです。
よろしくお願いします。
0257nobodyさん2008/04/13(日) 17:54:13ID:???
厨ですいません、フレームワーク自体あんまよく分かってないんだが、
画像(自前で用意するdefault imageとか、ユーザがuploadするものとか)は、
どこに置くのがスマートなんでしょうか。

あとCSSは、views/cssに突っ込んでみたんですが、
htmlのヘッダで呼び出す時に、system/application/views/cssみたいなフルパス書いてて、
なんか使い方間違ってる気がしますorz他のやりかたありますか?
0258nobodyさん2008/04/13(日) 19:11:41ID:???
>>257
ぶっちゃけCIは今日から始めたところだけど、
俺だったら画像とかは
/images
cssは
/styles
とかに置くかな。
viewsと同じフォルダにおく必要は全く無いし、
system以下はHTTPアクセスさせないほうが良いだろうね
02592582008/04/13(日) 20:49:43ID:???
うーん、ユーザーガイド読んだ感想だけど、
なんかCIのActiveRecordって変、
ていうかActiveRecordとはいえないような気がする。
ただのGatewayにしか見えない

これみんな我慢して使ってるの?
それともこのActiveRecordは使ってない?
0260nobodyさん2008/04/13(日) 20:51:19ID:???
>>258
ありがとうございやっす!
同じ事思ってました>system以下はHTTPアクセスさせないほうが良い
けど、applicationに含めるのが作法なのかな?とかも思ってて。
さっそく/imagesとかにしてみます。
0261nobodyさん2008/04/14(月) 00:46:07ID:???
>>259

・ActiveRecord
使ってない。PDOのラッパライブラリ作って使ってる

・セッション
PHPSESSIONなライブラリ使ってる

・テンプレ
PHPTAL使ってる
02622612008/04/14(月) 00:58:00ID:???
>>259

使ってる使ってないは漏れの話ね
一般的なCI使いがどうしてるかは知らない

とりあえず漏れはCIでECサイト開発したけど、
CIの機能はMVCのCしか基本的に使ってないし、
ちょこちょこカスタマイズしてる
02632592008/04/14(月) 07:16:21ID:???
>>261
レスありがとう。
やっぱり使ってないんだね。
俺も自作ライブラリ引っ張り出して使うことにするよ。
セッションはログイン中かどうかのフラグだけ、
テンプレも触るのは自分だけだから
とりあえずそのまま使ってみる。
0264nobodyさん2008/04/14(月) 14:01:23ID:???
Modelはadodbのラッパを使ってる。
テンプレは生PHP。(小さい会社でコーダー兼務なので)
セッションは$_SESSIONを直で。
0265nobodyさん2008/04/14(月) 19:30:24ID:???
なんでPDOじゃなくてadodb?
0266nobodyさん2008/04/15(火) 00:00:22ID:???
>>264じゃないけど、adodbは処理が速いと聞きました。
ttp://kokoromo.jugem.cc/?eid=196
ttp://kokoromo.jugem.cc/?eid=197

この本でadodbが紹介されてて、いろいろメリットが書かれてました。

PHPによるWebアプリケーションスーパーサンプル 活用編
ttp://www.amazon.co.jp/dp/4797332638/
0267nobodyさん2008/04/15(火) 00:13:08ID:???
CI使ってみました
日本語マニュアルが分かりやすくて、すぐに使えました!!!
翻訳作業やってくれている方、どうもありがとうございます(・∀・)

簡単に出来ることを複雑にやる必要はない
コマンドでスケルトン生成したり、設定ファイル書かなくてもすぐに使えて便利
0268nobodyさん2008/04/15(火) 14:09:30ID:???
ADOは知らなかったけど、PHP4の環境なら
DBのAPI関数使うよりも良さげそう
0269nobodyさん2008/04/29(火) 07:16:47ID:???
入力フォームの確認画面を作るのマジめんどくさいのですが、
自動で生成する方法ってないですかねー?

いったい何画面作ればいいんだ

スレ違いだったらスルーよろ
0270nobodyさん2008/04/29(火) 08:42:50ID:AjJ+5S6v
>>もっとkwsk
0271nobodyさん2008/04/29(火) 09:57:50ID:???
>>270
言葉足らずすまそ。

実際にはフォーム画面から入力値を受け取ってバリデーションして
DBに格納するというのが面倒だというのを言いたかった

こんなんできたらいいな、というのがあって、
・フォームのINPUTなどの入力が連想配列で一括取得できる(POSTされたデータ用)
・バリデーションをフィルター的な感覚でやりたい(POSTされたデータ用)
・連想配列でフォームオブジェクトに渡せば対応するNAMEのINPUTなどに自動で値がセットされる(確認画面用)
・フォームからのデータを対応するテーブルにそのまま流し込みたい(バリデーションはするけど)

取りまとめないが、こんな感じ
まあ、画面設計の問題もあるんだが、
工数の内訳として画面処理:ロジック=5:1とかうんざりする
0272nobodyさん2008/04/30(水) 02:10:32ID:???
そんな機能もとめるならCakePHPでも使ってろ
02732712008/04/30(水) 04:48:09ID:???
>>272

CI以外のフレームワークは作法がガチガチに決まってるから嫌だ
潰しが効かないというか。まあ、フレームワークだから当然なんだが

それに対して、CIはプラットフォーム程度でしかないところが気に入っている
まあ、ライブラリ作るなり、カスタマイズするなりして頑張るよ

0274nobodyさん2008/04/30(水) 04:54:08ID:???
自作フレームワークのほうが
つぶしが利かない
02752712008/04/30(水) 05:44:11ID:???
>>274

漏れの「潰しがきかない」と言ってるのは、
CIでなければ部分的な代替え手法を使うのが難しい、意味がない
という話のつもり

さすがにフレームワークまでは自作せんわ
0276nobodyさん2008/04/30(水) 12:41:32ID:???
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん
0277nobodyさん2008/04/30(水) 12:49:41ID:???
どんな?
0278nobodyさん2008/05/01(木) 13:30:12ID:???
>>276
ソースがあるんだから、致命的なバグがあるなら、自分で対処しろよ
0279nobodyさん2008/05/01(木) 13:52:23ID:???
どうせデマだろ
0280nobodyさん2008/05/02(金) 23:01:08ID:???
>>276
http://pc11.2ch.net/test/read.cgi/php/1205475360/765
>>765 名前:nobodyさん[sage] 投稿日:2008/04/29(火) 00:30:20 ID:???
>>一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん
0281nobodyさん2008/05/02(金) 23:14:38ID:???
なんというコピペ
0282nobodyさん2008/05/03(土) 01:05:09ID:???
ワロタ。
これはどのFWのスレに貼っても釣れるだろうなw
0283nobodyさん2008/05/03(土) 04:58:57ID:???
デフォルトのコントローラの名前って何にする?
Defaultだと予約語みたいでクラス名にできないし
0284nobodyさん2008/05/03(土) 06:57:58ID:???
>>277-279
釣られすぎw

>>283
Homeとかどうよ?
0285nobodyさん2008/05/03(土) 07:01:16ID:???
>>284
なるほど
Homeはありだな
dくす
0286nobodyさん2008/05/03(土) 07:12:58ID:???
display_overrideフックの説明で
処理済みのデータは、$this->output->get_output() を呼べば利用可能ですので、留意しておいてください。
ってあるけど
この$thisって何?
フックの文脈でなんで$thisが出てくるのかわからんちん
0287nobodyさん2008/05/03(土) 12:34:10ID:???
グローバルな GET 配列($_GET) のデータを消去します。CodeIgniterではGET文字列(クエリ文字列)を使わないので、それを許可する理由はありません。

こういうざっくばらんさがアメ公っぽい
セッションも変だし…
0288nobodyさん2008/05/03(土) 16:45:47ID:???
276は太公望の釣り針だな
FW関係のスレに貼ったら百発百中で釣れる
さすがに罪悪感が・・・w
0289nobodyさん2008/05/03(土) 23:28:28ID:???
>>276のコピペw
http://pc11.2ch.net/test/read.cgi/php/1186096518/161
161 名前:nobodyさん[sage] 投稿日:2008/05/03(土) 10:18:16 ID:???
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん
0290nobodyさん2008/05/04(日) 00:54:40ID:???
あちこち貼ってんの誰だよw
まあそれはいいとして
rapydってスタンドアロンのPHP5用フレームワークになっちゃったんだな。
0291nobodyさん2008/05/04(日) 22:51:42ID:QrBYi/l0
軽くて個人ん規模にはいいと思ったんだけど
セッションの仕様見て萎えた…

結局、ベストプラクティスはどれ???
クッキーなんてPCでもオフになってることあるよね…
入門者向けにベストプラクティスがほしい…

あとページングするのにはURLルーティング変えないとだめなん?
標準だとGETオフになってるし…
0292nobodyさん2008/05/04(日) 23:17:37ID:???
>>291
セッションは本家のwikiに使い方ほぼ同じでクッキーじゃなくネイティブの$_SESSION使う
プラグイン(自作ライブラリ?)が公開されてる。
他にも色々あるから英語が苦手じゃなければwiki内探索をオススメ。
0293nobodyさん2008/05/04(日) 23:21:08ID:???
>>292

さんくす
探してみる

CakePHP使ってたんだけど
DB必須に近いとこがいやになって CI試してたんだ
0294nobodyさん2008/05/05(月) 05:31:30ID:???
セッションは自前で用意するのがいいよな
クッキーだと携帯に対応できないのが致命的だわ
0295nobodyさん2008/05/05(月) 07:01:33ID:1KRQrRZR
これログインしている時に行うような
アクセスコントロールは自前で実装しないといけないの?
0296nobodyさん2008/05/05(月) 18:26:57ID:???
コード読んだらアクセスコントロールまったくねーじゃん
テラしょぼす
0297nobodyさん2008/05/05(月) 18:48:09ID:???
dispatcher上書きできないとかダセーし・・
シンプルでダサくないFWはないか!
0298nobodyさん2008/05/05(月) 18:49:13ID:???
まあ、CakePHPが一番バランス取れているんだろうな。
0299nobodyさん2008/05/05(月) 19:32:45ID:???
CakePHPのモデルまわりとか
余計なアソシエーションとか

そういうのがないシンプル版がでればいいんだな…

CIのインプットとかビュー周りとかその辺はシンプルですきなんだが

(CI + CakePHP) / 2

なFWないのか
0300nobodyさん2008/05/05(月) 19:33:40ID:???
使わなければいいだけじゃね?
0301nobodyさん2008/05/05(月) 19:34:03ID:???
モデルとかアソシエーションを
■ このスレッドは過去ログ倉庫に格納されています