2012-09-02 1 views
0

을 깰 :게시 PHP로 형식 문자열 -는 mysql_real_escape_string 원인() 나는 이런 식으로 뭔가 보이는 숨겨진 필드 형태가

 <form id="myform" method="post" action="/myphp.php"> 

     <div> 
      <label for="name">Name</label> 
      <input type="text" id="name" name="name" /> 
     </div> 
     <div> 
      <input type="hidden" id="id" name="title" value="Bob's Group (test)" /> 
     </div> 
     <div>  
      <input type="submit" value="Sign up" class="send_button" /> 
     </div> 


     </form> 

숨겨진 값 '제목'의에게 농 CMS의 PHP에서 값을 얻을 인라인 스크립트이고이 경우에는 "Bob 's Group (test)"입니다. 이 양식을 처리 할 수 ​​

PHP 스크립트는 다음과 같습니다

<?php 

// Get and check input 
$title = check_input($_POST['title']); 
echo "title: $title<br>"; 

$name = check_input($_POST['name']); 

$title = mysql_real_escape_string($title); 

// Some sql queries that use $title 
?> 

출력은 다음과 같습니다

제목 : 밥의 그룹 (테스트) 제목 : 즉

, mysql_real_escape_string은 제목을 빈 문자열로 만든다.

이 양식 값을 처리하고 사용할 안전한 SQL 문자열을 생성하는 방법이 있습니까?

+2

준비된 문을 사용하고 새 코드에 mysql_ *을 사용하지 마십시오. mysqli_ * 또는 PDO가 지금 취할 수있는 방법이다. – knittl

답변

0

mysql_real_escape_string()은 MySQL 서버 측입니다. 활성 DB 연결이 필요합니다. 수표를받을 시점에 수표가 있는지 확인하십시오.

참고 : 조언이 아닙니다. mysql_escape_string()은 클라이언트 측입니다. 즉, 활성 MySQL 연결이 없어도 PHP로 작동합니다.

0

msyql_real_escape_string()이 작동하려면 MySQL에 활성 연결이 있어야합니다. 연결되지 않았으므로 m_r_e_s()에서 부울 FALSE를 반환 할 가능성이 높으며 오류가 발생합니다. 수행 할 경우

$title = mysql_real_escape_string($title) or die(msyql_error()); 
             ^^^^^^^^^^^^^^^^^^^^^^ 

"연결되지 않음"오류 메시지가 나타날 가능성이 큽니다.

m_r_e_s가 적절하게 이스케이프 처리 할 수 ​​있도록 연결이 필요합니다. 기본적으로 서버에 필요한 이스케이프 처리 된 메타 문자가 무엇인지 제대로 묻습니다.

관련 문제