Curl输出变量名而不是其内容

时间:2011-05-16 07:17:49

标签: php curl

下面是我的代码,经过整夜的搜索和工作后,我终于想出了如何让它发送短信。问题是我不能在正文消息中留空格,也不会显示$smsmessage的值。

extract($_POST);

$smsmessage1 = "This is the sms that will be sent";
$smsmessage = urlencode($smsmessage1);

//set POST variables
$url = 'http://www.mysmsgateway.com/bulksms/bulksms.php?username=myemail@domain.com&password=123456789&message=$smsmessage&mobile=2348035081907&sender=Boss';
$fields = array();

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch); 

上述代码会发送消息,但会输出$smsmessage,而不是从上方获取$smsmessage的值。

3 个答案:

答案 0 :(得分:6)

您使用单引号指定$url,这意味着$smsmessage将不会被解释。

您需要使用双引号:

$url = "http://www.mysmsgateway.com/bulksms/bulksms.php?username=myemail@domain.com&password=123456789&message=$smsmessage&mobile=2348035081907&sender=Boss";

有关两者之间差异的更多信息,请参阅PHP手册中的PHP: Strings

答案 1 :(得分:0)

单引号内的变量不会在php中评估,将它们放在双引号中。像

//set POST variables 
$url = "http://www.mysmsgateway.com/bulksms/bulksms.php?username=myemail@domain.com&password=123456789&message=$smsmessage&mobile=2348035081907&sender=Boss"

答案 2 :(得分:0)

您使用单引号而不是双引号。只有双引号会为您解析变量。所以不要输入:

$url = 'http://www.mysmsgateway.com/bulksms/bulksms.php?username=myemail@domain.com&password=123456789&message=$smsmessage&mobile=2348035081907&sender=Boss';

尝试使用双引号并输入:

$url = "http://www.mysmsgateway.com/bulksms/bulksms.php?username=myemail@domain.com&password=123456789&message=$smsmessage&mobile=2348035081907&sender=Boss";