以下は私のコードです。問題は、アポストロフィ (') を含むユーザー名を入力すると、検索結果が返されるときに追加の文字「\ バックスラッシュ」が表示されることです。
以下は私のコードです。checkusername関数でaddslashes関数が使用されているため、バックスラッシュが追加されています。
if ( 0 < count( $my_field_place ))
{
for ( $i = 0; $i < count( $my_field_place ); $i++ )
{
if ( true === isset( $Fields[$i] ))
{
print "gMapping[$i] = new MappingItem( '" .
addslashes( $Fields[$i] ) .
"', '" .
checkusername( $my_field_place[$i] ) .
"' );";
}
}
}
function checkusername($inStr)
{
$orig = array();
$new = array();
$orig[00] = "/\n/`" ; $new[00] = "\\?n";
$orig[01] = "/[^\x-*()]/"; $new[01] = "";
$var1 = preg_replace($orig, $new, $inStr);
$var2 = addslashes($var1 ); // i am not sure why addslashes is used but i am asked not to remove because of security reasion?
return $var2;
}
注: Google で調べたところ、セキュリティ上の理由で使用されていることがわかりました。私の場合は、検索結果のみを表示しているためです。したがって、この関数がここで使用される理由がわかりません。私の修正は、 addslashes() 関数によって追加されたバックスラッシュを削除する、戻る前にstripslashes () 関数を追加することです。以下のコード スニペットとコード変更のコメントを見つけてください。
function checkusername($inStr)
{
$orig = array();
$new = array();
$orig[00] = "/\n/`" ; $new[00] = "\\?n";
$orig[01] = "/[^\x-*()]/"; $new[01] = "";
$var1 = preg_replace($orig, $new, $inStr);
$var2 = addslashes($var1);
return stripslashes($var2); // i am not sure stripslashes is correct fix or not?
}
ストリップスラッシュを追加しても問題 ありませんか、それを処理する他の方法はありますか?