0

在共享服务器上使用魔术报价的 *** 很痛苦,我放弃上传另一个 php.ini 来覆盖共享主机 php.ini,因为随后出现其他问题,(配置中的 PDO 但未加载和等)我尝试了 .htaccess ,它给出了 500 错误。

所以我发现这个解决方案非常好并且效果很好 如何关闭共享主机上的魔术引号?

if ( in_array( strtolower( ini_get( 'magic_quotes_gpc' ) ), array( '1', 'on' ) ) )
{
    $_POST = array_map( 'stripslashes', $_POST );
    $_GET = array_map( 'stripslashes', $_GET );
    $_COOKIE = array_map( 'stripslashes', $_COOKIE );
}

直到我开始将数组发布到服务器

<select name="gropu[]">
<option value="1">2</option>
<option value="2">1</option>
<option value="3">3</option>
</select>

然后我有以下错误

Warning: stripslashes() expects parameter 1 to be string, array given in index.php on line 18

请帮助我,在本地主机上开发一些好的东西时真的很烦我,一旦上传到服务器就完全错了......

4

1 回答 1

1

我通常在初始化时运行它:

// attempt to disable 'magic quotes' at runtime
@ini_set('magic_quotes_runtime', 0);
@ini_set('magic_quotes_sybase', 0);

// strip slashes if that didn't work
if(get_magic_quotes_gpc()){
  function _strip_slashes_ref(&$var){
    $var = stripslashes($var);
  }

  array_walk_recursive($_POST,    '_strip_slashes_ref');
  array_walk_recursive($_GET,     '_strip_slashes_ref');
  array_walk_recursive($_COOKIE,  '_strip_slashes_ref');
  array_walk_recursive($_REQUEST, '_strip_slashes_ref');
}

魔术引号在 5.4 中被删除,因此您可能只想在以下情况下执行此操作:

version_compare(PHP_VERSION, '5.4.0') < 0
于 2013-05-14T00:35:58.887 回答