如果我允许用户选择任何数字的用户名(abcABC -_。,!“§%§& etc ..)
我用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%安全还是我必须添加更多东西?问候和感谢!!
答案 0 :(得分:1)
我认为您应该使用 filter_var 或 filter_input ,而不是在第一个块中执行所有这些功能。
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
清理过滤器 - http://us2.php.net/manual/en/filter.filters.sanitize.php