2012-10-28 3 views
0

PHP 변수를 다른 페이지에 게시하는 데 문제가 있습니다. 변수는 사용자가 선택한 드롭 다운에서 검색되며 아포스트로피가 포함 된 경우 아포스트로피가 게시되기 전의 부분 만 가져옵니다. I.E. "Cooper 's Hawk"를 게시하고 싶다면 "Cooper"만받습니다. 어떻게하면 전체 문자열을 게시 할 수 있도록 올바르게 이스케이프합니까? 아포스트로피가 포함 된 PHP 변수 게시

내가 무엇을 가지고 :

echo '<form method="POST" action="advanced_search2.php">'; 
$dropdown_english_name = "<select class = 'dropdown' name='english_name'>  <option>ALL</option>"; 


$query = "SELECT DISTINCT english_name FROM moth_sightings WHERE user_id ='$username'ORDER BY english_name asc"; 
       $result = mysql_query($query) or die(mysql_error()); 
       echo "<tr><td>English Name:</td>"; 
       while($row = mysql_fetch_assoc($result)) 
        { 
         $dropdown_english_name .= "\r\n<option class = 'dropdown_active' value='{$row['english_name']}'>{$row['english_name']}</option>"; 
        } 
       $dropdown_english_name .= '\r\n</select>'; 
       echo '<td>' . $dropdown_english_name .'</td></tr>'; 

다른 페이지에

$posted_value = ($_POST['english_name']); 
echo $posted_value;die; 

그래서, 위의 코드에서 명확히하기 위해, 게시 된 문자열은 "쿠퍼의 매"하지만 에코 출력은 " 쿠퍼". 미리 알려 주셔서 감사합니다. 당신은 아마 깨진 한

+0

당신은 PHP에서 그 반향 전에 이스케이프 옵션의 가치 속성을 래핑하는 작은 따옴표를 사용하지 않을 가능성이 높습니다. –

+0

선택 상자에는 "Cooper 's Hawk"옵션이 없습니다. 이것이 어떻게 생성되는지 알려주십시오. –

+0

'echo; $ posted_value; die;'는 정확히 유효한 구문이 아닙니다 ... –

답변

3

는 그 구조와

<select ...><option value='cooper's hawk'>...</option></select> 
            ^--- 

로 생성하여 형성, 당신은 cooper의 제출 된 값을 얻고, 옵션 태그는 두 개의 알 수없는 속성 shawk로 끝납니다. 그런 HTML 양식을 작성할 때주의하십시오. HAVE 데이터에 포함 된 따옴표로 인해 HTML의 구조가 근본적으로 변경되지 않도록해야합니다 (예 : 따옴표 또는 부호있는 따옴표 사용 :

values="cooper's hawk" 
values="cooper&#39;s hawk" 

모두 작동합니다. 다른 인용 스타일을 주목하십시오.

+3

안전을 위해 항상 특수 문자를 이스케이프하려면 [htmlspecialchars] (http://www.php.net/manual/en/function.htmlspecialchars.php)를 사용하십시오. –

+0

이것이 문제 일 수 있다고 생각하지만 수리 방법에 대해서는 확신이 없습니다. 어떤 힌트. 참고 이제 위의 코드에서 옵션 값의 소스를 포함했습니다. – user1658170

+2

@ user1658170 : 힌트 : htmlspecialchars를 사용하여 특수 문자를 이스케이프 처리합니다. –

1

당신은 PHP 함수를 사용할 수 addslashes($variable)

관련 문제