【发布时间】:2011-07-31 04:53:02
【问题描述】:
这对某人来说太容易了。我刚刚花了 6 个小时阅读,我现在觉得自己很愚蠢,但是嘿......我正在学习,所以我想 - 我会问你们!我在这里看到了一些关于其他事情的优秀例子,所以我想......为什么不问。我真正想要的只是有点简单,我敢肯定......我有一个表格,有人填写数据,我通过 JS 检查它的有效性,我检查 PHP 的有效性,我保护 SQL。这一切都很好。不能正常工作的是......如果 PHP 失败并且页面重新加载......我在 HTML 中有以下内容,我相信你们中的一些人很熟悉......
<textarea name="comments" maxlength="1024" rows="6" cols="45" wrap="VIRTUAL" id="field_comments" onblur="CheckField(name, 1, 0)"><?php echo $_POST['comments']; ?></textarea>
PHP 会通过 echo 输出之前在表单中输入的任何内容...实际上很简单。它工作得很好,因为我的 JS 和 PHP 用来剥离任何不是 a-zA-Z0-9 等的东西。我的朋友说我应该允许输入几乎任何东西并逃脱它。好的,没问题。我转义了它,但是当我输入单引号或双引号(测试将奇怪的东西放入字段中)并重新绘制它时 - 它保留了转义的东西。例如..我输入
“戴夫”,我回来了
\'戴夫\'
如果我再次点击提交......我得到......
\\'Dave\\' 等等...
我可以在不编写自己的自定义函数的情况下将其恢复为表单字段中的“Dave”吗?还是我必须这样做?
如果您想查看我制作的示例,我有一个示例测试页面,显示我正在修改的内容。
http://newmainpcs.perrycs.com/testForm.php
任何帮助都会很棒!我尝试对它们进行重新编码...我的主要网站是 UTF-8 - 该示例并没有真正显示我的主要网站,但我编写了这个小 testForm.php 来尝试解决这个问题!哈哈。我可以用 HTML 或 PHP 来做。 PHP 可能会更容易,因为这就是实际 REAL 验证的核心,因为可以关闭 JS。如果你愿意,我可以给你一些代码片段。但是,我相信你会明白我想说的话。
感谢您的帮助!
大卫·佩里 佩里CS 佩里计算机服务 (曾经是一个了不起的汇编语言程序员……这就是你 17 年以上不编程时会发生的事情)。哈哈。坚持简单的事情。
【问题讨论】:
-
最好使用
<?php echo isset($_POST['comments']) ? $_POST['comments'] : ''; ?>,否则当该字段不存在时您会收到警告。 -
取决于错误报告设置的级别
-
@Sam,我的意见和良好做法是使用 E_ALL 作为您的错误报告级别,并将所有错误(甚至通知!)视为致命错误。
-
嘿,我设置了 E_ALL。是的,我在开始时注意到 html 部分中出现疯狂的未定义错误,因为它没有采用触及它们的路径。所以我写了一个快速的小函数,它只是“接触”所有表单字段值并将它们设置为“”,因为有人在表单上的主要原因是填写表单!哈哈。我确实喜欢您将 isset 直接插入回声中的示例...我会记下在较小的表单上这样做的方式!这将为我节省一个功能!谢谢!我喜欢三元运算符:)
标签: php forms html-entities html-encode