Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 元素窗体上属性操作的错误值:必须为非空_Php_Html_W3c Validation - Fatal编程技术网

Php 元素窗体上属性操作的错误值:必须为非空

Php 元素窗体上属性操作的错误值:必须为非空,php,html,w3c-validation,Php,Html,W3c Validation,我的php文件中有一个常规表单,提交后必须回显消息。 通过将任何内容放入action=“”,我能想到的显示消息的唯一方法是将消息存储到会话中,并在页面加载时显示它(如果设置了会话) 现在一切正常,但w3c validator说我有一个错误: 元素窗体上的属性操作的错误值:必须为非空 如何在不将#或index.php放入操作字段的情况下修复此错误 编辑: 在使用W3C验证程序时,展示了以下内容: <!DOCTYPE html> <head> <title>Te

我的php文件中有一个常规表单,提交后必须回显消息。 通过将任何内容放入action=“”,我能想到的显示消息的唯一方法是将消息存储到会话中,并在页面加载时显示它(如果设置了会话)

现在一切正常,但w3c validator说我有一个错误:

元素窗体上的属性操作的错误值:必须为非空

如何在不将#或index.php放入操作字段的情况下修复此错误

编辑:


在使用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,或使用验证器的文档类型选项根据特定文档类型验证文档

  • 还有很多,但我没有包括在这里
解决方案:

您需要声明一个有效的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">