0

echo検索ボックスに文字列を入力しようとしています。ただし、これまでのところechos、文字列の最初の単語のみです。

require 'search.php';
$searchQuery = $_GET['searchText'] ;
echo $searchQuery;//prints "this is a test"
$search = new Search();
$search->run($searchQuery);
.
.
<input name="searchText" type="text" id="searchText" size=70 value = <?php echo $searchQuery; // prints "this"?> />
4

4 に答える 4

3

引用符を追加してみてください:

<input name="searchText" type="text" id="searchText" size="70" value="<?php echo htmlspecialchars($searchQuery); ?>"/>

Esailijaが指摘したように、で適切にエスケープすることhtmlspecialchars()はより良い解決策であり、検索が何であれ、値を正しく出力することを保証します。

于 2012-07-30T20:37:47.107 に答える
1

'value'属性の値を引用符で囲む必要があります。

<input name="searchText" type="text" id="searchText" size=70 value="<?php echo $searchQuery; // prints "this"?>" />

それ以外の場合、これはレンダリングされるものです:

<input name="searchText" type="text" id="searchText" size=70 value = this is some sentent />

これは、「value」という名前の属性の値を「this」と定義し、値のない「is」、「some」、および「sentence」という属性をさらに作成します(意味がありません)。引用は重要です!この場合は重要ではありませんが、サイズ変数も引用符で囲む必要があります。

また、GET変数を検査および/またはサニタイズしないと、HTML / Javascriptインジェクション攻撃にさらされる可能性があることに注意してください。値word onClick='doSomething();'をGET変数値として指定すると、クライアントでjavascriptを実行できます。これがWebサイトのコメントセクションの一部としてレンダリングされた場合、他のクライアントのマシンに任意のjavascriptを挿入できる可能性があります。

[編集]

htmlspecialcharsこれは、Esailijaが指摘したように使用することで実現できます。一般的なWebの脆弱性と、GET変数をサニタイズする理由の詳細については、OWASPを確認する必要があります。

于 2012-07-30T20:36:52.800 に答える
0

引用符がないために発生しているため、実際に出力しているのは

<input ... value = this is a test />

したがって、最初のトークンを「value」プロパティとして割り当てます。これを試して:

<input ... value="<?php echo $searchQuery; ?>" />
于 2012-07-30T20:35:52.840 に答える
0

これを試して:

<input name="searchText" type="text" id="searchText" size="70" value="<?php echo $searchQuery; ?>" />
于 2012-07-30T20:36:36.590 に答える