如何转义包含'或'等符号的字符串。在数组中?

时间:2012-03-18 04:45:09

标签: php

这是我为转义字符串创建的函数...

function clean_array($ value)

{

      foreach($value as $key => $val)

    {
    if(get_magic_quotes_gpc())
        {
        $value[$key]=stripslashes($val);
        }
    $value[$key]= mysql_real_escape_string($val);
    $value[$key]=htmlentities($val);
    $value[$key]=htmlspecialchars($val);
    }

return $value;
unset($val);

}

请逐步解释bcoz我是PHP的初学者。如果你给出解决方案,我非常感谢你...

2 个答案:

答案 0 :(得分:2)

你的代码完全没有任何成就。在开始担心编写“安全”代码之前,您应该学习基本编码。在你试图逃离悬崖之前走路。

1)magic_quotes已被弃用了很长时间,实际上已从最新的PHP版本中删除。在处理程序中编写它只会有助于保持旧的/过时的/不安全的PHP版本。

2)你不断地接受$val,对它做一些事情,然后将得到的新数据存储到变量中。但是,您始终使用 SAME 来源和 SAME 目的地。因此,htmlentities()调用会破坏/覆盖您的mysql_real_escape_string,而htmlspecialchars()调用则会对其进行销毁/覆盖。实际上,整个代码块具有以下操作功能:

foreach ($values as $val => $key) {
    $values[$key] = htmlentities($val);
}

3)不要做一体化安全功能。消毒/保护数据完全取决于您将如何使用“安全”数据。在对将存储在数据库中的数据进行html转换时,存在绝对的零点。同样,如果你永远不会允许这些“安全”值进入数据库,那么对它们进行SQL转义是没有意义的。您所做的只是执行一系列操作,这些操作很可能只是稍后需要再次撤消,因为您没有针对数据将用于的任何环境。

这很像穿上雨衣,皮大衣,睡袋和水肺潜水装备,然后决定你是去外面游泳还是游泳,或者是冬天出去。

答案 1 :(得分:0)

htmlspecialchars($string, ENT_QUOTES)