- ベストアンサー
リッチテキストエディタの内容の保存(MySQL)
- リッチテキストエディタで編集した記事の内容をMySQLに保存する際に、カラムの値が0になってしまう現象が発生します。具体的な原因や解決策について教えてください。
- リッチテキストエディタで編集した記事の内容をどこに保存すべきかについての問題です。一つのtextareaに装飾したテキストや画像がある場合、どのように保存するか悩んでいます。保存できる方法や、強調テキストや下線などの形式も含めて保存する方法について教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>このままで、問題なく表示はできるのですが、 >大丈夫でしょうか? 質問の意図がよくわからないのですが 考え方だけ・・・ まずもともとの質問、データを登録するときの問題は、どう保存してもよい という回答でご理解いただいたでしょうか? むしろそれを考慮してのプリペアード処理なのだと推測して回答したつもりです。 また今回の質問が信頼できないユーザーの投稿や、他人の書いた文書を取り込んで そのまま表示させたときに問題があるか?という命題であれば、 閲覧者が意図していないページへ誘導されたりいろいろ問題です 仮に自分が書いたものもしくは自分の属するグループが書いたものであれば セキュリティ面ではある程度リスクは低くなりますが、「強調したテキストや下線」 など意図したとおり見せることは少し難しいです 必ずしも情報提供者と同じ環境ではないユーザーが閲覧するため ご自身で下線と思って表示したつもりでも相手の環境では網掛けになっているかも しれません(もちろんそれを考慮していろいろデザインを工夫するのでしょうけど) ご自身の見られる表示に近い形で他人にみせようとするなら、画像やpdfといった 環境に依存しにく手法をとることになります。
その他の回答 (4)
あ、0に化ける件は解決されていましたね。 失礼しました。
1. カラムの型がINTになっていたりはしませんか?一般的にはサイズ指定したVARCHARかTEXTを用います。 2. 装飾テキストや画像はどうやって埋め込んでいるのでしょうか?単にHTMLタグを使った装飾なら何の問題も無く保存できます。画像に関しては、画像のバイナリデータを格納できるテーブルも作っておけばいいんじゃないでしょうか。表示するときにだけ引っ張り出してきてテンポラリファイルを生成するなり、PHPファイルで直接画像を出力するなりすればいいと思います。 あと1つ気になったのですが、 stripslashes($_POST['mytext']) このstripslashesって不要なのでは? バックスラッシュが含まれていても問題なく処理できますよ。 PHPからデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71
お礼
ご回答ありがとうございます。 >装飾テキストや画像はどうやって埋め込んでいるのでしょうか? designMode= Onにして execCommandで埋め込んでます。 現在,mysql二保存されているソースは以下のようなイメージです。 このままでもよいのか、それともバイナリデータだけ 別にmysqlに保存したほうのがよいのか、パフォーマンスに 差がでないのならこのままでもよいかと思っているのですが、 実際、どうなんでしょうか? 以上、宜しくお願いします。 <font color="#0000ff">テストテスト</font><div><font color="#0000ff"><br></font></div><div>テストテスト</div><div><br></div><div>テストテスト<br><div></div><div><img src="./images/preview_hogehoge.jpg"></div>
- yambejp
- ベストアンサー率51% (3827/7415)
>htmlのソースごとmysqlに保存するのは、できたのですが、 >果たしてそのやり方でよいのでしょうか? データはなるべく生に近い形で持った方がよいので、 特に変なエンコードを考えずにソースのあるがままとっておけばよいのでは? 運用ポリシーの問題なので好きにすればいいです そこからキーワードを検索したいなどあるなら 全文検索など視野に入れてもよいかもしれませんが、思う以上に面倒です
お礼
mysqlに保存されているソースが下のようなイメージです。 <font color="#0000ff">テストテスト</font><div><font color="#0000ff"><br></font></div><div>テストテスト</div><div><br></div><div>テストテスト<br><div></div><div><img src="./images/preview_hogehoge.jpg"></div> このままで、問題なく表示はできるのですが、 大丈夫でしょうか?
- yambejp
- ベストアンサー率51% (3827/7415)
的外れな回答かもしれませんが >insert into texts (title, edit_text) values (title = :title, edit_text = :edit_text) ってSQL文としておかしくないですか? せめて、insert into texts (title, edit_text) values (:title, :edit_text) ではない?
お礼
あっ、おっしゃる通りです。 お恥ずかしい限りです。 ご指摘ありがとうございました。
補足
htmlのソースごとmysqlに保存するのは、できたのですが、 果たしてそのやり方でよいのでしょうか? 念のため、edit_textのデータ型をLONGTEXTにしているのですが、 他に方法はあるものなのでしょうか? どーもhtmlソースごと保存するということに違和感を覚えましたので。 宜しくお願いします。
お礼
出張中のため、返信が遅れてしまいました。 ベストアンサーとさせていただきます。ありがとうございました。