Как подключить PHP скрипт для отправки данных из HTML формы?
У меня запущено Node.js-приложение на сервере с установленной на нем виртуальной машиной (ОС: Linux Debian 9). В приложении есть страница для отправки заказов на email.
Сама страница (templates/views/trips.hbs):
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{#if data.trip}}{{data.trip.title}}{{/if}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="/styles/custom/trip.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script>
function showDiv () {
let order = document.getElementById("order");
if (order.style.display === 'flex') {
order.style.display = 'none';
} else {
order.style.display = 'flex';
}
}
</script>
</head>
<body>
{{#if data.trip}}
<div class="container" style="background: url('{{ cloudinaryUrl data.trip.coverImage }}') center no-repeat; background-size: cover; ">
<div class="tour">
<div class="content">
<h1 class="title">{{data.trip.title}}</h1>
<div class="info">
<p class="item">Duration: <br>{{data.trip.duration}}</p>
<p class="item">Distance: <br>{{data.trip.distance}}</p>
<p class="item">Price: <br>{{data.trip.price}}€</p>
</div>
{{#if data.trip.content.additional}}
<div class="additional">
<p>{{{data.trip.content.additional}}}</p>
</div>
{{/if}}
</div>
</div>
</div>
<div class="extended">
<p class="text">{{# if data.trip.content.extended }} {{{data.trip.content.extended}}} {{/if}}</p>
</div>
<div class="photos">
{{#each data.trip.images }}
<img src="{{cloudinaryUrl}}" class="list-photo" alt="{{../data.trip.title}} Photo">
{{/each}}
</div>
<div class="order-container">
<button class="order" onclick="showDiv()">Order</button>
<div id="order" class="order-form">
<h1 class="form-title">Order</h1>
<form
class="form-container"
id="order-trip-form"
name="simple-contact-form"
accept-charset="utf-8"
action="../../public/scripts/email.php"
method="post"
>
<div class="input-1">
<input class="input name" type="text" name="name" placeholder="Name" required="required">
<input class="input email" type="email" name="email" placeholder="Email" required="required">
<input class="input phone" type="text" name="phone" placeholder="Phone (Optional)" required="">
<input class="input number" type="number" name="number" placeholder="Number of people" required="required">
</div>
<div class="input-2">
<input class="input place" type="text" name="place" placeholder="Place to meet" required="required">
<input class="input date" type="date" name="date" placeholder="Date" required="required">
<textarea class="comments" name="comments" placeholder="Any comments" required=""></textarea>
</div>
<div class="submit-buttons">
<input type="hidden" name="_subject" id="email-subject" value="Contact Form Submission">
<input type="submit" name="submit" value="Submit" class="submit" id="submit">
</div>
</form>
</div>
</div>
{{/if}}
</body>
</html>
PHP-скрипт (public/scripts/email.php):
<?php
if($_POST["submit"]) {
$to = "[email protected]";
$subject = "Order submission";
$name = $_POST['name'];
$from = $_POST['email'];
$phone = $_POST['phone'];
$number = $_POST['number'];
$place = $_POST['place'];
$date = $_POST['date'];
$message = $_POST['comments'];
$headers = "Name: $name \r\n";
$headers .= "Email: $from \r\n";
$headers .= "Phone: $email \r\n";
$headers .= "Number of people: $number \r\n";
$headers .= "Place to meet: $place \r\n";
$headers .= "Date: $date \r\n";
mail($to,$subject,$message,$headers);
if (mail($to,$subject,$message,$headers)) {
echo 'Success';
} else {
echo 'Failure';
}
}
?>
В форме указан путь к файлу emai.php На сервере вот он:
action="../../public/scripts/email.php"
Но когда я нажимаю Submit при отправке формы я получаю ошибку 404 http://seebelarus.by/public/scripts/email.php
Sorry, no page could be found at this address
Как мне правильно указать путь к файлу?
Отрекдатировано:
Путь к файлу нужно было изменить на ../../scripts/email.php, теперь файл скачивается, при нажатии на кнопку Submit. Каким образом можно заставить файл выполняться, а не скачиваться?
