Version 2.87 を利用させて戴いております。感謝します。
実は、標準使用しますと、やはり文字化けしました。
それも、文字化けしない場合もあり、「あれれ?」と思いました。
「以前のバージョンだと起こらなかったのになあ〜」なんて短絡しましたね。
当方の言う「以前のバージョン」とは、自分で用意したサーバーでした。で、文字化けが起こるサーバーとは、とある、Free Web Hosting Server(以後FWHSと称す)にインストールしたxoopsです。
まず、FWHS側の
を実行されることを推奨します。で、mbstringに関わる定義を調べてみてください。
当方のFWHSでは、設定は何もなされていないです。これって、ある意味、Free Web Hosting だから、ポリシーとしては大正解なのかも知れません。
そこで、当方の環境としては「EUC」で行きますので、
試しに、modules/myalbum の直下に、「 .htaccess 」ファイルを準備しました。
php_value default_charset EUC-JP
php_value mbstring.language Japanese
php_flag mbstring.encoding_translation ON
php_value mbstring.detect_order auto
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.http_input auto
php_value mbstring.http_output pass
php_value mbstring.substitute_character none
です。
これで、お化けは無くなった模様です。
もしも、UTF-8なら、EUC-JPあたりを読み替えてください。
- Ujiki.oO -
Quote:
Ujiki.oO wrote:自己レス御免
試しに、modules/myalbum の直下に、「 .htaccess 」ファイルを準備しました。
漢字書き込みと表示が正常なら、きっと、xoopsインストール先を含めたWebルートに「 .htaccess 」を定義するべきですね。
そうしないと、PHPでの書き込みによる文字化けは、様々なモジュールで悪影響するでしょう。当方は、modules/myalbum の直下の「 .htaccess 」で実検確認してから、public_html/ 直下にも、定義しました。定義した後に、
を実行すると、なるほど変化してますよね。
- Ujiki.oO -
次のような記事を参照しました。
http://marijuana.ddo.jp/download/xoops_tips.htmlQuote:
モジュール作成時に間違えやすいサニタイズ
XOOPSのサニタイズクラスには、stripSlashesGPCとaddSlashesがありますが、
ともにmagic quotes gpcの値を見て、関数を通すか判断しています。
間違えの例:$hoge = $myts->stripSlashesGPC($_POST['hoge']);
echo 'ポストデータ'.$myts->htmlSpecialChars($hoge);
$sql = "INSERT INTO table (text) VALUES ('".$myts->addSlashes($hoge)."')";
この例では、magic quotes gpcがoffであれば問題ありませんが、
magic quotes gpcがonの場合にはaddSlashesされませんので、SQL Injectionが可能になってしまいます。
正しい例:$hoge = $_POST['hoge'];
echo 'ポストデータ'.$myts->htmlSpecialChars($myts->stripSlashesGPC($hoge));
$sql = "INSERT INTO table (text) VALUES ('".$myts->addSlashes($hoge)."')";
受取ったデータは表示の時にstripSlashesGPCとhtmlSpecialCharsを掛けて、DBに保存するときにaddSlashesします。
気持ち的には受取ったときにstripSlashesGPCして生データにしておきたいですが、このやり方の場合は間違いです。
Free Web Hosting を利用する場合に、そのサーバー管理側の都合で、.htaccess を利用した、mbstring パラメーターのオーバーライドを許可していないサイトもあります。その場合、PHPのmbstringに関するパラメーターの設定がなされていないので、おうおうにして、文字化けを引き起こします。
mbstring関連のパラメーターを変更できないサイトにおけるXOOPS2の運用におきまして文字化けが起こる場合では、modules/myalbum/submit.php と modules/myalbum/editphoto.php について、前述しましたルールの通りにソースを変更させていただきましたが、対応以降、文字化けは起きておりません。
具体的には、例えば modules/myalbum/submit.php であれば、
// $title = $myts->stripSlashesGPC( $_POST["title"] ) ;
$title = trim( $_POST["title"] ) ;
// $desc_text = $myts->stripSlashesGPC( $_POST["desc_text"] ) ;
$desc_text = $_POST["desc_text"] ;
と、変数をそのまま代入し、
// $sql = "INSERT INTO $table_photos (lid, cid, title, ext, submitter, status, date, hits, rating, votes, comments) VALUES ($newid, $cid, '".addslashes($title)."', '$ext', $submitter, $status, $date, 0, 0, 0, 0)";
$sql = "INSERT INTO $table_photos (lid, cid, title, ext, submitter, status, date, hits, rating, votes, comments) VALUES ($newid, $cid, '".$myts->addSlashes($title)."', '$ext', $submitter, $status, $date, 0, 0, 0, 0)";
と変更しました。こうすれば、どんな環境でも文字化け問題は解決するのかも知れません。
- Ujiki.oO -
http://www.peak.ne.jp/xoops/md/xhnewbb/viewtopic.php?topic_id=1606&post_id=6420#forumpost6420で話題を投稿しましたが、.htaccess の利用許可が出ず、mbstring変数を上書き出来ないサイトで、どうしても文字化けが起こりました。そんな折に、「
モジュール作成時に間違えやすいサニタイズ」を参照する機会があり、 modules/myalbum/submit.php と modules/myalbum/editphoto.php の、$title と $desc_text に関して、変更を加えたところ、当方のサイトでは「文字化け」は起こらなくなりました。
modules/myalbum/submit.php の171行目より
$title = trim( $_POST["title"] ) ;
$desc_text = $_POST["desc_text"] ;
と変更し、177行目を
$sql = "INSERT INTO $table_photos (lid, cid, title, ext, submitter, status, date, hits, rating, votes, comments) VALUES ($newid, $cid, '".$myts->addSlashes($title)."', '$ext', $submitter, $status, $date, 0, 0, 0, 0)";
に変更、更に223行目付近を
$xoopsDB->query( "INSERT INTO $table_text (lid, description) VALUES ($newid, '".$myts->addSlashes($desc_text)."')") or die( "DB error: INSERT text table" ) ;
と変更しました。
また、modules/myalbum/editphoto.phpの149行目より
$title = trim( $_POST["title"] ) ;
$desc_text = $_POST["desc_text"] ;
と変更し、164行目を
myalbum_update_photo( $lid , $cid , $myts->addSlashes($title) , $myts->addSlashes($desc_text) , $valid , $ext , $dim[0] , $dim[1] ) ;
と、変更してみましたところ、画像の新規登録も、画像の編集も、文字化けは解消されました。
※ ざくっとしか検証しておりませんので、自己責任で判断願います。当方では、あらゆる損害の責任は負いかねます。
- Ujiki.oO -