Простая контактная форма PHP с хостингом Firebase
Я пытаюсь проверить, работает ли PHP с моего хоста Firebase, используя следующее:
(index.html)
<form action="welcome.php" method="post">
<input type="submit">
</form>
(welcome.php)
<?php
$to = "[email protected]";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: [email protected]";
mail($to,$subject,$txt,$headers);
?>
Каждый раз, когда я пытаюсь это сделать, браузер продолжает пытаться открыть файл PHP, а не обрабатывать его. Является ли простой PHP включенным на сервере Firebase хостингом для обработки простой формы? Если я смогу заставить его работать таким образом, я правильно построю форму, включая проверку и т.д.
Спасибо,
Ответы
Ответ 1
С сайта Firebase Hosting (выделено мое):
Мы доставляем весь ваш статический контент (html, js, images и т.д.) По защищенному SSL-соединению и предоставляем его на CDN.
Firebase Hosting предназначен для размещения статических ресурсов. В настоящее время Firebase не предлагает никакого способа выполнения вашего кода на серверах Firebase.
Обновление (2018-08-08): теперь вы можете запускать код Node.js/JavaScript, но подключив ваш проект Firebase Hosting к Cloud Functions + Firebase Hosting. Но это все равно не позволит вам запускать код PHP.
Ответ 2
В соответствии с последним обновлением firebase начала использовать Облачные функции
Облачные функции для Firebase позволяют запускать код мобильного бэкэнд, который автоматически реагирует на события, вызванные функциями Firebase и HTTPS. Ваш код хранится в облаке Google и работает в управляемой среде. Нет необходимости управлять и масштабировать собственные серверы.
Подробнее: https://firebase.google.com/docs/functions/
Ответ 3
Для серверных сценариев нет PHP
, но nodeJS
...
Облачные функции Google написаны на JavaScript и выполняются в Node.js.
Mandrill также поддерживает nodeJS и содержит Webhooks API.
Поэтому можно потребовать, чтобы модуль node внутри этих "облачных функций" и "веб-крючков"... и затем отправлял с ними HTML-форму.
Там должно быть несколько HTTP облачных функций, определенных на консоли Firebase, чтобы они могли подписаться, отменить подписку и управлять подписками. Можно даже создать разметку HTML для входной формы с облачными функциями, а затем прикрепить ее. Например, не проверены и не включены никакие гарантии:
const functions = require('firebase-functions');
const mandrill = require('mandrill-api/mandrill');
var client = new mandrill.Mandrill('YOUR_API_KEY');
/* TODO: add the user on Firebase, respond through the API */
exports.user_add = functions.https.onRequest((req, res) => {
});
/* TODO: change subscription settings on Firebase, respond through the API */
exports.user_edit = functions.https.onRequest((req, res) => {
});
/* TODO: remove the user on Firebase, respond through the API */
exports.user_remove = functions.https.onRequest((req, res) => {
});
/* optional: generate the HTML markup of the form, send HTTP response */
exports.markup = functions.https.onRequest((req, res) => {
});
Можно связать события Firebase Auth, чтобы сохранить две пользовательские базы данных в синхронной (это не требуется для Mandrill, но требуется для MailChimp - независимо от того, использует ли PHP или nodeJS-обертку):
exports.on_user_create = functions.auth.user().onCreate(event => {
const user = event.data;
});
exports.on_user_delete = functions.auth.user().onDelete(event => {
const user = event.data;
});
Firebase на веб-сайтах объясняет это, в то время как есть локальный Emulator для функций облака.
Ответ 4
Вы можете играть с любым из них: Angular, Ember, Knockout, React,
Node JS. То же самое, что вы, PHP-код, вы можете совершить с практически любыми технологиями Javascript - просто нет динамического языка. Другой способ сделать это - использовать онлайн-провайдеры, такие как Jot Forms или другие. Вы можете создать и стилизовать форму с помощью онлайн-формы, а затем просто добавить ее на свой сайт. Затем, когда пользователь отправит сообщение, он отправит его в форму. В результате у вас есть централизованная среда не только для вашего текущего сайта, но и для любых других людей в будущем. Вы можете создать веб-сервис и опубликовать значения там - тогда сделайте все, что хотите, с ними: сохраните их в базе данных... В других словах есть другой сервер, который обрабатывает все эти вещи, поэтому вы можете просто вызвать его с размещенных сайтов Firebase. Надеюсь, что поможет
PS: В настоящее время я создаю продукт, который является упрощенной версией онлайн-форм, которые будут использоваться на сайтах Firebase. На данный момент я планирую использовать несколько человек, поэтому, если вы хотите, чтобы вы могли написать мне по электронной почте, и я создам учетную запись, чтобы вы ее использовали. До тех пор, пока не будет никакого злоупотребления, такого как отправка кучу писем - все будет хорошо!
![введите описание изображения здесь]()