Плохое значение для действия атрибута в форме элемента: должно быть непустым

У меня есть обычная форма в моем php-файле, после того, как она отправлена, она должна эхо-сообщения. Помещая что-либо в action = "", единственный способ, которым я могу думать о отображении сообщения, – это сохранить его в сеансе и отобразить его, когда страница загружается, если есть набор сеансов.

Все работает отлично, как сейчас, но w3c validator говорит, что у меня есть ошибка:

Плохое значение для действия атрибута для элемента: должно быть не пусто.

Как я могу исправить эту ошибку, не помещая # или index.php в поле действия?

РЕДАКТИРОВАТЬ:

<form action="" method="post"> <input type="email" name="email" placeholder="Enter your email"> <input type="submit" name="submit" value="SEND"> </form> <?php if(isset($_POST['submit']) && isset($_POST['email'])){ if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false){ echo 'This isn\'ta valid email'; }else{ echo 'Great'; } } ?> 

    Здесь хранитель W3C HTML Checker (валидатор). Если ваша цель состоит в том, чтобы заставить контрольную панель не испускать эту ошибку, один из способов сделать это – пойти и поставить # в качестве значения для атрибута action в свой HTML-код, но затем удалить его с помощью JavaScript, например:

     <form action="#" method="post"> <script>document.querySelector("form").setAttribute("action", "")</script> <input type="email" name="email" placeholder="Enter your email"> <input type="submit" name="submit" value="SEND"> </form> 

    При использовании валидатора W3C https://validator.w3.org/ было представлено следующее:

    Строка 1, столбец 1: объявление типа документа; будет анализироваться без проверки

    Тип документа не может быть определен, поскольку документ не содержит правильной декларации DOCTYPE. Документ не похож на HTML, поэтому автоматический откат не может быть выполнен, и документ проверяется только на синтаксис базовой разметки.

    Узнайте, как добавить doctype в документ из нашего FAQ или использовать параметр Тип документа валидатора для проверки вашего документа на определенный тип документа.

    • Наряду с еще несколькими, но я не включил их здесь.

    Решение:

    Вам нужно объявить допустимые теги doctype и <head><title> , так как это также приведет к ошибкам, если они опущены.

    Затем используйте action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" Как я сказал в комментариях.

    Теперь ваш код будет проверяться следующим образом:

     <!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\'ta valid email'; }else{ echo 'Great'; } } ?> 
    • Sidenote: у вас также может быть PHP сверху, оба метода проверены правильно.

    Использование action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" следующее / подобное в источнике HTML:

    <form action="/folder/file.php" method="post">

    В то время как опустив это, вы создали action="" который, как представляется, валидатор W3 нашел недействительным и ищет действительный файл для действия формы.


    Редактировать:

    В свете недавно принятого ответа (мое не принято), обратите внимание, что ваш код не будет работать должным образом, если Javascript будет отключен.