У меня вылетает сайт при введении слова в форму на PHP

Я новичок в программировании, только начал изучать PHP и столкнулся с проблемой вылетающего сайта. Мол, должен сделать взятие данных из формы html методом get, но при введении данных и нажатии кнопки "отправить", меня перекидывает со страницы сайта на вот эту:введите сюда описание изображения

Вот программный код:

<?php 
    print_r($_GET);
    echo $_GET ['name'];
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

    <form action="/" method="get">
        <input type="text" name="name" placeholder="Ваше имя">
        <input type="submit" value="Отправить">

    </form>
    
</body>
</html>

Я уже пытался поменять местами части html, но результат остался прежним. Убирал / из action и все заработало, но мне кажется это не решение проблемы, пока я не понимаю саму суть происходящего.


Ответы (1 шт):

Автор решения: Vladislav Tikhomirov

Атрибут action указывает обработчик, к которому следует обращаться при обработке формы. Подробнее

В вашем случае, у вас форма расположена прямо в файле-обработчике (ваш php-сценарий). Так как у вас в action стоит /, то форма посылает get запрос к корню сайта, что видно в адресной строке на первом скриншоте.

Чтобы такого не происходило, можно

  • убрать / или вообще атрибут action(т.к. обработчик находится внутри файла с формой, смысла принудительно его указывать нет, потому что при пустом/отсутствующем action данные отправляются на текущую страницу. Однако если обработчик будет в другом файле - способ не подойдёт)
  • указать путь к файлу-обработчику (в вашем случае - указать путь к php-файлу относительно корня сайта)
→ Ссылка