如何在每个 _POST 上添加 addlashes(htmlentities(...))?
if ( isset ( $_POST ) ):
foreach ( $_POST as $name => $val ) :
$_POST[$name] = addslashes(htmlentities($val));
endforeach;
endif;
这行得通吗?
如何在每个 _POST 上添加 addlashes(htmlentities(...))?
if ( isset ( $_POST ) ):
foreach ( $_POST as $name => $val ) :
$_POST[$name] = addslashes(htmlentities($val));
endforeach;
endif;
这行得通吗?
这行得通吗?
它仅在没有像 in 那样传递数组时才有效?name[]=tony&name[]=anthony
。
你为什么要这样做?如果您这样做是为了保护,您应该仅在需要时使用这些功能。
使用mysql_real_escape_string()
(甚至更好的PDO)而不是addslashes()
确保没有 SQL 注入是可能的。例子:
// using mysql_real_escape_string
$sql = "SELECT * FROM user WHERE name = '" . mysql_real_escape_string($name) . "'";
// using PDO (recommended)
$statement = $pdo->prepare("SELECT * FROM user WHERE name = ?");
$statement->execute(array($name));
使用htmlspecialchars()
代替htmlentities()
来防止 XSS。例子:
<input type="text" name="<?php echo htmlspecialchars($name) ?>" />
你是在不尝试就问这个吗?据我所知,它应该可以工作。