Простая контактная форма 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. На данный момент я планирую использовать несколько человек, поэтому, если вы хотите, чтобы вы могли написать мне по электронной почте, и я создам учетную запись, чтобы вы ее использовали. До тех пор, пока не будет никакого злоупотребления, такого как отправка кучу писем - все будет хорошо!

введите описание изображения здесь