0

PHP 変数を別のページに投稿するのに問題があります。変数はユーザーが選択したドロップダウンから取得され、アポストロフィが含まれている場合は、投稿されたアポストロフィの前の部分のみを取得します。IE 「Cooper's Hawk」を投稿したい場合、「Cooper」しか受信していません。文字列全体を投稿できるように、これを適切にエスケープするにはどうすればよいですか?

これは私が持っているものです:

 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;

したがって、上記のコードから明確にするために、投稿された文字列は「cooper's hawk」ですが、エコー出力は「Cooper」です。ヒントをお寄せいただきありがとうございます。

4

2 に答える 2

3

おそらく、次のように生成してフォームを壊したでしょう。

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

その構成では、サブミットされた の値を取得しcooper、オプション タグは 2 つの不明な属性sとで終了しますhawk。そのような html フォームを作成するときは注意してください。データに埋め込まれた引用符がhtmlの構造を根本的に変更しないようにする必要があります。たとえば、混合引用符またはエンコードされた引用符を使用します。

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

どちらも機能します。異なる引用スタイルに注意してください。

于 2012-10-28T17:21:16.320 に答える
1

php関数を使用できますaddslashes($variable)

于 2017-11-10T20:03:45.533 に答える