Php 元素窗体上属性操作的错误值:必须为非空
我的php文件中有一个常规表单,提交后必须回显消息。 通过将任何内容放入action=“”,我能想到的显示消息的唯一方法是将消息存储到会话中,并在页面加载时显示它(如果设置了会话) 现在一切正常,但w3c validator说我有一个错误: 元素窗体上的属性操作的错误值:必须为非空 如何在不将#或index.php放入操作字段的情况下修复此错误 编辑:Php 元素窗体上属性操作的错误值:必须为非空,php,html,w3c-validation,Php,Html,W3c Validation,我的php文件中有一个常规表单,提交后必须回显消息。 通过将任何内容放入action=“”,我能想到的显示消息的唯一方法是将消息存储到会话中,并在页面加载时显示它(如果设置了会话) 现在一切正常,但w3c validator说我有一个错误: 元素窗体上的属性操作的错误值:必须为非空 如何在不将#或index.php放入操作字段的情况下修复此错误 编辑: 在使用W3C验证程序时,展示了以下内容: <!DOCTYPE html> <head> <title>Te
在使用W3C验证程序时,展示了以下内容:
<!DOCTYPE html>
<head>
<title>Test page</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<input type="email" name="email" placeholder="Enter your email">
<input type="submit" name="submit" value="SEND">
</form>
</body>
</html>
<?php
if(isset($_POST['submit']) && isset($_POST['email'])){
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false){
echo 'This isn\'t a valid email';
}else{
echo 'Great';
}
}
?>
第1行第1列:无单据类型声明;将在没有验证的情况下进行分析
无法确定文档类型,因为该文档没有正确的DOCTYPE声明。文档看起来不像HTML,因此无法执行自动回退,并且仅根据基本标记语法检查文档
从我们的常见问题中了解如何向文档添加doctype,或使用验证器的文档类型选项根据特定文档类型验证文档
- 还有很多,但我没有包括在这里
标记,因为如果省略,这也会产生错误
然后使用action=”“
,如我在评论中所述
您的代码现在将通过以下方式进行验证:
<!DOCTYPE html>
<head>
<title>Test page</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<input type="email" name="email" placeholder="Enter your email">
<input type="submit" name="submit" value="SEND">
</form>
</body>
</html>
<?php
if(isset($_POST['submit']) && isset($_POST['email'])){
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false){
echo 'This isn\'t a valid email';
}else{
echo 'Great';
}
}
?>
测试页
W3CHTML检查器(验证器)的维护者。如果您的目标只是让检查器不发出该错误,那么一种方法是继续将#
作为HTML源代码中action
属性的值,然后使用JavaScript将其删除,如下所示:
document.querySelector(“form”).setAttribute(“action”,“”)
我试过
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
对我来说,解决方案是删除操作的空属性。表单仍然有效,验证错误也消失了。请注意>>您没有使用您使用的是什么。你能发布更多的代码吗?在同一页上,您的目标代码在哪里?@Fred ii-是的,我正在使用action=“”,错误显示不能为空。编辑我的问题。当操作将用户带到“新”位置时,回音“great”不会显示place@BragDeal我对你的问题投了更高的票,不是因为我给出的答案(编辑:你现在未被接受),而是因为你发布了一个问题(老实说),我不知道W3C验证程序在action=“
上出错。我觉得这是对Stack档案的一个很好的补充。我已经有了。唯一的问题是回声“很棒”;提交后未显示。页面刚刚刷新,就这样all@BragDeal:您正在询问:一切都按现在的方式正常工作,但w3c validator说我有一个错误:
是的,如果我按照您的建议去做,错误就会消失,但“一切”都不会再正常工作,因为回显消息看起来不像我想要的那样。我想将消息存储到会话中是唯一的解决方法error@BragDeal对我来说很好。文件的扩展名是.php
?运行本地机器或托管?@BragDeal我发布了一个关于您最初发布内容的答案。我得说我回答了原来的问题。如果你有关于div的其他问题,那么你应该发布一个新的问题。
<form action="<?=htmlspecialchars($_SERVER["REQUEST_URI"]);?>" method="post">