2012-10-28 62 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

最有可能你使用單引號來包裝選項value屬性,而不是附和那些在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)