スレッド表示 | フラット表示〕 全トピック 920 件中 654 番目 次≫ ≪前

マルチバイトについて

created: 2004-03-22 01:58 | modified: 2004-03-25 00:31 | reply: 3

[1425] マルチバイトについて

user: ひょ | created: 2004-03-22 01:58
こんにちわ。
以前magic_quotes_gpcについてここで教えて頂いたのですが、マルチバイトについて未対応のようでどうしたものかと思っております。良い知恵等ございましたらお願いします。

困ってる事は二つあります。今回作ってるページは入力フォームにユーザが情報を入力しそれをDBに保存するというものです。
一つ目は、入力した内容に誤りがある場合再度入力フォームを表示させ「受け取った文字列をINPUTタグにセット」します。このときにmagic_quotes_gpcが働いて入力フォームに\マークが入ってしまいます。
それとどうやら"ソ"をエスケープするみたいなのですが、これがなぜか"ソ"を入れると"ソ\"になってしまうんです。おかげでinsert文で文字列の終わりのダブルクォートがエスケープされてエラーが発生してしまいます。

なんて便利なmagic_quotes_gpcと思っていたのですがこのままではどうしようもありません。
どのように対策すれば良いのでしょうか。現在考えてるのは、1つ目は\を削除してしまえば良いとして、二つ目は・・・思いつきません。

思いついたらなんでも良いのでご教授お願いします。
reply: 1429 返信 編集 削除

[1429] 自己レス

user: ひょ | created: 2004-03-22 21:24
magic_quotes_gpcはoffにしてmysql_escape_stringを使ってエスケープするのが一番かなと考えてみました。
なんか間違えてるような・・・。
Parent: 1425  reply: 1435 返信 編集 削除

[1435] magic_quotes_gpc=Off 推薦

user: ゆうじ | created: 2004-03-23 15:50
遅くなりました。

先ず「ソ」が「ソ\」となるのは、
Shift-JIS 固有の問題ですね。
"文字化け SJIS ソ 表" などと検索すると
山ほど出てくると思いますので詳しくはそちらで。


次に、magic_quotes_gpc でエスケープされた文字の、
エスケープを取り除くには、
// magic_quotes_gpc=On ならば、エスケープを取り除く。
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}

まずはこれをはじめに実行。

$str をチェック後、
不備があればフォームを表示させる。

OKならば、addslashes関数で再びエスケープして、DBに投げる。
というのはどうでしょう。


必要に迫られれば、どうせエスケープしなくてはなりませんので、
可能ならば、magic_quotes_gpc = Off に
しておいて、
必要になった時に、エスケープするのが良いと思います。
Parent: 1429  reply: 1443 返信 編集 削除

[1443] そうですね。

user: ひょ | created: 2004-03-25 00:31
ゆうじさん、レスありがとうございます。
はい。確かにmagic_quotes_gpcはOFFがいいですね。最初はなんて便利なんだ?と思ってしまい本当にOFFにしていいのかなとか思ってしまってました。レスを見て安心しました。どうもありがとうございます。
Parent: 1435  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 654 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑