如何将PHP Session变量值设置为input输入框的value属性值?
问题根因
输入框value属性赋值失败的核心原因是PHP代码块缺少输出语句:
- span标签能正常显示内容,是因为代码中使用
echo将$_SESSION['username']的值打印到了HTML结构中 - input标签的value属性内只写了
<?php $_SESSION['username'];?>,这段代码仅读取变量,没有执行输出操作,最终渲染出的HTML里value属性为空,自然无法显示默认值
现有代码还存在两个易触发故障的隐患:
register.php中session_start()调用位置错误,该函数必须放在所有业务逻辑、输出操作的最顶部执行,否则会触发"Headers already sent"报错,导致session写入、页面跳转功能失效- 直接将用户提交的内容输出到HTML属性中未做转义,存在XSS注入风险
修复方案
调整两个文件的代码如下:
register.php
<?php // session_start 必须放在文件最开头 session_start(); $username = $_POST['user_name']; $_SESSION['username'] = $username; header("Location: index.php"); exit(); ?>
index.php
<?php session_start(); if(!isset($_SESSION['username'])){ $_SESSION['username'] = ""; } ?> <html> <span><?php echo $_SESSION['username'];?></span> <!-- 补充echo输出,同时用htmlspecialchars转义特殊字符,避免XSS漏洞 --> <input type="text" name="user_name" value="<?php echo htmlspecialchars($_SESSION['username']);?>" required> </html>
修复后重新提交表单完成跳转,即可看到输入框正常加载session中存储的用户名作为默认值。
内容的提问来源于stack exchange,提问作者Kartik
相关产品推荐
相关产品推荐

