0

を使用して、次の TEXT 値を MySQL に挿入しています。

$groupname = addslashes($_POST['グループ名'];

私が使用しているMysqlから値を取得するとき

$name = $row['グループ名'];

エコー $name;

そして、これは「Mr. Davis's Group」として正しく表示されます

しかし、この値が次のようにフォームに追加されると

次に、値を別のページに渡し、次のように取得します

$name = $_POST['グループ名']; エコー $name;

アポストロフィの前のすべてを保持する「Mr. Davis」として表示されます。

??理由はわかりませんが、stripslashes($_POST['groupname']; を追加しようとしましたが、同じことが起こりました

4

2 に答える 2

3
<input name='groupname' type='hidden' value='$groupname' />

生成します:

<input name='groupname' type='hidden' value='Mr Davis's Group' />
                                                     ^----

指定された場所で、ブラウザのパーサーは の「終わり」を認識しvalue=、その後に不明な属性sと壊れた属性が続きますGroup '

このタイプのテキストをフォームに埋め込むには、 を使用する必要があります。これによりhtmlspecialchars()、HTML メタ文字 ( <>'") が対応する文字エンティティに変換されるため、フォームに安全に埋め込むことができます。

addslashes()データベースに何かを「安全に」追加する非推奨の方法です。HTML に安全に埋め込むことはできません。

于 2011-05-24T17:21:42.027 に答える
1

入力 Web ページのテキスト エンコーディングを確認してください。db charset と一致させます - utf-8 を使用してください。

于 2013-01-06T04:45:08.330 に答える