如何接受少于签署PHP功能

时间:2012-02-10 22:20:58

标签: php

我在插入一个小于号"<"然后插入另一个字符时遇到问题,让我们说"<p"或类似"<---me"。我通过这个功能:

function checkValues($value)
{
    $value = trim($value);
    if (get_magic_quotes_gpc()) 
    {
        $value = stripslashes($value);
    }
    $value = strtr($value,array_flip(get_html_translation_table(HTML_ENTITIES)));

    $value = strip_tags($value); //this line doesnt accept lessthan  

    $value = mysql_real_escape_string($value);
    $value = htmlspecialchars ($value);
    return $value;
}

我知道如果我删除了strip_tags(),那么将接受符号,但是通过我的函数后将它保存到数据库是否安全?或者有没有办法让lessthan符号通过这个函数而没有任何保存到数据库的问题?

1 个答案:

答案 0 :(得分:4)

您不应将已清理的用户数据保存到数据库(htmlspecialchars())。您应该在输出之前对其进行消毒,以防止出现问题。

实际上,将<符号放入数据库并没有错。确保在正确的背景下使用正确的清理工具(在htmlspecialchars()后使用mysql_real_escape_string()

你的功能有很多错误,请看这个例子:

此值将在您的函数中创建

\&quot;

此值应在您的函数中创建

\"

这是非常错误的

那么你的功能应该是什么样的?

function checkValues($value)
{
    $value = trim($value);
    if (get_magic_quotes_gpc()) 
    {
        $value = stripslashes($value);
    }

    $value = mysql_real_escape_string($value);
    return $value;
}

// just before outputing
function beforeOutput($value) {
    return htmlspecialchars($value);
}