我有一个页面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
不知道问题是什么,需要帮助,为什么它不接受
包含
空格的属性值必须用引号括起来。
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 . "'""; } ?> />