三元运算符变量和mysql?

时间:2011-04-11 19:04:48

标签: php mysql security

这会有用吗?

$username = mysql_real_escape_string(isset($_POST['username'])) ? $_POST['username'] : '';

我知道三元运算符会起作用,但真正的逃逸呢?如果真正的逃脱成功,我如何检查将来的参考?

由于

2 个答案:

答案 0 :(得分:3)

你的代码正在逃避三元表达的条件而不是结果。

$username = mysql_real_escape_string(isset($_POST['username']) ? $_POST['username'] : '');

将括号移动到表达式的末尾,然后您将转义三元表达式的结果。你也可以使用

$username = isset($_POST['username']) ? mysql_real_escape_string($_POST['username']) : '';

更好的选择是为此使用一个函数,而不是有一堆巨大的代码行,即。

function escape_val($arr, $key, $default = ''){
    return mysql_real_escape_string(isset($arr[$key]) ? $arr[$key] : $default);
}

$username = escape_val($_POST, 'username');
$some_other = escape_val($_POST,'key','default_value');

答案 1 :(得分:2)

$username = isset($_POST['username']) ? mysql_real_escape_string($_POST['username']) : '';
//          ^ condition                 ^ value if condition returns true              ^ if false