2011-12-06 11 views
0

私はCKEditorを利用した簡単なコンテンツエディタを作った。現時点では、私のローカルWebサーバー上では正常に動作しますが、リモートサーバーにアップロードすると、壊れてしまいます。mysql_real_escape_string?

以下は、私のローカルサーバーからの出力例です。

<img alt="" src="usrfiles/default_placeholder.png" style="width: 150px; height: 150px; " /> 

以下は、リモートサーバーから返される出力です。

&lt;img alt=&quot;\&amp;quot;\&amp;quot;&quot; data-cke-saved-src=&quot;\&quot; src=&quot;\&amp;quot;usrfiles/default_placeholder.png\&amp;quot;&quot; style=&quot;\&amp;quot;width:&quot; 150px;=&quot;&quot; height:=&quot;&quot; \&quot;=&quot;&quot;&gt; 

私はローカルとリモートで使用するコードを変更しませんでした。もちろん、データベースポインター(サーバー、データベース名、ユーザー名など)を変更することはもちろんです。私の唯一の疑いのある人は、テキストの提出時に使用するmysql_real_escape_string()です。

私のローカルサーバーはPHPバージョン5.3.6を使用し、リモートサーバーはPHPバージョン5.2.13を使用します。 これらの2つのバージョンでmysql_real_escape_string()の動作との違いはありますか?

EDIT CodeCasterへの返信で 、 出力 『それはデータベースに格納されてどのように、どのようにあなたがそれを見ないか、保存し、それを盗んんから来て「これはどこに多くのコンテキストを提供してください』。おそらくmysql_real_escape_string()は魔法の引用符とhtmlentitiesのようには関係ありません。 "

出力はSQLクエリから取得されます。 TEXTデータ型としてデータベースに格納されます。これは、両方ともPHP SQLクエリを介して格納され、取得されます。私はデータをINSERTまたはUPDATEしている間、mysql_real_escape_string()を使用します。私のローカルサーバーでは、mysql_real_escape_string()内のクエリでINSERTして、格納されたデータに変更を加えずに取得し、データをHTMLコードとして出力します。リモートサーバーでは、このシステムは中断します。

+0

は、私は本当にすべてを経験したhavent PHP 5.2.13またはPHP 5.3.6の違い。しかし、私はかなり肯定的ですが、それは問題です。 –

+0

この「出力」がどこから来るのかをより詳細に記述してください。データベースにどのように格納されていますか、どのように保管して取り込みますか、どのように表示しますか。おそらく、mysql_real_escape_string()はマジッククォートやhtmlentitiesと同様に何もしません。 – CodeCaster

答えて

1

ナットを行く、スラッシュの完全なHTMLを受信した場合に有効なので、あなたは、データベースのバックスラッシュからコンテンツを取得するたびにされているが、自動的に追加され、CKEditorバージョンされている私は推測するだけでワイルドだけど、それはそれはあなたの運用サーバーのmagic_quotesの上ですることができ、 HTML をソースとしてを内容の中に入れ、htmlエンコーディングを適用します。

最高の解決策は、magic_quotesをオフにすることです。 PHPを使用したソリューション:

ini_set('magic_quotes_gpc', 0); 

htaccessを使用している間:ちょうどstripslashes($string)を適用し、バック保存現在のものを削除するには

php_flag magic_quotes_gpc off 

を(magic_quotesのを無効にした後、私は意味)

+0

こんにちは、各ページでコードini_setを呼び出す必要がありますか?それとも、ウェブサイトを訪れるすべての人に一度だけ電話する必要がありますか? – Propeller

+0

フロントコントローラを使用している場合は、そのページに配置します。またはそれを合理的な場所で呼び出すと、実際にはデザインに依存します。また、htaccessのアプローチを試してください。何度も何度も何度も繰り返す必要はありません。また、可能であれば、php.iniを直接変更してください。 –

+0

私は.htaccessをやっていると思っていましたが、私はそれを実際に編集する経験はありません。すべてのサブフォルダに.htaccessを配置する必要がありますか?または、ルートフォルダはどうでしょうか? – Propeller

関連する問題