ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

日本CodeIgniterユーザ会コミュの技術トピック

  • mixiチェック
  • このエントリーをはてなブックマークに追加
検証や技術的な報告、意見交換のスレッドです。

コメント(34)

CIとMySQLでトランザクションの検証を行いました。

http://codeigniter.biz/archives/83

大丈夫みたいな感じです。
MySQLでは、より一般的なMyISAMではなく InnoDB か BDB のテーブルタイプで実行されている必要があります。
O/Rマッパーの検証も行いました。

http://codeigniter.biz/archives/87

気になるポイントが残っています。
今度別トピックにてみなさんにご協力願います。
木下です。

単純なバグのようですが
CodeIgniter_1.5.4 をDownloadしたファイルの中で
user_guide\helpers\smily_helper.html の 128行目、129行目の間
には ?> が抜けているようです。

128 }
129 </textarea>

zendのコーディング規約では、?>で最後を締めくくる必要が
あるのですが、PHPでは?>をあえて書かない人もいるくらい、
?>は曖昧な感じで、書かない方が逆にスムーズに開発がいく困った言語です。

悩ましいですが、今回はの明らかに書き忘れでしょうね。
本家のバグトラッカーを見てみますね。
木下です。

phpは 
html文書の中で <?php により phpの言語モードに移行
?>により、htmlモードへの復帰を行っているので
ページが終了する時には
どちらのモードであっても終了するのに変わりは無いので
「ページの最後の ?> は書く必要は無い。」
のであって 途中の?> を抜かすのは不味いのでは?

ページの最後の ?>を書かない方がいいというのは
出力をバッファリングしない設定になっているときに
ヘッダー情報等を操作しているファイルで ?>
を書いた後に空白行等があると
headers already sent
とエラーになってしまうからだと思われます。

私も何度かやったことがありますが
これを見つけ出すのはデバッガでトレースしながらでないととても時間が掛かります。

それよりは ページの最後を ?> で終了しなければ
PHPの言語内での空行として処理されるだけなので
headers already sent
に陥る確立が減るから書かないように提案されているのだと思われます。


でも、私は対になるタグが無いのはなんか嫌なので結局最後の ?>も
書いてしまうと思うけど。
CI のコードは ?> で終わってますので、マニュアルの typo だと思います。
この<textarea>タグは、コードを読みやすくするためのものです。

だから、このコードは、この controllerファイルの最後の ?> が抜けている
というだけのことだと思います。
function index($keyword)
{
//ビューの表示
$this->load->view('MainView',$keyword);
}

だけだと、どういう不都合があるのでしょう?
フォームで入力された値をチェックしてNGだった場合にもう一度フォームの画面に遷移させるとき、valueオプションにユーザの入力した内容を入れるようにしたいのですが、ビューの中で
<input ... value="<?=$_POST['hoge']?>">
とすると、逆にフォームに初めてアクセスしたときに変数が定義されていないというciのエラーが出ます。
この場合どのように解決するか皆さんの案を教えていただけないでしょうか
本にも載っていたのでチェックが要る項目はバリデーションを使いましたがチェックが要らない項目はどうしたらいいかと思っていました。
ぺろりんさんのコメントでチェックの要らない項目もバリデーションを使えばいいのかな?と思っていろいろやってみたら解決しました。ありがとうございました。
バリデーションでチェックが不要の項目にも$aho['hoge']=""のようなハッシュをset_fields($aho)しておいてビューで<?=$this->validation->hoge?>とすることでエラーをなくせることが分かりました。
あと、$_POST['hoge']を使うと、存在しない場合にNoticeが出ますが、$this->input->post('hoge')だとNotice出ないみたいです。
そうでなくても、$this->input->post('hoge')の方がCIっぽくていいと思います。
皆様始めまして。
Nullyです(NULL型大好きです)

先ほど
http://codeigniter.jp/wiki/index.php/Smarty%E3%81%A8%E9%80%A3%E6%90%BA%E3%81%99%E3%82%8B%EF%BC%88UTF-8%E7%B7%A8%EF%BC%89
↑のURLを見ながらSmartyを導入してみたのですが、

「続いて新規ファイルを作ります」
「CodeIgniter/system/application/config/Smarty_parser.php 」

といった表記があったのですが、Smarty_parser.phpの「S」が大文字で始まってしまうと、XAMPP環境などでは問題なく動くのですが、レンタルサーバーなどで動作させようとしますと、エラーとなります。

理由として考えられるのは、「include_onceがWinの環境だと大文字小文字を区別せずに読み込んでしまう」ためかと思われます。

現にLoader.php(LoaderClass)の「_ci_init_class(だったかな・・・)」で、strtolowerした後にconfigファイルを読み込んでいるようでした。

長くなってしまいましたが、上記参照URLのwikiの以下の一文を直したほうがいいかと思われますです。

「CodeIgniter/system/application/config/Smarty_parser.php」
↓
「CodeIgniter/system/application/config/smarty_parser.php」

日本のgoogleから「CodeIgniter Smarty」で検索すると1番に結果が着てたので・・・

一応ご報告までに、よろしくお願いします。(意味不明な点もあるかと思われますが・・・)
NULLYさん

ご指摘ありがとうございます。

おしゃるとおり、設定ファイルは小文字ですね。
Wiki を修正いたしました。
Kenjiさん

小さすぎて手間だったかもしれませんが、修正ありがとうございます。
日本語言語パックをあてた ci 1.6.3 を使用して開発をおこなっているのですが、
疑問に感じたことがあり、投稿させて頂きました。

会員登録を行う、以下のような画面遷移を行うものを作っています。
 入力画面→入力内容確認画面→完了画面

「入力画面→入力内容確画面」のタイミングでCI_Validationを利用して入力された値を
チェック(検証)しています。
そこでチェック(検証)エラーとなった際、入力画面を再度表示するのですが、
 ?エラーとなった内容に関するエラーメッセージ
 ?エラーとなった入力された値
の2つを表示しています。
このとき、「?エラーとなった入力された値」を表示する箇所(view/入力画面.php)で
 $this->validation->POST変数
と、CI_Validationを利用しています。

[質問1]
そもそも、
 $this->validation->POST変数をviewで表示用の値として利用する
といったことは、CIの利用思想(こんな言葉があるのかな…)から外れているのでしょうか?

[質問2]
仮に上記のような使い方に問題がない場合、「$this->validation->POST変数」へ設定される値が
上手に生成できていないように見受けられます。

「$this->validation->POST変数」へ設定する値を編集/生成しているのは、
 Validation.php → prep_for_form関数
です。prep_for_form関数の中では、いろいろやっているのですが、
 return str_replace(array("'", '"', '<', '>'), array("'", """, '<', '>'), stripslashes($data));
と、
 ・サニタイジング対象となるような文字のサニタイジング処理
 ・stripslashes関数による"\"削除
が行われています。
上手にできていないと思う理由ですが、
 ・サニタイジング対象となる文字に"&"がない
 ・magic_quotes_gpcの設定内容を確認せずstripslashes関数が無条件で使用されている
です。
以上のようなことを感じているのですが、私の理解に問題があるのでしょうか?

[追記]
私は、
 ・CI_Validationクラスを継承してオリジナルのValidationクラスを作成。
 ・prep_for_form関数をオーバーライド
 ・return str_replace(array("'", '"', '<', '>'), array("'", """, '<', '>'), stripslashes($data));
      ↓
  htmlspecialchars($data, ENT_QUOTES, "UTF-8"); //UTF-8で作成している為
  と、書き換えました。
として、対応しています。

長文になってしまい、申し訳ありません。何かご意見を頂戴できたら幸いです。
[質問1]
あります。ユーザガイドに使用例がありますから。
http://codeigniter.jp/user_guide_ja/libraries/validation.html

[質問2]
たぶん、おっしゃるとおりですね。
kenji様
ご意見ありがとうございます。
大変参考になしました。m(_ _)m
【ユーザー認証関係について】
みなさま

はじめて投稿させて頂きます、umeと申します。
ユーザー認証で少しつまってしまったので、ご教授頂ければ幸いです。

認証にはdx_authを使用しているのですが、チュートリアル通りに設定をしたところ、500エラーを出してしまいました。どうしてこのエラーが出てしまうのか分からなくて、困っています。

データベース接続に関しては、他のテーブルで接続・挿入・参照できているので、きっと問題ないと思います。

1つ違うことをしたとするなら、
dx_authに付属してくるsqlは、
> mysql -u root (データベース名) < schema.sql
で読み込むよう参考サイトには説明されていましたが、
私はphpmyadminで、インポートしました。
もしかして、これがいけないのでしょうか?

【参考サイト】
http://tobysoft.net/wiki/index.php?PHP%2FCodeIgniter%2F%C7%A7%BE%DA%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA%2FDX%20Auth%2F%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

ログインすると、残り15件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

日本CodeIgniterユーザ会 更新情報

日本CodeIgniterユーザ会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング