[PHP][フレームワーク]CodeIgniterスレ
- 1 :nobodyさん:2007/04/27(金) 23:17:16 ID:???
- 公式:http://www.codeigniter.com/
チュートリアル:http://codeigniter.com/tutorials/
ユーザガイド日本語訳:http://ci-user-guide-ja.nought-point-999.net/
小回りの利くフレームワークの話題をひとつ!
- 747 :nobodyさん:2009/10/30(金) 10:25:30 ID:???
- 自分で全部やれるなら楽だよな。
フレームワークが何だろうが、そんなの関係ないし。
- 748 :nobodyさん:2009/10/30(金) 11:44:13 ID:+JS8PV0u
- >>745
相性がいいかどうかわからんけど、Ajaxフレームワーク比較
ttp://journal.mycom.co.jp/news/2008/10/08/034/index.html
- 749 :nobodyさん:2009/10/30(金) 11:52:50 ID:???
- 何がいいかの質問で、俺は客にテンプレート指定されてるとか答える意味が解らん
- 750 :746:2009/10/30(金) 12:14:52 ID:???
- >>749
お前アホか?
>>742-744の流れに対するレスだよ。
- 751 :nobodyさん:2009/10/30(金) 12:27:07 ID:???
- smartyをAjaxライブラリに対する回答だと思うのはさすがに・・・
- 752 :nobodyさん:2009/10/30(金) 14:50:51 ID:???
- >>750
テンプレートエンジンを使うとすればどんなのがいいのでしょう?
↓
使わないのがいいでしょう
↓
客からの指示で、smarty必須ってなってる ←意味不明
自分で全部やれるなら楽だよな ←意味不明
(これから採用する人の話であってお前の客の話なんて知ったこっちゃない)
- 753 :nobodyさん:2009/10/30(金) 15:25:15 ID:???
- 頭が悪いのがいるな。
- 754 :nobodyさん:2009/10/30(金) 15:27:02 ID:???
- わざわざ蒸し返すなや
誰が正当かなんてどうでもええねん
- 755 :nobodyさん:2009/10/30(金) 22:06:59 ID:p/L2o0l6
- 要するにテンプレートエンジンは不要なのですね。
AjaxのほうはjQueryが軽量コンパクトを売りにしてて伸び盛りのようです。
同じく軽量コンパクトを売りにしてるCIとはベストマッチじゃないでしょうか。
- 756 :nobodyさん:2009/10/30(金) 22:11:18 ID:???
- 必要かどうかは人それぞれだろ。
- 757 :nobodyさん:2009/10/30(金) 23:37:06 ID:???
- 軽量コンパクトがいいのか高機能がいいのかも提示せずに
相性云々言われても困るんだけど
ぶっちゃけAjaxライブラリにとってはサーバサイドのアプリケションが
何で書かれてようが知ったこっちゃ無いんだし相性もクソも何もない
- 758 :nobodyさん:2009/10/31(土) 00:32:11 ID:???
- jQueryは軽量でもコンパクトでもない。
ありがちな操作を、最小のコード量で書く事に特化していて、かつ習得しやすいので普及率が高いだけ。
(そういう意味では、設計思想がPHPに近いのかもな、今思いついたが)
だから、jQueryに「できないこと」に手を出そうとすると非常に面倒になる。
それと、JavaScriptライブラリが軽量でコンパクトである事と、PHPフレームワークが軽量でコンパクトである事の関連性が良く分からない。
軽量フレームワークと軽量JSライブラリで、なんで「相性が良い」という結論になるんだ?
相性が悪いと言ってるわけじゃなく、単に論理展開、関係性が良く分からない。
つうか、ざっと簡単なアプリなり小物ライブラリでも作ってみりゃいいだろ。
机上の空論で初心者がライブラリの良し悪しを判別できるわけがない。
- 759 :nobodyさん:2009/10/31(土) 00:51:18 ID:???
- なんだか、ケチつけたいだけの輩が巣食ってるらしい。
- 760 :nobodyさん:2009/10/31(土) 01:07:41 ID:???
- そうだねjQueryがいいねとか嘘ついても仕方ないだろ
駄目なものは駄目と言うしかない
- 761 :nobodyさん:2009/10/31(土) 08:09:34 ID:???
- 駄目なんて誰も書いてないだろ。
わけのわからん基準で良い悪いを決める話じゃないってことだろ?
あれだ、本質を理解した上で用途に合わせて判断しろっていう、
当たり前のことを行ってるだけだ。
- 762 :nobodyさん:2009/10/31(土) 09:42:56 ID:RCXnHmtW
- なるほど、jQueryはダメなのか。
どこがどうダメなんですか?
本質を理解した上で用途に合わせて判断ですか。
ご自身は本質を理解して判断されているのですね。すばらしい。
私には何が本質で何を基準に判断したらいいか皆目見当がつかないのですが
どんなところに注目すれば、本質を理解できるのでしょうか?
判断の基準は、例えばどんなところにおかれているのでしょうか?
- 763 :nobodyさん:2009/10/31(土) 09:55:01 ID:???
- >>762
>>758
- 764 :nobodyさん:2009/10/31(土) 10:41:20 ID:???
- jQueryでいいと思うよ。
というか、prototype.jsとの2択しか無い気がするが。
勉強するんだったら、このどっちかにしとくべき。
結局は、オープン系は何を使うにも主流どこに乗っとかないと
後々面倒だよ。スクラッチで作れるだけの力が無いのであれば。
- 765 :nobodyさん:2009/10/31(土) 13:52:37 ID:???
- で、GET使えるようになったの?
- 766 :nobodyさん:2009/10/31(土) 15:11:23 ID:RCXnHmtW
- >>764
参考になりました。
ありがとうございます。
>>765
jQueryはGET使えないの?
だとしてもCIはデフォルトでGETを使わないようになってるから
問題ないと思います。
- 767 :758:2009/10/31(土) 17:33:58 ID:???
- >762
> どんなところに注目すれば、本質を理解できるのでしょうか?
何かができるものは、絶対に何かを犠牲にしている、という点。
俺の書き込みが「jQueryはダメ」に見えたのなら、それはお前の経験不足。俺はjQuery信者だからな。
あと、理解したいならガタガタ抜かさずコード書け。
protojsとjQueryは併用できるしどっちかを選ぶようなものじゃないが、単独で込み入ったものを作るならprotojsが圧倒的に強い。
ただし>758でも書いたように、8割方のケースではjQueryのほうが圧倒的に早く作れる。
つまりどっちが向いているかは、どこまでをJSで処理し、どこからをサーバーサイドで処理するかによる。
- 768 :nobodyさん:2009/10/31(土) 20:31:41 ID:???
- >>766
>>765はCIの話だろう
- 769 :nobodyさん:2009/10/31(土) 20:41:12 ID:RCXnHmtW
- >>767
よくわかりました。ありがとうございます。
八割方のケースでjQueryが早くできること、
込み入ったことはprotojsが向いていることがわかって助かりました。
まあ、GoogleがjQueryを採用しているらしいので、
できないことというのも相当特殊なものかもしれません。
あと、その、サーバサイドでやることが、CIで補完しやすいとは限らないということですね。
- 770 :nobodyさん:2009/10/31(土) 23:32:42 ID:???
- >>767
この手のが一番疲れる。ある程度はできるから。
- 771 :nobodyさん:2009/10/31(土) 23:50:09 ID:???
- >>768
CIではGETを使えるので、そこを問題にしていたとは気づきませんでした。
デフォルトではセキュリティ上の理由から使えないようにしてあると
初期設定のチュートリアルにかかれてます。
- 772 :nobodyさん:2009/11/01(日) 21:33:49 ID:???
- mootoolsも忘れないで
っていうかスレ違いなんだぜ
- 773 :nobodyさん:2009/11/02(月) 14:12:06 ID:???
- CIのGETの話題が出たので便乗させていただきます。
CodeIgniterの検索ページで、ページ送りするとき、検索条件をどうやって次のページに持っていってますか?
=PCサイトと携帯サイトの違いをうまく処理したいです。
(携帯サイトは作ったことがないので、これからチャレンジすることになります。)
・日本のガラパゴス携帯のサイトは、基本的にクッキー無しという前提で作る。
・ページ間の遷移で、何らかの方法でセッションIDを持たせる。
・セッションIDに基づいて、サーバー側でセッション情報を保持しておき、セッション情報の中に検索条件を持たせておく。
こんな感じでOKでしょうか?
それで問題は、CIでセッションIDをどこに持たせるのか?
(1) POSTの場合
・デフォルトのCI設定で問題なし
(2) GETの場合
(2-1)・GETをOKの設定に変更する。 →これだとCIのURLヘルパーが使えなくて嬉しくない?
(2-2)・base64方式で、検索条件をエンコードして、URLのセグメントに無理やり埋め込む →URLに使える文字列長は上限があるので限度がある。
ttp://sourceforge.jp/projects/codeigniter/lists/archive/users/2009-March/001786.html
ttp://support.microsoft.com/default.aspx?scid=kb;ja;208427
GET メソッドを使用する場合、最大文字数は 2,083 文字に制限されます (実際のパスも含めた文字数)。
(2-3)・hookを使って、GETをPOSTに入れてしまう。→何かセキュリティーを考慮しなきゃいけない?=独自のバリデーターを用意するとか?
ttp://www.ryuzee.com/contents/blog/734
今のところ(2-2)で対応できていますが、検索条件が多くなったらどうしよう…><
- 774 :707:2009/11/02(月) 14:19:16 ID:???
- 自己解決しました。
=CI1.7.2のマニュアルに説明がありました。
ttp://codeigniter.jp/user_guide_ja/database/active_record.html#chaining
メソッドの連結を使えば、複数のメソッドをつなぐのがシンプルになります。
Note: メソッドの連結はPHP5 でのみ動作します。
CIは、PHP5とPHP4の違いを吸収するような便利な機能が提供されてますね。
ttp://codeigniter.jp/user_guide_ja/helpers/compatibility_helper.html
互換性ヘルパファイルには、PHP 5でしか実装されていないネイティブな関数と定数を、PHP 4でも実行できるものが含まれています。
これを使うことでPHP 4にしか対応していないサーバー上のアプリケーションでも、PHP 5のネイティブ関数を使うことができるようになります。
WebサーバがPHP4だから助かるな〜
- 775 :nobodyさん:2009/11/02(月) 14:19:28 ID:???
- GETを有効にするに3票
- 776 :nobodyさん:2009/11/02(月) 14:24:46 ID:???
- >>741
CIには簡易のテンプレート機能が用意されてるから、それ使ってみれば?
ttp://codeigniter.jp/user_guide_ja/libraries/parser.html
テンプレートパーサクラスを使うと、ビューファイルに含まれる擬似変数を解析できます。
ビューページで純粋なPHPを使う方が少し早いので、CodeIgniterでは、このクラスを必ずしも 必要としません。しかし、PHPのコードで混乱してしまうデザイナーと一緒に仕事をしている場合、開発者の中には、テンプレートエンジンを使用したい人もいると思います。
ドリームウィーバーでHTMLが崩れなければ、Smartyは要らないよ(^^)v
- 777 :nobodyさん:2009/11/02(月) 22:26:52 ID:???
- GET使えないとか不便なんだよな。
別に禁止にしなくても・・・。
- 778 :nobodyさん:2009/11/02(月) 22:48:46 ID:WSpfQV0j
- >>777
デフォルトでオフなだけで禁止はされてないよ?
オフのままでもセグメントで指定できるから不便もないと思うけど。
- 779 :nobodyさん:2009/11/03(火) 03:12:02 ID:???
- ?guid=onさえなければ、良い設計だと思うよ…
PC版のみのサイトなら安心して使える。
今、携帯対応するのにindex.phpの冒頭で$_GET['guid']がセットされていたらunsetする処理を
足して使ってる。我ながら情けないけど、他にうまい手段が見つからない。
- 780 :nobodyさん:2009/11/03(火) 12:01:34 ID:???
- スレ先を悩んだのですが、
Kohana をさくらで動かしている方がいそうなここで伺います。
さくらインターネットのマルチドメインでサブドメインの
ディレクトリを /home/myaccount/www/sub で指定しています。
( sub/ のように後ろに / は付けていません )
/home/myaccount/www/sub/index.html は
ttp://sub.example.com/ でちゃんと見えています。
ここに Kohana を入れて下記 mod_rewrite を設定しました。
$ cat /home/myaccount/www/sub/.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule .* index.php/$0 [PT,L]
RewriteRule ^(.*)$ index.php/$1 [PT,L]
ttp://sub.example.com/index.php/test/ は正しく出るのですが、
ttp://sub.example.com/test/ では「No input file specified. 」と出てしまいます。
CI を真似て php.ini に cgi.fix_pathinfo=1 を設定しています。
CI では $config['uri_protocol'] = "PATH_INFO"; なんてあるらしいのですが、Kohana では見当たらず。
Kohana をさくらで動かしている方、アドバイスお願いします!
- 781 :nobodyさん:2009/11/03(火) 12:20:06 ID:???
- RewriteRule ^(.*)$ ./index.php/$1 [PT,L]
これでどうだろ
- 782 :780:2009/11/03(火) 12:44:55 ID:???
- >>781
ありがとうございます。
やはり「No input file specified. 」です…。
- 783 :780:2009/11/03(火) 12:57:34 ID:???
- いろいろと試行錯誤中です。
RewriteBase をコメントアウトさせると
The requested URL /sub/index.php/ranking/ was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
となりました。何かこれで分かる方とかいらっしゃいますか。
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule .* index.php/$0 [PT,L]
#RewriteRule ^(.*)$ index.php/$1 [PT,L]
RewriteRule ^(.*)$ ./index.php/$1 [PT,L]
- 784 :nobodyさん:2009/11/03(火) 13:04:21 ID:???
- ttp://hero-kick.com/linux/entry-738.html
- 785 :780:2009/11/03(火) 13:13:37 ID:???
- >>784
ありがとうございます。
blog を参考に
RewriteEngine On
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ ./index.php?/$1 [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
としたのですが、 /index.php?/ の ? があるためか
「Disallowed key characters in global data.」が出ます。
? を外すと、やはり「No input file specified. 」に…。
- 786 :nobodyさん:2009/11/03(火) 13:25:22 ID:???
- 「Disallowed key characters in global data.」でいろいろググって
ttp://forum.kohanaphp.com/comments.php?DiscussionID=1723
を見つけました。
RewriteEngine On
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.+)$ /index.php?kohana_uri=$1 [L]
で一部表示!
「一部表示」というのは CSS や JavaScript のパスが解釈できていないため
デザインなどがガタガタなのです。とはいえ一歩前進です。
RewriteCond などを見直してみたいと思います。
いろいろとアドバイスをくれた皆様、本当にありがとうございます。
mod_rewrite は苦手なので試行錯誤をしていますので、
もし、こうだよ、とあれば引き続きよろしくお願いいたします。
- 787 :780:2009/11/03(火) 13:45:23 ID:???
- さくらインターネットのマルチドメインのサブドメイン環境で、
/ で動かす mod_rewrite は下記でうまくいきました。
RewriteCond %{HTTP_HOST} sub\.example\.com
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php?kohana_uri=$1 [PT,L]
アドバイスを頂いた皆様には重ねてお礼申し上げます。
ありがとうございました。
- 788 :nobodyさん:2009/11/04(水) 09:25:44 ID:qw3iX5XK
- >>758
> jQueryは軽量でもコンパクトでもない。
ホームページ冒頭にかいてあるけど?
jQuery is a fast and concise Javascript library...
自己宣伝だから全面的に信じるべきとはいわないが
この宣伝は無根拠なわけでもない。
ケチつける前に勉強した方がいい。
- 789 :773:2009/11/04(水) 14:30:18 ID:???
- >(2-2)・base64方式で、検索条件をエンコードして、URLのセグメントに無理やり埋め込む
追記です。
base64でエンコードした文字列のままだと、デフォルトのCIのURLで使えない文字が含まれてしまいます。
http://ja.wikipedia.org/wiki/Base64
Base64は、データを64種類の印字可能な英数字のみ
A?Z, a?z, 0? までの62文字と、記号2つ (+ , /) 、さらにパディング(余った部分を詰める)のための記号として = が用いられる。
CI → $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
なので、base64の「+」「/」「=」をそれぞれ「-」「_」「:」等に置換すれば、CIのURLのセグメントとして使えます。=URLのセグメントをGETとして利用可能
(例)CI用にカスタマイズしたBASE64(ヘルパー関数に配置)
if ( ! function_exists('my_base64_encode'))
{
function my_base64_encode($str)
{
$str = base64_encode($str);
$str = str_replace('+', '-', $str);
$str = str_replace('/', '_', $str);
$str = str_replace('=', ':', $str);
return $str;
}
}
これと同様にデコードする関数を用意すればOK
- 790 :nobodyさん:2009/11/04(水) 18:22:08 ID:???
- >>789
普通にURLエンコードじゃなんでダメなの?
検索条件の保持は、検索条件内容をDBにぶちこんで、そのIDを連れ回す方がしっくり来ると思う。
CIのフォーラムでもそんな感じだったと思った。
- 791 :789:2009/11/04(水) 20:23:11 ID:???
- >>790 アドバイスありがとうございます。
↓BASE64でエンコードする方法を参考にしてみたのですが、URLエンコードも試してみようと思います。
http://sourceforge.jp/projects/codeigniter/lists/archive/users/2009-March/001786.html
http://ja.wikipedia.org/wiki/URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89
URIにASCIIの非予約文字以外の文字データを用いる場合には、「%xx」(xxは16進数)という形でコードを表記する
スペースを含む記号(=,&,%,+)は使用できないので「%20」などのASCIIコードの16進表記に置き換えられる。
スペースは JavaScript の場合には %20 に変換されるが、CGIでは + に変換される。
↓
URLエンコード後の文字列に「+」が現れる場合は、$config['permitted_uri_chars']に「+」を追加すればOKですね。その方が手軽でしたorz
- 792 :789:2009/11/05(木) 13:06:07 ID:???
- >>790
urlencode方式でうまくいきました。ありがとうございました。
・FireFoxで見ると、エンコード後の文字列データは、日本語の場合、日本語のままでURLに表示されました。
↓
ttp://pricewave.blog110.fc2.com/blog-entry-26.html を参考にして、
$config['permitted_uri_chars'] = '一-龠ぁ-んァ-ヴーa-zA-Z0-9a-z 0-9~%.:_-';
・エンコードする文字列に半角スペースがある場合
urlencodeで半角スペースが「+」に置換されて、CI1.7.2でエラーになりました。
↓
$config['permitted_uri_chars']に「+」を追加してOK = ★追加する位置★に注意
(1) $config['permitted_uri_chars'] = '一-龠ぁ-んァ-ヴーa-zA-Z0-9a-z 0-9~%.:_-+'; // 末尾に「+」を追加
↓エラーになる
Message: Compilation failed: range out of order in character class at offset 63
Filename: libraries/URI.php
Line Number: 191
Message: Cannot modify header information - headers already sent by (output started at /home/mobilebest/usedbest.net/script/CodeIgniter/system/libraries/Exceptions.php:166)
Filename: codeigniter/Common.php
Line Number: 356
An Error Was Encountered
The URI you submitted has disallowed characters.
(2) $config['permitted_uri_chars'] = '一-龠ぁ-んァ-ヴーa-zA-Z0-9a-z 0-9~%.:_+-'; // 末尾じゃない場所に「+」を追加
=これだと、文字列に半角スペースが入っていてもOKでした。
- 793 :nobodyさん:2009/11/06(金) 17:05:09 ID:u54flEvH
- CIのEmailライブラリを使ってメールを送信しているのですが、本文が文字化けしていまいます。
なので、 MY_Email クラスを作り mail()関数を mb_send_mail() にして、
mb_language("ja"), mb_internal_encoding('UTF-8') を記述して送信すると、今度は題名が文字化けしていまいます。
ソースはUTF-8で、Emailの"charset"設定は ISO-2022-JP にしています。
エスパーさせて申し訳ありませんが、どなたかスマートな解決法をご教授くださいm(__)m
- 794 :nobodyさん:2009/11/06(金) 17:40:13 ID:???
- >>793
qdmail使えば幸せになれるよ
- 795 :nobodyさん:2009/11/06(金) 18:09:30 ID:u54flEvH
- >>794
レスありがとうございます。
現在Postfixが使われています。
しかし、メールサーバーの変更は事情によりできないので、別の対処法をご存知でしたら教えて頂けると幸いです。
- 796 :nobodyさん:2009/11/06(金) 18:14:39 ID:u54flEvH
- スミマセン、qdmail を qmail と見間違っていました
CIのライブラリに qdmail をぶち込んで使ってみることにします。
情報ありがとうございました!
198 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
Echo Digital Audioファンクラブ [DTM]
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.8 2008/11/13 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)