表单文本框数据在没有验证的情况下被清除

时间:2014-01-28 05:21:40

标签: php

注意文本框内注意:注意:未定义的索引:第324行的D:\ xampp \ htdocs \ jobseeker \ resumejobseeker.php中的课程

<label>Other Course/Diploma: </label>
<input type="text" value="<?php echo htmlentities($_POST['course']); ?>" name="course"/>

2 个答案:

答案 0 :(得分:1)

使用此:

<?php echo isset($_POST['course']) ? htmlentities($_POST['course']) : ''; ?>

原因:

实际上,当第一次加载表单时,页面没有post request,因此$_POST['course']未定义;所以你需要在文本框的value中留空(在这里使用三元运算符)。

所以完整的代码如下:

<label>Other Course/Diploma: </label>
<input type="text" value="<?php echo isset($_POST['course']) ? htmlentities($_POST['course']) : ''; ?>" name="course"/>

答案 1 :(得分:0)

来自PHP Manual的广泛智慧:

  

依赖于的默认值   未初始化的变量是有问题的   在包含一个文件的情况下   另一个使用相同的变量   名称。它也是一个主要security risk   已启用register_globals。   如果发出E_NOTICE级别错误   与未初始化的人合作   变量,但不是在的情况下   将元素附加到   未初始化的数组。 isset()语言   构造可用于检测是否   变量已经初始化。

一些解释:

虽然PHP不需要变量声明,但它确实推荐它,以避免一些安全漏洞或错误,人们会忘记为稍后将在脚本中使用的变量赋值。 PHP在未声明变量的情况下所做的是发出一个非常低级别的错误,E_NOTICE,默认情况下甚至没有报告,但在开发过程中是手动advises to allow

处理问题的方法:

  1. 推荐:声明您的变量。或者在引用它们之前使用isset()检查它们是否被声明。

  2. 为E_NOTICE设置custom error handler并将消息重定向到标准输出(可能是日志文件)。 set_error_handler('myHandlerForMinorErrors', E_NOTICE | E_STRICT)

  3. 禁止报告E_NOTICE。只排除E_NOTICE的快速方法是error_reporting( error_reporting() & ~E_NOTICE )

  4. 使用@ operator

  5. 取消错误

    注意:强烈建议只执行点 1。

    相关: