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


$_GET not displaying data in textbox with space between word in url

我有一个页面index.php,我正在从 url 获取一个单词的值。

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

在下面的代码中,它显示 $_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; } ?> />

现在,在文本框中,它不显示完整值,即software engineerPHP 代码输出为

The searched skills : software engineer

和文本框中的值:software

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

包含

空格的属性值必须用引号括起来。

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) . '"'; 
    } 
?> />

请注意,您需要使用 htmlspecialchars 使外部数据的所有实例对 HTML 安全,而不仅仅是我在此示例中修复的实例。

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

您的 html 标记不正确。您必须将值括在引号中。如果$is_skill为 0,则文本字段中将没有值。

属性值需要用引号引起来。在字符串本身中使用添加斜杠进行转义和双引号。

试试这个:

<?php if ($is_skill == 1) { echo 'value="' . addslashes($skill_data) . '"'; } ?>

你需要报价

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