1

下面是我的代码,问题是当我输入带有撇号 (') 的任何用户名时,返回搜索结果时会显示附加字符“\ 反斜杠”。

下面是我的代码,我发现在checkusername函数中使用了函数添加斜杠,因此添加了反斜杠。

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 发现它是出于安全原因使用的,因为在我的情况下,我们只显示搜索结果。所以我不确定为什么在这里使用这个功能。我的解决方法是在返回之前添加stripslashes () 函数,这将删除由addslashes() 函数添加的反斜杠。请在下面找到代码片段和代码更改的注释:

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?
}

请帮助添加stripslashes是否可以, 或者有没有其他方法可以处理它?

4

1 回答 1

0

您可以限制用户使用这些特殊字符,但在 gmail、yahoo、fb 等中,他们永远不会允许此字符。因为 t 允许以某种可读的方式表示多个单词,下面是一些文档 https://support.google.com/ a/answer/33386?hl=en 请参阅第二个准则

于 2016-07-13T07:40:04.580 回答