2011-05-17 17 views
1

これは私のソースコードです:HTML <a>タグ内にPHP変数を挿入するにはどうすればよいですか?

<html> 
<body> 
<?php 

$query = $_REQUEST["search"]; 

Print "<iframe src="http://www.en.wikipedia.org/wiki/$query"></iframe>'; 

?> 

</body> 
</html> 

私はとき用語で、ユーザーの種類、それが自動的にクエリのWikipediaのページにそれらをもたらす場合には、それを持っていると思います。私はここで何か間違っていることを間違いなく知っていますが、私は何が分かりません。助けてくれてありがとう!

+0

あなたはprint文であなたの引用符を修正する必要があります。 – slartibartfast

+0

エラーが構文エラーである場合は、引用符が一致しません。それ以外の場合、Wikipediaはiframeの「バストアウト」に設定されている可能性があります。 –

+0

十分に暗示されていないかどうかはわかりませんが、$ queryは私が行っているページではなく、ユーザーの検索自体からの実際のクエリであると言いたいと思います。これまでに与えられたすべての答えは、私の目指しているものではない "$ query"というタイトルのリテラルWikipediaのページに私のiframeを導いてきました。 – Matt

答えて

3
  1. あなたは出力と同じように速記エコー機能を使用してhtmlspecialchars()を使用してください。ユーザーデータをHTMLにドロップするたびにこの操作を行わないと、クロスサイトスクリプティング(XSS)エクスプロイトにつながるHTMLインジェクションの脆弱性が存在します。

  2. あなたの場合、変数をURLコンポーネントに挿入するので、HTMLエンコードする前に、rawurlencode()を使用してURLエンコードする必要があります。

  3. OK ...そうすれば、HTMLに特有のすべての文字もURLエンコーディングで安全な%に変換されるので、必要に応じてHTMLエンコーディングをスキップすることができます。

  4. PHPはテンプレート言語です。それを使用して、それと戦わないでください。 echoまたはprintのPHPブロック内から補間された文字列を使用すると、おそらく不必要に難しくなります。

はそのままリテラルコンテンツを含めると、文字列リテラル内のバックスラッシュエスケープ引用符文字を心配しないでください:

<?php 
    $query= $_REQUEST['search']; 
?> 
<iframe src="http://en.wikipedia.org/wiki/<?php echo rawurlencode($query); ?>"> 
</iframe> 
+2

私は自分の答えを削除して+1しますそれはより良い答えですので、逃げるに関して –

+0

助けてくれてありがとう! – Matt

5
にあなたの文を変更し

:あなたが引用符をエスケープするために必要な

print "<iframe src=\"http://www.en.wikipedia.org/wiki/$query\"></iframe>"; 

1

print/echo文の中に巨大なhtml文字列を含めないようにしてください。これは、引用ミスをしやすく、コードで起こっていることに従うのは難しいです。

、HTMLのテキストコンテンツや属性値に任意の変数を代わりに使用すると、多くのテンプレート言語のようなHTML内のトークンとして変数を含めることができますが、<?= $variable; ?>

<html> 
    <body> 
    <iframe src="http://www.en.wikipedia.org/wiki/<?= $_REQUEST["search"]; ?>"></iframe> 
    </body> 
</html> 
+2

'<?php echo $ _REQUEST [" search "];を使うのが良いでしょう。 ?> '短いタグがオンになっていると仮定しているので、 –

+0

+1簡略化のために – Ascherer

+0

短いタグがオフになっている場合は笑、それがオンの場合は無関係:) – Ascherer

関連する問題