この記事では主に、フォーム送信時の ThinkPHP のデフォルトの自動エスケープに関する解決策を紹介します。これは、誰もが比較して選択できる 2 つの解決策を提供します。友人はこの記事を参照してください
この記事の例では、ThinkPHP でフォームを送信するときのデフォルトの自動エスケープの解決策について説明します。参考のためにみんなで共有してください。具体的な方法は以下の通りです:
1. 質問:
ThinkPHP でデータを挿入するフォームを送信するとき、一重引用符と二重引用符は自動的にエスケープされます。つまり、バックスラッシュが自動的に追加されますが、一重引用符と二重引用符にバックスラッシュを追加したくない
ThinkPHP でデータを挿入するフォームを送信すると、一重引用符と二重引用符が自動的にエスケープされます。つまり、バックスラッシュが自動的に追加されますが、追加したくありません。一重引用符と二重引用符にバックスラッシュを追加する ThinkPHP でデータを挿入するフォームを送信すると、一重引用符と二重引用符は自動的にエスケープされます。つまり、バックスラッシュは自動的に追加されますが、一重引用符を追加して挿入したくありません。 ThinkPHP のデータ。hds"gh"j'g'h のような引用符と二重引用符とバックスラッシュは、自動的に hds"gh"j'g'h にエスケープされます。
このエスケープをキャンセルする必要があることに注意してください。つまり、公式の自動エスケープ関数は必要ありません。
インターネットで解決策を検索しました。
1 thinkphp ディレクトリの下で、ThinkPHPLibDriverDb ディレクトリを開き、dbmysql.class.php ファイル内のescapeString 関数を次のように変更します。 コードをコピー コードは次のとおりです:
public function escapeString($str) { //修改 周蛮子 放双引号双重转义 if (!get_magic_quotes_gpc()){ if($this->_linkID) { return mysql_real_escape_string($str,$this->_linkID); }else{ return mysql_escape_string($str); } } else { return $str; } }2. パブリック ファイルに追加します:
コードをコピーします
コードは次のとおりです:
public function escapeString($str) { //修改 周蛮子 放双引号双重转义 if($this->_linkID) { return mysql_real_escape_string($str,$this->_linkID); }else{ return mysql_escape_string($str); } }注: サーバーでエスケープが有効になっている場合、 thinkphpの後のプログラムでエスケープされてしまうバグ
を修正したところ、私のWebサイトのプログラムのバックグラウンド入力には問題がなくなったようです。今後Thinkphpを使用する場合は、サーバーに注意してください。一重引用符または二重引用符のフィルタリングがオンになっている場合、ThinkPHP と競合する可能性があるため、判断層を追加すると、この問題をうまく解決できます
関連する推奨事項:
。 thinkphp は Excel データのインポートを実現します エクスポート (完全なケース付き)
以上がフォーム送信時にデフォルトで自動的にエスケープするための ThinkPHP のソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。