2012-04-11 5 views
1

준비된 문을 사용하여 데이터베이스에 데이터를 저장, 검색 및 업데이트합니다. 준비된 문을 사용하는 경우 htmlspecialchars() 또는 htmlentities()를 사용해야합니까? 내가 이해, 데이터를 삽입하고 단지 출력 HTML에 관한시) (반드시 htmlspecialchars를 사용할 필요가없는에서준비된 문에서 htmlspecialchars() 또는 htmlentities() 사용

...

나는 사용자 입력을 저장하기 위해 준비된 문을 사용하고있는 상황이 같은 레지스터의 양식에서 :

$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(); 
:

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

나는 사용자 이름과 로그인 및과 같이 화면에 자신의 이름을 표시하는 암호를 검색하는 또 다른 스크립트가

는 또한 세션에 사용자 이름을 넣어 그래서 같은 세션 반향했다 :이 예에서

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

관련 문제