ホームページ  >  記事  >  バックエンド開発  >  フォーム送信時の ThinkPHP のデフォルトの自動エスケープ ソリューション、thinkphp エスケープ_PHP チュートリアル

フォーム送信時の ThinkPHP のデフォルトの自動エスケープ ソリューション、thinkphp エスケープ_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:13:09943ブラウズ

フォーム送信時の ThinkPHP のデフォルトの自動エスケープ ソリューション、thinkphp エスケープ

この記事の例では、フォーム送信時の ThinkPHP のデフォルトの自動エスケープの解決策について説明します。参考のためにみんなで共有してください。具体的な方法は以下の通りです

1. 質問:

ThinkPHP でデータを挿入するフォームを送信するとき、一重引用符と二重引用符は自動的にエスケープされます。つまり、バックスラッシュが自動的に追加されますが、一重引用符と二重引用符にバックスラッシュを追加したくありません。

ThinkPHP でデータを挿入するフォームを送信すると、一重引用符と二重引用符が自動的にエスケープされます。つまり、バックスラッシュが自動的に追加されますが、フォームを送信するときに一重引用符と二重引用符にバックスラッシュを追加したくありません。 ThinkPHP にデータを挿入すると、一重引用符と二重引用符が自動的にエスケープされます。つまり、バックスラッシュが自動的に追加されますが、次のように一重引用符と二重引用符にバックスラッシュを追加したくありません。 g'h は自動的に hds"gh"j'g'h にエスケープされます。

必要なのは、stripslashes() 関数を使用してバックスラッシュを削除するのではなく、このエスケープ関数をキャンセルすることであることに注意してください。つまり、公式の自動エスケープ関数は必要ありません。

2. 解決策:

オンラインで解決策を検索:

1. thinkphp ディレクトリで、ThinkPHPLibDriverDb ディレクトリを順番に開き、dbmysql.class.php ファイル内のescapeString 関数を次のように変更します。

コードをコピーします コードは次のとおりです:
public functionescapeString($str) {
//二重引用符を二重にエスケープするように Zhou Manzi を変更します
if (!get_magic_quotes_gpc()){
if($this->_linkID) {
return mysql_real_escape_string($str,$this->_linkID); }その他{
mysql_escape_string($str) を返す
}
} その他 {
$str を返します。 }
}

オリジナル機能:


コードをコピーします
コードは次のとおりです:public functionescapeString($str) { //二重引用符を二重にエスケープするように Zhou Manzi を変更します
if($this->_linkID) {
return mysql_real_escape_string($str,$this->_linkID); }その他{
mysql_escape_string($str) を返す
}
}

2. 公開ドキュメントに
を追加します

コードをコピーします
コードは次のとおりです://二重エスケープを防止します if (get_magic_quotes_gpc()) { 関数ストリップスラッシュ_ディープ($値){
$value = is_array($value)
array_map('stripslashes_deep', $value) :
ストリップスラッシュ($value)
$value を返します
}
$_POST = array_map('ストリップスラッシュ_ディープ', $_POST); $_GET = array_map('ストリップスラッシュ_ディープ', $_GET); $_COOKIE = array_map('ストリップスラッシュ_ディープ', $_COOKIE); }

注: サーバーでエスケープが有効になっている場合、thinkphp を通じて再度エスケープすると、プログラムで二重エスケープのバグが発生します

修正後、私のウェブサイトプログラムのバックグラウンドエントリには問題がないようですが、今後 Thinkphp を使用する場合、サーバーが一重引用符または二重引用符のフィルタリングを有効にしている場合、競合する可能性があることに注意してください。 ThinkPHP を使用すると、判断層を追加することで、この問題を非常にうまく解決できます。
この記事で説明した内容が、皆様の ThinkPHP フレームワーク プログラミングに役立つことを願っています。


http://www.bkjia.com/PHPjc/917038.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/917038.html

フォーム送信時の ThinkPHP のデフォルトの自動エスケープの解決策 この記事の thinkphp エスケープの例では、フォーム送信時の ThinkPHP のデフォルトの自動エスケープの解決策について説明します。参考のために皆さんと共有してください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。