2013-07-18 71 views
0

我正在嘗試開發一個基於PHP的應用程序,將印度的短信發送到從數據庫中選擇的聯繫人。搜索了幾個小時後,我發現以下工作(我測試了它)腳本,它使用fullonsms.com作爲短信網關,但它一次發送一條消息,然後加載主頁。 但我對捲毛不太瞭解。使用PHP發送免費短信

所以

  1. 我需要幫助瞭解實際正在做什麼。其次,我如何修改它以最佳地將短信發送給多個人(比如將它放在一個循環中是最佳的),而不浪費數據或不必要的頁面加載。 3.發送完每條短信後,它會加載homepage.o不會在發送短信之前加載主頁。如果是,我可以刪除已加星號(** **)的行以防止發生這種情況。

這裏是我的代碼:

<?php 
    $cookie_file_path = "/cookie.txt"; 
    $username="username"; 
    $password="password"; 
    $tomobno="1234567890"; 
    $message=urlencode("Hi buddy"); 

      $agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,"http://sms.fullonsms.com/login.php");  
     curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_fie_path); 
     curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_HEADER, 1); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, "MobileNoLogin=$username&LoginPassword=$password&x=16&y=14"); 
     $html=curl_exec($ch); 
     **curl_setopt($ch, CURLOPT_URL,"http://sms.fullonsms.com/home.php");** 
     curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_fie_path); 
     curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_HEADER, 1); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, "ActionScript=%2Fhome.php&CancelScript=%2Fhome.php&HtmlTemplate=%2Fvar%2Fwww%2Fhtml%2Ffullonsms%2FStaticSpamWarning.html&MessageLength=140&MobileNos=$tomobno&Message=$message&Gender=0&FriendName=Your+Friend+Name&ETemplatesId=&TabValue=contacts"); 

      $html = curl_exec($ch); 
      echo $html; 
?> 

有一個類似的問題問,但答案公認是關閉的話題,它使用不同的網關SMS sending through free gateway

+0

檢查您正在使用的API的文檔,這裏沒有一般的答案 – 2013-07-18 09:21:59

+0

@Dragon:'fullonsms.com'不提供任何官方API。 –

+0

然後使用短信提供,那是否 – 2013-07-18 09:24:41

回答

4

1)我需要幫助瞭解實際正在做什麼。

代碼向服務發送兩個HTTP請求。第一個請求使用您的用戶名和密碼登錄,併爲下一個請求存儲會話Cookie。第二個請求是實際觸發發送的請求,它將手機號碼和其他詳細信息作爲POST數據。由於cookiejar,第二個請求能夠使用由第一個請求創建的會話。

2)其次,我怎麼可以修改它以最佳方式發送短信給多人

如果該服務允許你輸入多個手機號碼(用於分離例如逗號),那麼這將是最優化因爲它只需要兩個請求發送到所有的手機號碼。

如果沒有,您將不得不循環第二個請求,以便每個手機號碼有一個請求。請記住更改硬編碼的POST數據,以便使用下一個手機號碼和名稱,而不是每次都發送相同的號碼。

我也建議在循環的每次迭代後暫停一段時間以防止發送請求過快。例如,您可以使用sleep(1)等待1秒鐘。

+0

:感謝您的完美回答!!!我會嘗試。 –

+0

主席先生,我有一個問題 - 最終如何退出? –

+1

您不需要註銷,因爲會話會在時間限制後過期,但如果您真的想要,您需要查看他們如何在其網站上執行註銷請求,以便能夠使用cuRL進行復制。例如,它可以是帶有某些參數的POST或GET請求。 – MrCode

0

1)我發現cURL options列表非常有用,還有Google'HTTP頭'和'RESTful URL'。

2)你可以包裝在幾個函數的代碼,即,確定是否只存在一個或多個收件人(可能使用is_array()),然後,其具有參數如$message, $recipients, $from, etc..一個函數,它使用一個foreach()到功能循環通過第一個函數傳遞給它的收件人