curl 输出变量名称而不是其内容


Curl outputs variable name instead of its contents

下面是我的代码,经过一夜的搜索和工作,我终于想出了如何让它发送短信。问题是我不能在正文消息中留下空格,并且它不显示$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的值。

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

您需要改用双引号:

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

有关两者之间区别的更多信息,请参阅 PHP 手册中的 PHP:字符串。

放在单引号内的变量不会在 php 中计算,将它们放在双引号中。

//set POST variables 
$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';

尝试使用双引号并键入:

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