-1

ページがindex.phpあり、単語のURLから値を取得しています。

<a href="index.php?skills=software engineer">Software Job</a>

以下のコードでは、からの完全な値が表示されています$_GETが、テキストボックスには表示されていません

とURLは

http://localhost/mysite/index.php?skills=software%20engineer


<?php

    if (isset($_GET['skills']) and !empty($_GET['skills'])) {
        $is_skill = 1;  // true and has value
        $skill_data = $_GET['skills'];
        echo "The searched skills : " . $skill_data; // Here its displaying full values
    } else {
        $is_skill = 0;  // false and has no value
    }

?>



<input type="text" name="textbo1" <?php if ($is_skill == 1) { echo "value=" . $skill_data; } ?> />

現在、テキストボックスでは、完全な値は表示されません。つまりsoftware engineer、phpコードの出力は次のようになります。

The searched skills : software engineer

およびテキストボックスの値:software

何が問題なのかわからない、なぜそれが受け入れられないのかについて助けが必要

4

4 に答える 4

6

スペースを含む属性値は引用符で囲む必要があります。

value=software engineer

…は、「値が「ソフトウェア」および「エンジニア属性」の値属性」として解析されます。

また、XSS攻撃に対して脆弱であり、URLが無効です。

修正されたコード:

<a href="index.php?skills=software%20engineer">Software Job</a>

<input type="text" name="textbo1" <?php 
    if ($is_skill == 1) { 
        echo 'value="' . htmlspecialchars($skill_data) . '"'; 
    } 
?> />

この例で修正したものだけでなく、外部データのすべてのインスタンスをHTMLに対して安全にする必要があることに注意してください。htmlspecialchars

于 2012-05-22T09:55:36.303 に答える
0
<input type="text" name="textbo1" value="<?php if ($is_skill == 1) { echo $skill_data; } ?>" />

htmlマークアップが正しくありません。値を引用符で囲む必要があります。が0の場合$is_skill、テキストフィールドに値はありません。

于 2012-05-22T09:57:03.170 に答える
0

属性値は引用符で囲む必要があります。文字列自体をエスケープして二重引用符で囲むには、addslashesを使用します。

これを試して:

<?php if ($is_skill == 1) { echo 'value="' . addslashes($skill_data) . '"'; } ?>
于 2012-05-22T09:57:57.787 に答える
0

見積もりが必要です

<input type="text" name="textbo1" <?php if ($is_skill == 1) { echo "value=\"" . $skill_data . "\""; } ?> />
于 2012-05-22T09:57:59.767 に答える