-3

如何在每个 _POST 上添加 addlashes(htmlentities(...))?

if ( isset ( $_POST ) ):
     foreach ( $_POST as $name => $val ) :
           $_POST[$name] = addslashes(htmlentities($val));
     endforeach;
endif;

这行得通吗?

4

2 回答 2

1

这行得通吗?

它仅在没有像 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) ?>" />
于 2012-10-11T08:09:31.760 回答
0

你是在不尝试就问这个吗?据我所知,它应该可以工作。

于 2012-10-11T08:08:44.040 回答