2012-02-06 52 views
0

我有一個關於我的腳本發送短信提醒的問題,我的目標是使應用程序從數據庫中獲取生日信息並在前一天發送短信...我已經得到了「發送短信」部分的工作,使用一種形式..但現在我想在一個Cron觸發PHP文件中使用它。
我第一次嘗試發送郵件,這部分工作,但現在我正在努力與短信部分。發送短信使用cron作業和php

這是我第一次用cron作業工作,我是一個很新的PHP ..

第一PHP代碼重複:用cron什麼..我thougt我可以用同樣的一小段代碼片段,以$ _POST nummer(數字)和tekst(文本)..正如我在最後的PHP代碼..

thanx提前!

<?php 

require('includes/global.php'); 
require('includes/voip.buster.instellingen.php'); 

/* ### This is working ### 
$to = "**********@gmail.com"; 
$subject = "cron!"; 
$body = "Hoi,\n\n Cron Job test"; 
mail($to, $subject, $body); 
*/ 
    #### this part is not working ###### 
$nummer = $_POST['+0031*******']; 
$tekst = $_POST['this is a sms message']; 
SendSMS($nummer, $tekst); 

?> 

到SMS Web服務連接:

<?php 

function SendSMS($to, $txt) 
{ 
$user = "*******"; 
$pass = "*******"; 
$from = "*******"; 

$txt = substr($txt, 0, 160); 
$url = "https://www.voipbuster.com/myaccount/sendsms.php?"; 
$url .= "username=".$user."&password=".$pass; 
$url .= "&from=".$from."&to=".$to."&text=".str_replace(" ", "%20", $txt); 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($ch); 
curl_close($ch); 
$results = explode("\n", $result); 

return $results[4]; 
} 

?> 

,這是使用一種形式的工作部分..

if(isset($_POST['addreminder'])) 
{ 
$nummer = $_POST['TEL']; 
$tekst = $_POST['bericht']; 
$resultaat = SendSMS($nummer, $tekst); 

} 

$smsreminder = " 

<div id='smsreminder' style='width:707px; display:none; height:auto; border:1px solid #999; padding:10px; padding-bottom:30px'> 

     <br/>   
     ".$addreminders."   
     <br/> 


     <form action='".$_SERVER['PHP_SELF']."?companyname=".$name."&tab=smsreminder' method='post'> 
     <input type='hidden' name='comphash' value='".$reminder['edit_hash']."'> 

     <label for='tocontact'>ontvanger</label> 
     <select name='tocontact'>".$options."</select><br/><br/> 

     <label for='tel. nummer'>tel. nummer</label> 
     <input type='text' name='TEL' id='TEL' /><br/><br/>   

     <label for='message'>smsbericht</label> 
     <textarea name='bericht' id='bericht'></textarea><br/><br/> 

     <label for='addreminder' style= 'margin-left:50px;'>&nbsp</label> 
     <input type='submit' name='addreminder' value='Add Reminder' /> 

     </form> 
    </div> 

"; 
+1

你真的不提供什麼不工作。例如,你是否看到日誌中有任何錯誤?當運行cron時,實現一些日誌記錄是非常有用的,這樣你就可以看到發生了什麼。旁邊OOK考慮命令行測試,例如使用SSH,所以你可以看到一些輸出是否發生。從數據庫 – 2012-02-06 13:25:49

+0

負荷數和文字......有什麼問題實際上?如果你運行它作爲一個cron作業 – Vyktor 2012-02-06 13:27:27

+0

你可能在你不$ _POST值。你將有數量和文本的值從數據庫中挑選,你把它送給你SendSMS功能。 – Mark 2012-02-06 13:33:01

回答

0

的問題是:

$nummer = $_POST['+0031*******']; 
$tekst = $_POST['this is a sms message']; 

如果使用cron作業執行此腳本,$ _POST將不可用,因爲您可能會執行GET請求。

其次,您要求的是「+31 ***」後的值。您應該使用正確的鍵,可能類似$ _POST ['number']或$ _POST ['message']而不是值。

只需更換兩行與此,它應該工作:

$nummer = '+31****'; 
$tekst = 'this is a text message'; 
0

您需要使用cron作業像這樣的:

0 12 * * * php path/to/command/execute_sms.php 

這個例如三每天12:00(服務器時間)在php cli中記錄腳本。

但是,如果您使用的是UNIX系統,你首先需要與休耕命令腳本可執行,以使其從CLI可執行文件:

chmod +x path/to/command/execute_sms.php 
1

下面是代碼不起作用條...

$nummer = $_POST['+0031*******']; 
$tekst = $_POST['this is a sms message']; 

你提出的數目和由於某種原因,$_POST[]中的文字。這隻有在$_POST[]中有一個名爲「這是SMS消息」的變量時纔有效,因爲它有空格,所以不會發生這種情況。爲了解決這個問題,只取$_POST[]出來,如果你想從$_POST[]得到它,你要得到它輸入的名稱替換內$_POST[]文字與

$nummer = '+0031*******'; 
$tekst = 'this is an sms message'; 

更換。

+0

感謝名單!試着多diverent事情,所以我被困並把一切都混合起來..:P它的工作現在:) – 2012-02-06 13:58:44

+0

@Op_Je_Plaatsman要通知到人們對未來和其他人thatthis站解決問題,您可以點擊下面的對勾我的帖子左側的數字。 – CoffeeRain 2012-02-06 14:00:19