如果我允许用户用任何数字(abcABC-_.,!)选择他的用户名。§%§等)
我用 POST 这样做:
$username = trim($_POST['username']);
$username = stripslashes($username);
$username = htmlentities($username);
$username = htmlspecialchars($username);
在插入数据库使用之前,我将预准备语句与 PDO 一起使用:
try
{
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare("INSERT INTO user (username)
VALUES (?)");
$stmt->bindParam(1, $value1);
$value1 = $username;
$stmt->execute();
}
catch(PDOException $exception)
{
// catch error-msg
}
这是 100% 安全还是我必须添加更多内容?问候和感谢!!
我认为你应该使用filter_var或filter_input,而不是在第一个块中执行所有这些函数。
filter_var或filter_input
例
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
消毒过滤器 — http://us2.php.net/manual/en/filter.filters.sanitize.php