$ _GET不在文本框中显示数据,其中url中的单词之间有空格

Raf*_*fee -1 php url textbox get

我有一个页面index.php,我从URL获取一个单词的值.

<a href="index.php?skills=software engineer">Software Job</a>
Run Code Online (Sandbox Code Playgroud)

在下面的代码中,它显示了完整的值$_GET,但没有显示在文本框中

和网址是

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; } ?> />
Run Code Online (Sandbox Code Playgroud)

现在,在文本框中,它不显示完整值,即software engineer在PHP代码输出中的位置

The searched skills : software engineer
Run Code Online (Sandbox Code Playgroud)

和文本框中的值: software

不知道是什么问题,需要帮助,为什么它不接受

Que*_*tin 6

必须引用其中包含空格的属性值.

value=software engineer
Run Code Online (Sandbox Code Playgroud)

...被解析为"具有值'软件'和'工程师属性'的值属性

您也容易受到XSS攻击,并且您的网址无效.

更正代码:

<a href="index.php?skills=software%20engineer">Software Job</a>
Run Code Online (Sandbox Code Playgroud)

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

请注意,您需要为HTML提供所有外部数据实例htmlspecialchars,而不仅仅是我在此示例中修复的实例.