作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
<分区>
我目前正在阅读和学习 PHP,书中提供了此作为清理表单输入的正确方法:
function mysql_entities_fix_string($connection, $string)
{
return htmlentities(mysql_fix_string($connection, $string));
}
function mysql_fix_string($connection, $string)
{
if (get_magic_quotes_gpc()) $string = stripslashes($string);
return $connection->real_escape_string($string);
}
这很好,除了我知道 get_magic_quotes_gpc()
在当前版本的 PHP 中已被弃用。通过查看一些不同的资源,我了解到我不应该使用 get_magic_quotes_gpc()
我应该只使用 sql 准备语句。这让我感到困惑,因为我认为我们仍然需要对字符串进行一些功能性清理。
除非我错了(它发生了,我在这方面相对较新)这是一个很大的禁忌,无论准备好的声明如何:
$username = $_POST['username'];
$stmt = $conn->prepare("SELECT password FROM users WHERE username=?");
$stmt->bind_param("s", $username");
$stmt->execute();
...
但如果是这样的话,这是一个可以接受的卫生过程吗:
function get_post($conn, $var) {
return $conn->real_escape_string($_POST[$var]);
}
...
$username = get_post($conn, 'username');
$stmt = $conn->prepare("SELECT password FROM users WHERE username=?");
$stmt->bind_param("s", $username);
$stmt->execute();
...
或者我需要在它上面添加一些其他的转义函数吗?
这个问题在这里已经有了答案: How can I prevent SQL injection in PHP? (27 个答案) 关闭 6 年前。 我目前正在阅读和学习 PHP,书中提供了此作为清理表
我是一名优秀的程序员,十分优秀!