PEAK XOOPS - myalbum-記事登録の文字化けについて in englishin japanese

myalbum-記事登録の文字化けについて

  • You cannot open a new topic into this forum
  • Guests cannot post into this forum
Previous post - Next post | Parent - Children.1 .2 | Posted on 2006/8/3 11:07
arrows  二等兵   Posts: 2
myalbumを利用させていただいています。ありがとうございます。
XOOPS2.0.16にインストール。サーバーはXREAです。

初回の画像登録ではほぼ問題なく画像登録できていますが、一旦登録したものの記事部分を修正して再登録した際に文字化けがおこるようです。100点ほどの画像登録分の全てを記事修正した際には5〜6件に1回の文字化けがおこりました。直し分の登録の際は画像修正はしないので空欄のまま再登録していました。(画像の無いものも登録可にしても結果は同じでした。)文字化けが起こると、登録画面の送信やその他のボタン類も表示されず管理画面の「画像管理」から削除する以外の方法はないようです。(2.0.12、13の頃にはこのような文字化けをほとんど記憶していません。)
昨日やっていた分は直し分の記事登録でしたが、本日新規登録分で初めて文字化けが起こりました。こちらは程度がよく、修正画面にボタン類も表示されていたので、こちらでは登録画面の方から修正が可能でした。なお、myalbumのモジュールは0〜3まで4点利用しています。
設定などの修正で文字化けを回避できるようでしたらお教えいただければ幸いです。
Votes:3 Average:6.67
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/4 5:44
GIJOE  先任軍曹   Posts: 4110
FAQですね。
ちょっと検索すればいくらでもひっかかるとは思いますが、一応。

mbstring.language
mbstring.internal_encoding
を正しく設定してください。
Votes:6 Average:1.67
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/5 10:58
Ujiki.oO  一等兵 From: Yokosuka  Posts: 16
Version 2.87 を利用させて戴いております。感謝します。

実は、標準使用しますと、やはり文字化けしました。
それも、文字化けしない場合もあり、「あれれ?」と思いました。
「以前のバージョンだと起こらなかったのになあ〜」なんて短絡しましたね。
当方の言う「以前のバージョン」とは、自分で用意したサーバーでした。で、文字化けが起こるサーバーとは、とある、Free Web Hosting Server(以後FWHSと称す)にインストールしたxoopsです。

まず、FWHS側の
<?php
phpinfo();
?>
を実行されることを推奨します。で、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 -
Votes:1 Average:10.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/5 11:13
Ujiki.oO  一等兵 From: Yokosuka  Posts: 16
Quote:
Ujiki.oO wrote:自己レス御免
試しに、modules/myalbum の直下に、「 .htaccess 」ファイルを準備しました。

漢字書き込みと表示が正常なら、きっと、xoopsインストール先を含めたWebルートに「 .htaccess 」を定義するべきですね。
そうしないと、PHPでの書き込みによる文字化けは、様々なモジュールで悪影響するでしょう。当方は、modules/myalbum の直下の「 .htaccess 」で実検確認してから、public_html/ 直下にも、定義しました。定義した後に、
<?php
phpinfo();
?>
を実行すると、なるほど変化してますよね。

- Ujiki.oO -
Votes:1 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/17 13:15
arrows  二等兵   Posts: 2
遅くなりました。
ご教授ありがとうございます。参考にして何とかやってみます。
Votes:1 Average:0.00
Previous post - Next post | Parent - No child | Posted on 2006/9/6 0:16
Ujiki.oO  一等兵 From: Yokosuka  Posts: 16
次のような記事を参照しました。

http://marijuana.ddo.jp/download/xoops_tips.html
Quote:
モジュール作成時に間違えやすいサニタイズ

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 -
Votes:50 Average:1.80
Previous post - Next post | Parent - No child | Posted on 2006/9/6 0:29
Ujiki.oO  一等兵 From: Yokosuka  Posts: 16
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 -
Votes:10 Average:7.00

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!