-1

我有以下代码来捕获 URL 变量并将它们推送到 RDS 数据库。当我使用此网址打开以下页面时

https://example.com.au/post.php?UniqueID=1234&usename=test&useemail=test%40test.com&usephone=1800+000+000&refid=28383

它完美地工作。但是当使用 formstack webhooks 推送数据时,只有日期字段有效。

主要区别在于它们的执行方式是 webhook 不会在浏览器上打开页面。

是否有我遗漏的东西或者是 AWS RDS 限制。

 <?php
    $userid = $_GET['UniqueID'];
    $username = $_GET['usename'];
    $useremail = $_GET['useemail'];
    $userphone = $_GET['usephone'];
    $userref = $_GET['refid'];

    $link = mysqli_connect('xxxx.xxxx.ap-southeast-2.rds.amazonaws.com', 'xxxxx', 'xxxxxx','xxxxxxx');

    // Check connection
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }

    // Check if server is alive
    if (mysqli_ping($link))
      {
      echo "Connection is ok!";
      }
    else
      {
      echo "Error: ". mysqli_error($link);
      }




    mysqli_query($link,"INSERT INTO landing_post (`useid`, `name`, `email`, `phone`, `refid`, `DateTime` ) VALUES ('$userid', '$username', '$useremail', '$userphone', '$userref', CURDATE())") 
    or die(mysqli_error($link));


      echo "Entered data successfully\n";


    mysqli_close($link);
    ?>
4

1 回答 1

1

我们的 webhook 使用 POST 而不是 GET 请求(来自我们的文档:https ://developers.formstack.com/docs/webhook-setup ):

我们通过 HTTP POST 请求以 URL 编码的表单数据或 JSON 字符串的形式发送表单提交数据,具体取决于您在 webhook 配置选项中选择的格式。

如果您希望它同时支持 get 和 post,您可以简单地将前几行代码更改为 $_REQUEST,或者如果您希望它仅处理 POST,则可以将其更改为仅 $_POST。

$userid    = $_REQUEST['UniqueID'];
$username  = $_REQUEST['usename'];
$useremail = $_REQUEST['useemail'];
$userphone = $_REQUEST['usephone'];
$userref   = $_REQUEST['refid'];

……

我也可能会提出一个好主意,围绕它包装一些逻辑,除非你想要的数据在那里,否则你不要尝试发送到 mysql:

if (!empty($_REQUEST['refid'])) {

您甚至可以在其他情况下发送消息,以发送出现问题的电子邮件或将其记录到您最喜欢的地方!

谢谢,

克里斯 P.@Formstack

于 2018-02-15T17:48:54.997 回答