我正在尝试使用以下内容测试PHP是否可以从我的Firebase托管中运行:
(index.html的)
<form action="welcome.php" method="post">
<input type="submit">
</form>
(的welcome.php)
<?php
$to = "my@email.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: dummy@email.com";
mail($to,$subject,$txt,$headers);
?>
每次尝试此操作时,浏览器都会继续尝试打开PHP文件而不是处理它。是否在Firebase服务器托管上启用了简单的PHP来处理这样的简单表单?如果我能以这种方式工作,我将正确构建表单,包括验证等。
谢谢,
答案 0 :(得分:23)
来自Firebase Hosting site(强调我的):
我们通过安全的SSL连接提供您所有静态内容(html,js,图片等),并在CDN上提供。
Firebase Hosting用于托管静态资产。 Firebase目前不提供在Firebase服务器上执行代码的任何方法。
更新(2018-08-08):您可以现在运行Node.js / JavaScript代码bu connecting your Firebase Hosting project to Cloud Functions + Firebase Hosting。但是仍然不允许你运行PHP代码。
答案 1 :(得分:3)
根据最新更新,firebase已开始使用云功能
Firebase的云端功能可让您运行移动后端代码,自动响应Firebase功能和HTTPS请求触发的事件。您的代码存储在Google的云中,并在托管环境中运行。无需管理和扩展自己的服务器。
答案 2 :(得分:2)
没有PHP
但nodeJS
可用于服务器端脚本...
Google Cloud Functions是用JavaScript编写的,然后执行 Node.js运行时。
Mandrill还支持nodeJS,其功能为Webhooks API。 因此,人们可以要求这些“云”功能中的节点模块&#34;和&#34; web hooks&#34; ...然后用HTML表单发布到它们上面。
Firebase控制台上需要定义一些HTTP云功能,以便让他们订阅,取消订阅和管理他们的订阅。甚至可以使用云函数为输入表单生成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包装器): / p>
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 on Websites解释了这一点,而云功能有一个本地Emulator。
答案 3 :(得分:1)
你可以玩其中任何一个:Angular,Ember,Knockout,React, 节点JS。您可以使用几乎任何Javascript技术实现PHP代码的相同功能 - 只是没有动态语言。另一种方法是使用Jot Forms等在线表单提供程序。您可以使用在线表单帐户创建表单并为其设置样式,然后只需将其添加到您的站点。然后,当用户发布它将发布到表单。因此,您不仅可以为当前站点提供集中式环境,还可以为其他任何其他站点提供集中式环境。您可以创建一个Web服务并在那里发布值 - 然后随意执行任何操作:将它们保存到数据库中...其他词有另一个服务器来处理所有这些事情,因此您可以从Firebase托管站点调用它。希望有所帮助
PS:我目前正在构建一个产品,它是在Firebase网站上使用的在线表单的简化版本。我打算现在有几个人使用,所以如果你愿意,你可以给我发电子邮件,我会创建一个帐户供你使用。只要发送一堆电子邮件没有滥用 - 你会没事的!