-1

我有一个页面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 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 标记不正确。您必须用引号将您的值括起来。如果$is_skill为 0,则文本字段中将没有值。

于 2012-05-22T09:57:03.170 回答
0

您的属性值需要用引号引起来。使用 addlashes 在字符串本身中转义和双引号。

尝试这个:

<?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 回答