2012-04-11 17 views
1

我正在使用预准备语句来存储,检索和更新数据到数据库或从数据库中更新数据。如果我正在使用预准备语句,是否需要使用htmlspecialchars()或htmlentities()?在准备的语句中使用htmlspecialchars()或htmlentities()

据我所知,你不需要使用用htmlspecialchars()插入数据,它只是担心输出HTML时...

我有,我正在使用准备好的声明中存储用户输入的情况从登记表像这样:

$stmt = $conn2->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)"); 
$stmt->bind_param('sss', $username, $email, $password); 
$stmt->execute(); 

我有另一个脚本被检索的用户名和登录,并在屏幕上显示自己的用户名,像这样当密码:

$stmt = $conn2->prepare("SELECT username FROM users WHERE username = ? AND password = ?"); 
$stmt->bind_param("ss", $username, $password); 
$stmt->execute(); 
$stmt->store_result(); 

if ($stmt->num_rows == 1) { 

$stmt->bind_result($name); 
$stmt->fetch(); 

我也把用户名在会话和呼应,像这样的会议:

echo $_SESSION['user']['username'] 

从这个例子中,我需要使用用htmlspecialchars()或ヶ辆()显示的用户名是什么时候?这是什么意思输出HTML?

如果是这样,我会在哪里实现htmlspecialchars()或htmlentities()?

+2

我认为你会很好的阅读[伟大的逃避现实(或:你需要知道如何处理文本中的文本)](http://kunststube.net/escapism) – deceze 2012-04-11 09:24:29

+0

感谢你 - 帮助lot – user1278496 2012-04-11 09:39:08

回答

2

数据库不关心HTML。

如果要将数据插入HTML文档,并在插入HTML文档之前立即使用它们(不要在插入数据库之前立即使用,您可能需要再次将原始数据用于其他目的) 。

+0

那么当我回显包含用户名的会话时,我需要使用htmlspecialchars? – user1278496 2012-04-11 09:24:20

+0

如果您将它回显到HTML文档中,是的(除非您已确保用户名不能包含HTML文档中具有特殊含义的字符)。 – Quentin 2012-04-11 10:33:38