使用cron job和php发送短信

时间:2012-02-06 13:22:03

标签: php cron sms

我对我发送短信提醒的脚本有疑问,我的目标是制作一个应用程序,从数据库中获取生日信息并在前一天发送短信...我已经“发送了短信”部分工作,使用表单..但现在我想在Cron触发的PHP文件中使用它 我第一次尝试发送邮件,这部分工作,但现在我正在努力与短信部分。

这是我第一次使用cron工作而且我是PHP的新手..

第一个PHP代码是用cron重复的东西..我可以使用相同的代码snipet到$ _POST数字(数字)和tekst(文本)..就像我在上一个PHP代码中使用的那样..

提前!!

<?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 webservice的连接:

<?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>

"; 

3 个答案:

答案 0 :(得分:1)

以下是不起作用的代码条带......

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

由于某种原因,您已将号码和文字放在$_POST[]内。这只有在$_POST[]中有一个名为&#39;这是一条SMS消息的变量时才有效,因为它有空格而不会发生。要解决此问题,只需取出$_POST[]并将其替换为

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

如果您想从$_POST[]获取,请将$_POST[]内的文字替换为您想要获取的输入的名称。

答案 1 :(得分:0)

你需要使用像这样的cron作业:

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

这例如每天中午12点(服务器时间)从php cli触发脚本。

但是,如果使用UNIX系统,首先需要使用fallowing命令使脚本可执行,以使其可以从cli执行:

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

答案 2 :(得分: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';