Контактная форма HTML / PHP не работает на Heroku

Я создал контактную форму на своем веб-сайте, которая работала с использованием сервера xampp, но не работает на Heroku.

это HTML:

<form action = "../php/contact.php" method = "post">

            <div class = "form-group">
                <label>Name</label>   
                <input type = "text" name = "name" class = "form-control frame" required>
            </div>

            <div class = "form-group">
                <label>email</label>
                <input type = "email" name = "email" class = "form-control frame" required>
            </div>

            <br>

            <div class = "form-group">
                <label>Message</label>    
                <textarea name = "message" id = "message" cols = "" rows = "" class = "form-control frame"></textarea>
            </div>

            <br>

            <button class = "btn btn-outline-secondary" type = "submit" name = "submit">Send</button>
</form>

А это PHP:

<?php
$name = $_POST['name'];
$visitorEmail = $_POST['email'];
$message = $_POST['message'];

$emailFrom = 'haizler.co.il';
$emailSubject = "New Form Submission";
$emailBody = "User Name: $name.\n".
                "User Email: $visitorEmail.\n".
                "User Message: $message.\n";

$to = "[email protected]";
$headers = "From: $emailFrom \r\n";
$headers .= "Replay-To: $visitorEmail \r\n";
mail($to,$emailSubject,$emailBody,$headers);
header("Location: contact.html");
?>

При заполнении детали и нажатии кнопки «Отправить» я получаю сообщение «Не удается выполнить POST /php/contact.php». Я попытался изменить адрес php в действии формы, а также попытался поместить файл php в ту же папку, где есть файл html, но это не сработало.

Этот код работал с использованием xampp (после изменения определений в файле xampp php.ini).

Заранее спасибо!

Вы проверили правильность пути, по которому вы публикуете сообщение?

Remote 25.07.2018 16:43

снова относительные ссылки. всегда плохая идея. позвольте угадаю, ваш адрес XAMPP похож на http://localhost/some-folder/index.php? Где у героку только http://example.com/index.php?

delboy1978uk 25.07.2018 16:46

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

Dennis 25.07.2018 17:05

@ delboy1978uk в XAMPP Я не дохожу до части php, потому что, когда я нажимаю «отправить», он просто отправляет сообщение и обновляет страницу. Адрес контактной формы в основном локальный / некоторая папка1 / некоторая папка2 / contact.html, тогда как адрес в Heroku - example.com/view/contact.html. При нажатии на «отправить» в Heroku я получаю «Cannot POST /php/contact.php» и адрес example.com/php/contact.php

Yarden A 25.07.2018 17:15

@mattfryercom я проверил, а также как это может быть неправильно, если он работает с XAMPP?

Yarden A 25.07.2018 17:17

попробуйте добавить PHP в начало файла и добавить action = "". Это отправит файл самому себе, и вам не придется беспокоиться о пути. Если это не сработает, мы знаем, что проблема не в пути. Вам нужно будет добавить условие в начале PHP, например if ($_POST['submit']) { /* add the rest of the PHP here */ }

Remote 25.07.2018 17:22

@mattfryercom сделал то, что вы сказали, но все еще не работает

Yarden A 25.07.2018 17:38

состояние рабочее? просто проверьте инструкцию if, повторив что-нибудь, если форма отправляется. Если это сработает, поместите свой PHP в этот условный оператор. Упростите проблему, просто посмотрите, сможете ли вы получить форму для отправки на ту же страницу и повторить что-то внутри условного оператора, если форма отправляется. Может попробовать if (!empty($_POST['submit'])) { echo 'form submitted'; }. Также попробуйте добавить значение button, например <button value = "submit">submit</button>, очевидно, сохраните и другие атрибуты.

Remote 25.07.2018 17:41

Чтобы уточнить, я говорю, что если вы отправляете форму на ту же страницу, вам нужно изменить расширение файла .html на .php и добавить PHP в верхнюю часть файла HTML.

Remote 25.07.2018 17:49

Что произойдет, если у вас есть HTML-код, отправляемый на ту же страницу с action = "", и в файле нет PHP? так что просто проверьте, отправляется ли HTML-форма.

Remote 25.07.2018 17:52

Когда action = "" я по-прежнему получаю сообщение "Невозможно выполнить POST /view/contact.html"

Yarden A 25.07.2018 18:31

@YardenA Попробуйте просто это, и ничего больше на странице, чтобы максимально упростить проблему, если это не сработает, вам, вероятно, придется что-то обновить в php.ini: <form action = "" method = "post"><button type = "submit">Submit</button></form> - Надеюсь, это поможет, дайте мне знать результат .

Remote 26.07.2018 08:44

@mattfryercom спасибо за помощь, но я думаю, что буду искать альтернативу этой конкретной форме ... Я не думаю, что у меня есть доступ к файлу php.ini на Heroku, и я не могу найти ничего об этой проблеме в целом в гугле.

Yarden A 26.07.2018 09:35

@YardenA Нет проблем, это может помочь: devcenter.heroku.com/articles/…

Remote 26.07.2018 09:37

Исправьте свой XAMPP, а не heroku. Настройте виртуальный хост в дополнительной папке apache conf. затем настройте код, чтобы он снова работал локально, и когда вы его развернете, он должен быть dfine

delboy1978uk 26.07.2018 14:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
15
409
0

Другие вопросы по теме