1

以下は私のコードです。問題は、アポストロフィ (') を含むユーザー名を入力すると、検索結果が返されるときに追加の文字「\ バックスラッシュ」が表示されることです。

以下は私のコードです。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?
}

ストリップスラッシュを追加しても問題 ありませんか、それを処理する他の方法はありますか?

4

1 に答える 1

0

ユーザーをこれらの特殊文字から制限することはできますが、gmail、yahoo、fb などではこの文字を許可することはありません 。 a/answer/33386?hl=en 2 番目のガイドラインを参照

于 2016-07-13T07:40:04.580 に答える