ホームページ >バックエンド開発 >PHPチュートリアル >phpのstripslashes()関数とaddslashes()関数の違いの詳細な例
以前、PHP の addslashes() 関数とtripslashes() 関数の関数といくつかの使用法を紹介しましたが、この記事では、PHP tripslashes() 関数とaddslashes() 関数の違いを紹介します。
関数名での違い: ストリップ (strip)、スラッシュ (slash)、スラッシュ (スラッシュ) の追加 (add)、つまり、1 つはスラッシュを取り除くことであり、もう 1 つはスラッシュを追加することです。スラッシュの追加は逆です。
使用シナリオ: 実際、これら 2 つの関数は、データベース操作など、特殊文字を変換する必要がある一部のデータ処理で主に使用されます。データベースに書き込む際には、一重引用符などの特殊文字をエスケープして保存する必要があります。読み取るときは、データベース内のこれらのエスケープされた特殊文字を逆エスケープする必要があります。
mysql にデータを書き込むと、例えば:
mysql_query("update table set `title`='kuhanzhu's blog'");
エラーが発生します。 ASP と同様、データベースは一重引用符にアレルギーがあります。そして、addslashes は現時点で最も価値があり、asp の replace("'",""","kuhanzhu's blog") と同じ機能を持っています。
セキュリティのために、PHP は magic_quotes_gpc = On 関数を導入しました。処理を行わずに一重引用符をデータベースに直接挿入できます。その後、動作環境を盲目的に信頼するのではなく、一重引用符の問題を考慮する必要があります。
magic_quotes_gpc = On の場合は、addslashes() を使用します。データは ' の形式でデータベースに保存されます。このとき直接出力すると、予想以上に内容が多いことがわかります。そのため、stripslashes() が表示され、それを削除できます (str_replace とは異なります)。 ("" , "",$Str))。
magic_quotes_gpc = Off の場合、addslashes() で処理されたデータは、上記の問題なくデータベースに保存されます。この時点ではデータが直接出力されるため、stripslashes() を使用する必要はありません。
addslashes() とtripslashes() はまったく逆であることを覚えておいてください。
簡単に言えば:
magic_quotes_gpc = On の場合、システムは一重引用符などの問題を自動的に処理します。addslashes() とtripslashes() を使用するかどうかは問題ではありませんが、データを追加するときに使用する場合は問題ありません。データを表示する場合は、addslashes() を使用し、その後、stripslashes() を使用する必要がありますmagic_quotes_gpc = Off の場合、システムは一重引用符などの問題を処理しないため、データを挿入する場合は addslashes() を使用する必要がありますが、データを表示する場合は使用しません
分析ができたので、上記の 2 つの状況に従って、次のことが得られます。 magic_quotes_gpc がオンかオフかに関係なく、addslashes() を使用します。 ) データを追加する場合、stripslashes() は使用できません。
それが On か Off かを判断する方法は?
get_magic_quotes_gpc()関数の例については、この記事を参照してください。
コードは以下の通りです:代码
//提交数据,或者变量准备:
$Content=addslashes(”这里面是数据,不管有没单引号或者还是变量”);
//插入数据到数据库,代码省略
//开始显示数据
$Content=”从数据库读取的数据”;
if(get_magic_quotes_gpc()){
$Content=stripslashes($Content);
}
echo $Content;
【おすすめ関連記事】:
以上がphpのstripslashes()関数とaddslashes()関数の違いの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。