Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在何处隐藏PHP以防止触发电子邮件_Php_Email_Twilio_Integration - Fatal编程技术网

在何处隐藏PHP以防止触发电子邮件

在何处隐藏PHP以防止触发电子邮件,php,email,twilio,integration,Php,Email,Twilio,Integration,我目前正在使用Twilio进行短信到电子邮件的集成 Twilio提供的代码需要存在于公共URL上,以便集成工作。没有理由任何人需要访问此URL 不幸的是,存在于公共URL上的代码意味着随机网络爬虫可以并且确实加载它所在的页面,从而触发发送空白电子邮件。至少我认为这就是为什么 我不能使用if…else来查看是否有任何字段是空的,因为集成会自动发送“body”和“message”之类的样板标签(因此,字段永远不会看起来是空的) 所以,我想知道在我的文件结构中是否有某个地方可以隐藏这个PHP,这样集成

我目前正在使用Twilio进行短信到电子邮件的集成

Twilio提供的代码需要存在于公共URL上,以便集成工作。没有理由任何人需要访问此URL

不幸的是,存在于公共URL上的代码意味着随机网络爬虫可以并且确实加载它所在的页面,从而触发发送空白电子邮件。至少我认为这就是为什么

我不能使用if…else来查看是否有任何字段是空的,因为集成会自动发送“body”和“message”之类的样板标签(因此,字段永远不会看起来是空的)

所以,我想知道在我的文件结构中是否有某个地方可以隐藏这个PHP,这样集成就可以工作了,但是对URL的随机ping不会触发电子邮件


编辑:该php当前作为我的index.php文件存在于/usr/share/nginx/html文件夹中。我不是很有经验,我花了很多时间才找到一个地方把它放在它真正成功运行的地方…

如果可能的话,你应该将文件存储在webroot之外

否则


使用.htaccess来拒绝所有Twilio开发者的传道者

你有几个选择

你可以。然后,更改Twilio号码的webhook URL,以在URL中包含用户名和密码。比如:

https://username:password@example.com/index.php
或者,您可以在代码中使用
X-Twilio-Signature
标题。这看起来有点像这样:

<?php
// NOTE: This example uses the next generation Twilio helper library - for more
require_once '/path/to/vendor/autoload.php';

use Twilio\Security\RequestValidator;

// Your auth token from twilio.com/console
$token = "YOUR_AUTH_TOKEN";

$signature = $_SERVER["HTTP_X_TWILIO_SIGNATURE"];

$validator = new RequestValidator($token);

$url = $_SERVER['SCRIPT_URI'];
$postVars = $_POST

if ($validator->validate($signature, $url, $postVars)) {
  // This is from Twilio!
  // The rest of your code to send the email goes here.
} else {
  // This is not from Twilio. Return a 403 response
  header('HTTP/1.1 403 Forbidden');
  exit;
}

如果您将名称
index.php
更改为类似于
7eead553-5a1d-4797-9234-a7eda26369bb.php
-这样行吗?使用robots.txt?感谢您的建议。重命名它会破坏集成(不确定原因)。我添加了一个robots.txt文件,但我想我必须看看在接下来的24小时内是否有效。显然,当我手动重新加载页面时,仍然会触发电子邮件。据我所知,要通过公共URL访问php,它需要存在于webroot中,这可能解释了为什么当我将其置于webroot之外时,它无法真正工作。你能详细说明我如何使用.htaccess吗?看起来我需要一个特定的IP来允许,我想我需要从Twilio那里获得这个IP?参见philnash的答案