2

当潜在客户在其网页上提交查询表单时,我正在使用第 3 方短信网关向客户发送短信。我将 Aweber 用于自动回复系统,它发送一个包含潜在客户数据的查询字符串,我收集这些数据并将其发送给客户,同时向他的手机发送一条短信。

我有一切工作。但是,我需要防止客户端在同一会话中接收来自同一潜在客户的多条短信,这是由于刷新或点击浏览器上的 BACK 按钮引起的。

这是我正在使用的代码,它正在工作,除了这个问题:

   $name      = $_GET['name'];
   $email     = $_GET['email'];
   $address   = $_GET['address'];
   $phone     = $_GET['phone'];
   $phone_sms = preg_replace('/^1|\D/', "", $phone);

   $message   = "$name, $email, just submitted an inquiry for $address";

   $from      = "1212121212";   // Ph# txt message is received from
   $to        = "$phone_sms";   // Ph# txt message is sent to

   $url       = 'http://domain.com/of/api';

   $fields = array(
     'from'     =>urlencode($from),
     'to'       =>urlencode($to),
     'message'  =>urlencode($message),
   );

   foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
   rtrim($fields_string,'&');

   $ch = curl_init();

   curl_setopt($ch,CURLOPT_URL,$url);
   curl_setopt($ch,CURLOPT_POST,count($fields));
   curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

   $result = curl_exec($ch);

   curl_close($ch);

非常感谢您的帮助。

4

2 回答 2

3

如果您在发布的脚本末尾发送Location标头以重定向到“成功”页面,则后退按钮不会加载该页面两次。

尝试:

// ... your code from the question
curl_close($ch);

header('Location: /sent.php');
exit;

然后sent.php显示确认页面,让他们知道他们的消息已发送。如果您需要从他们的请求中发送特定数据,请在重定向之前将其添加到会话中,并从会话中读取该数据sent.php

通过发送重定向,浏览器在使用后退按钮导航时将不会尝试再次重新发布相同的数据。它还将阻止刷新页面(在发送表单后)尝试再次重新发布数据。

于 2012-07-31T23:36:24.393 回答
0

你能让它基于cookie吗?

所以基本上

if(cookie =='') { /*do the stuff - AND set the cookie*/}

if(cookie !=='') { /* don't do the stuff */ }
于 2012-07-31T23:38:32.370 回答