2012-04-11 3 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() или htmlentities() при отображении имени пользователя? Это что означает вывод HTML?

Если да, то где бы я реализовал htmlspecialchars() или htmlentities() ??

+2

Я думаю, вы бы хорошо читали [Великий эскапизм (или: что вам нужно знать, чтобы работать с текстом внутри текста)] (http://kunststube.net/escapism) – deceze

+0

Спасибо за это - помогите lot – user1278496

ответ

2

Базы данных не заботятся о HTML.

Используйте один из них, если вы вставляете данные в документ HTML, и делайте это непосредственно перед вставкой в ​​документ HTML (не сразу перед вставкой в ​​базу данных, вам может понадобиться необработанные данные снова для какой-либо другой цели) ,

+0

Так что мне нужно использовать htmlspecialchars, когда я повторяю сеанс, содержащий имя пользователя? – user1278496

+0

Если вы повторяете его в HTML-документе, да (если вы уже не гарантировали, что имена пользователей не могут содержать символы со специальным значением в документах HTML). – Quentin