如何防止PHP提交表单后清空字段?附XHTML标签疑问
问题解答
1. 提交表单后保留PHP表单字段内容
不需要JS的话,直接在input标签的value属性中填充提交过来的$_POST数据即可,同时为了安全要对内容进行转义处理,避免XSS风险。
修改后的代码示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <title>create</title> </head> <body> <form method="post"> <label for="sometext"></label> <input type="text" id="sometext" name="sometext" value="<?php echo isset($_POST['sometext']) ? htmlspecialchars($_POST['sometext']) : ''; ?>" /> <button name="save">Save File</button> </form> <?php if(isset($_POST['save'])) { $text = $_POST['sometext']; $file=fopen("myfile.txt", "w"); fwrite($file, $text); fclose($file); } ?> </body> </html>
说明:
- 用
isset($_POST['sometext'])判断是否有提交的数据,有就输出转义后的内容,没有则留空 htmlspecialchars()会把特殊字符转成HTML实体,防止用户输入的恶意代码被执行- 注意原代码中input的
type写为sometext是错误的,已修正为标准的text类型
2. input标签末尾斜杠的作用
这个斜杠是XHTML的语法要求:
- XHTML是遵循XML规则的HTML版本,XML要求所有标签必须闭合。对于
<input>、<img>、<br>这类没有成对闭合标签的自闭合元素,必须用/>来表示标签闭合。 - 在HTML5标准中,这个斜杠是可选的,浏览器会自动识别这类自闭合标签,不加斜杠也能正常渲染,但保留斜杠可以让代码兼容XHTML的解析环境。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

