Что делает <form action = "?" > При отправке в себя?

Я следую за php mysql новичком в ninja:

шаблон формы ниже

<form action="?" method="post">
    <div>
        <label for="joketext">Type your joke here:</label>
        <textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
    </div>
    <div><input type="submit" value="Add"></div>
</form>

Часть контроллера PHP:

if(isset($_POST['joketext'])) //insert block
{
    try
    {                     //prepared starement
        $sql = 'INSERT INTO joke SET 
            joketext = :joketext,
            jokedate = CURDATE()';

Что означает '?' do в форме action

Ответ 1

? используется для разделения пути URL-адреса из строки запроса. В этом случае строка запроса пуста, поэтому она такая же, как если бы она была action="".

Однако есть разница. Если исходная страница была загружена с использованием URL-адреса с строкой запроса, action="" отправит форму с той же строкой запроса. Помещение явного ? в URL-адрес заменяет исходную строку запроса этим пустым.

Ответ 2

Он использует текущий URL-адрес с пустой строкой запроса как действие формы. Пустая строка запроса, которая вообще не содержит строку запроса.

Ответ 3

Таким образом, форма отправит данные в папку "?", если ваш файл содержит код PHP, вам не понадобится action="?". Вы можете удалить его, форма будет публиковать его самостоятельно и заменить isset($_POST["joketext"]) с помощью isset($_POST["submit"]) для обнаружения кнопки отправки, на которую было нажата кнопка joketext,

это будет как это
HTML:

<form method="post">
<div>
    <label for="joketext">Type your joke here:</label>
    <textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
</div>
<div><input type="submit" name="submit" value="Add"></div>

PHP:

if(isset($_POST['submit'])) //insert block
 {
  try
   {                     //prepared starement
    $sql = 'INSERT INTO joke SET 
        joketext = :joketext,
        jokedate = CURDATE()';