2012-07-31 164 views
2

當潛在客戶在其網頁上提交查詢表單時,我正在使用第三方短信網關向客戶端發送短信。我使用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); 

感謝很多的幫助。

+0

只是想知道您正在使用的第三方短信網關? – 2012-08-01 00:07:37

+0

@MuhammadAhmadZafar上述代碼適用於Sourcesms(英國之外),它工作正常。但是我發現一個更強大的網關(Twilio)具有更高的可靠性,支持和大量的資源,在美國的成本更低。我現在正在測試他們的系統,而且它似乎工作得很好。 – user1322707 2012-08-01 01:53:12

回答

3

如果您發送Location標題以重定向到發佈的腳本末尾的「成功」頁面,則後退按鈕不會加載該頁面兩次。

嘗試:

​​

然後讓sent.php顯示確認頁面,讓他們知道他們的消息被髮送。如果您需要從其請求中發送特定數據,請在重定向之前將其添加到會話中,然後從sent.php的會話中讀取該數據。

通過發送重定向,當使用後退按鈕導航時,瀏覽器不會嘗試重新發布相同的數據。它也會阻止刷新頁面(發送表單之後)嘗試重新發布數據。

+2

@ user1322707我會建議這種方式來提交所有表單。它將*愚蠢*從用戶手中帶走,並阻止他們搞亂網站功能。 +1(當我很快得到我的選票時) – Fluffeh 2012-07-31 23:39:16

+0

@Fluffeh偉大的建議;) – user1322707 2012-07-31 23:43:06

+0

@ drew010 duhhh!我不知道我在想什麼;)感謝您的PHP 101指令,直接通過我: -/ – user1322707 2012-07-31 23:44:55

0

你可以讓它基於cookie嗎?

所以基本上

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

if(cookie !=='') { /* don't do the stuff */ }