我正在开发一个应用程序,其中我收到的输入是通过SMS网关(而不是浏览器)。我需要处理通过SMS获取的数据并将其传递到另一个PHP文件,该文件将完成处理并将SMS发送回SMS网关。
但是,当我尝试从page1.php重定向到page2.php时,它无法使用以下代码:
page1.php中:
$url = "location:http://www.iweavesolutions.com/$extra?sms=".$msg."&keyword=".$key."&num=".$msg_num."&src=".$source;
header($url);
使page2.php:
$msg = $_GET['sms'];
$msg_num = $_GET['num'];
$keyword = $_GET['keyword'];
$src = $_GET['src'];
send_sms($msg,$msg_num);
但是,第一页中的标题调用似乎不起作用。 php文档说该标头用于与浏览器相关的活动。在我的应用程序中根本没有浏览器。那么,我是否需要更改跨文件传递值的机制?请帮忙
答案 0 :(得分:2)
请参阅" CURL"
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://www.iweavesolutions.com");
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'variable1=abc&variable2=123');
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_MAXREDIRS,1);
$buffer = curl_exec($ch);
curl_close($ch);
像这样的事情
答案 1 :(得分:0)
发送location:[someUrl]
标头作为请求的答案只是告诉请求客户端对该位置执行另一个请求。是否遵循此重定向由客户端决定。浏览器通常会这样做,其他客户可能不这样做。
如果您正在处理的客户端(SMS网关)不遵循位置标头重定向,则需要检查客户端文档是否有某种机制可以让他这样做。如果无法重定向客户端,则需要更改服务器端逻辑以消除重定向的需要,即您需要直接从'page1.php'调用'page2.php'中的处理逻辑没有重定向的间接(或将整个逻辑捆绑在一个文件中等)。
答案 2 :(得分:0)
SMS网关可能无法正确实现HTTP。 IME这并不罕见。
作为旁注,你的第一个脚本(假设它是完整的)是在假设register_globals被启用的情况下编写的 - 这已经被弃用了很长时间,并且没有对值进行url编码 - 这可能是问题的原因这里。如果没有,您需要: