web-dev-qa-db-ja.com

テキスト入力値=ステートメントでPHP変数を使用する

データベースから3つの情報、1つの整数、1つの文字列、1つの日付を取得します。

それらをエコーアウトして、変数にデータが含まれていることを確認します。

その後、変数を使用してページ上の3つの入力ボックスにデータを入力すると、正しく入力されません。

以下は機能しません。

id: <input type="text" name="idtest" value=$idtest>

はい、変数を表示するには<?php var?>内にある必要があります。

そう:

id: <input type="text" name="idtest" value=<?php $idtest ?> />

フィールドには/と表示されます。

引用符をエスケープすると、

id: <input type="text" name="idtest" value=\"<?php $idtest ?>\"  />

その後、フィールドには\"\"と表示されます。

単一引用符付き

id: <input type="text" name="idtest" value='<?php $idtest ?>'  />

フィールドには何も表示されないか、空白が表示されます。

単一引用符をエスケープすると、

id: <input type="text" name="idtest" value=\'<?php $name ?>\'  />

フィールドには\'\'と表示されます。

スラッシュを使用して(これは正しくないことを知っていますが、ディスカッションから削除するために)、

id: <input type="text" name="idtest" value=/"<?php $name ?>/"  />

フィールドには/"/"と表示されます。

二重引用符、二重引用符のエスケープ、左側のみの二重引用符のエスケープなどは機能しません。

入力ボックスを文字列に設定できます。私はそれを避けることを好むので、セッション変数を使用しようとしませんでした。

ここに何が欠けていますか?

7

次のようなものを試してください:

<input type="text" name="idtest" value="<?php echo htmlspecialchars($name); ?>" />

つまり、 thirtydotが示唆した と同じですが、XSS攻撃も防止します。

<?=構文 (注を参照)。ただし、すべてのサーバーで機能するとは限りません。 (構成オプションによって有効になります。)

36
icktoofay

以下が必要です:

<input type="text" name="idtest" value="<?php echo $idtest; ?>" />

echo関数は、変数の値を実際に出力するものです。

6
thirtydot