我正在使用kannel 1.4.3并使用下面的短信服务
group = sms-service
keyword = default
# keyword-regex = .*
catch-all = yes
max-messages = 0
post-url = "http://127.0.0.1/sms.php?phone=%p&text=%a&first_keyword=%k&second_keyword=%s&words=%r&binary_message=%b&time=%t&unix_time=%T&sms_id=%I&dr=%d&dr_url=%R&meta_data=%D&dr_smsc_reply=%A&message_coding=%c&message_class=%m&message_waiting_indicator=%m&message_charset=%C&udh=%u&xser0cfield=%B&account_identifier=%o&data_coding_schema=%O&smsc_originating_message=%f"
这里是sms.php脚本
<?php
require_once dirname(__FILE__)."/send.php";
echo "Ting..\n";
$phone = isset($_POST['phone']) ? ($_POST['phone']."\n"):"??";
$text = isset($_POST['text']) ? ($_POST['text']."\n"):"??";
$username = "tester";
$password = "foobar";
$to = $_POST['phone'];
//$text = "Nomor anda adalah : $to";
//$url = "http://127.0.0.1:13013/cgi-bin/sendsms?username=".$username."&password=".$password."&to=".$to."&text=".urlencode($text);
//
//$result = getCURL($url);
$fh = fopen(dirname(__FILE__)."/debug.txt","a");
fwrite($fh,
print_r(array(
'method'=>$_SERVER['REQUEST_METHOD'],
'data'=>print_r($_REQUEST,true),
'header'=>print_r(getallheaders(), 1)
),true)
);
fclose($fh);
?>
问题是当我发送消息时,收到的所有参数都是$ _GET,而不是$ _POST 甚至request_method值是POST
如何使用$ _POST检索所有参数,如手机,文字,关键字等?不是$ _GET?
输出示例:
Array
(
[method] => POST
[data] => Array
(
[phone] => +6281210*****628
[text] => babi pake manjat pohon
[first_keyword] => babi
[second_keyword] => pake
[words] => manjat pohon
[binary_message] => babi pake manjat pohon
[time] => 2012-10-09 10:05:49
[unix_time] => 1349777149
[sms_id] => 2f3e12ed-5031-4d5f-b1f2-55e3c41063a4
[dr] => -1
[dr_url] => %R
[meta_data] => %D
[dr_smsc_reply] => babi pake manjat pohon
[message_coding] => 0
[message_class] => -1
[message_waiting_indicator] => -1
[message_charset] => UTF-8
[udh] =>
[xser0cfield] =>
[account_identifier] =>
[data_coding_schema] => 00
[smsc_originating_message] => +628*****0000
)
[header] => Array
(
[Host] => 127.0.0.1
[Connection] => keep-alive
[User-Agent] => Kannel/1.4.3
[Content-Type] => text/plain
[X-Kannel-To] => 13013
[X-Kannel-Time] => 2012-10-09 10:05:49
[Date] => 2012-10-09 03:05:56
[X-Kannel-SMSC] => at-modem
[X-Kannel-PID] => 0
[X-Kannel-Alt-DCS] => 0
[X-Kannel-Coding] => 0
[X-Kannel-Compress] => 0
[X-Kannel-Service] => default
[Content-Length] => 22
)
)
答案 0 :(得分:1)
在您的示例中,您需要在查询字符串中设置参数而不是发布数据,这就是您在$ _GET中看到它们的原因。
$ _ POST为空,因为Kannel在X-Kannel- * HTTP标头中提交数据而不是发布字段。
请参阅gw / smsbox.c第1306-1431行(v1.4.4)......它们仅在userguide.xml中的userguide中,因此阅读源代码将显示使用的标题名称。
您无法选择使用post-url的名称,而且您无法选择哪些参数 - 它们都会在每次请求时发送。
答案 1 :(得分:0)
有同样的问题...我使用的只是使用PHP $_REQUEST
代替..所以如果$_GET
或$_POST
能够处理信息并不重要。< / p>
如果您想要POST请求,可以尝试post-xml
选项