Почему POST заново отправляется после обновления страницы?

dredder

Кэп
У меня есть подобный фрагмент кода:

PHP:
if (isset($_POST['id_product']) && isset($_POST['name']) && isset($_POST['phone'])){

    include "libmail.php";

    $site_url = $_SERVER['SERVER_NAME'];
    $phone = "Телефон: " . $_POST['phone'];
    $name = "Имя: " . $_POST['name'];

    $sql = 'CALL catalog_get_product(:id_product)';
    $params = array (':id_product' => $_POST['id_product']);

    $productData = Model::GetAll($sql, $params);

    $message = 'Заявка на товар с сайта '.$site_url.' <br>' . $phone . ' ' . $name;

    $m = new Mail("utf-8");
    $m->To( "[email protected]" );

    $m->Subject( 'Заявка на товар с сайта' . $site_url );
    $m->Body( $message, "html" );
    $m->Send();

    var_dump($_POST);
}
Данные отправляются методом пост, письмо приходит, всё хорошо. Но когда я обновляю страницу с формой, данные методом POST снова отправляться и так каждый раз.

Я знаю, что в этом случае нужно сделать перенаправление на другую страницу:
PHP:
header('Location: http://www.example.com/');
exit;
Но почему без него POST отправляется снова после обновления страницы? Он как-то прикрепляются к URL? Или сохраняется в браузере?
 

AnrDaemon

Продвинутый новичок
Потому что ты не понимаешь, как работает протокол.
HTTP - это протокол обмена сообщениями по схеме "запрос-ответ".
Это ваше "F5" - это не магия, это команда браузеру повторить последний запрос.
А у тебя последним запросом был, извини, POST…
 
Сверху