我用vba 给 php 传递参数的时候,如果是普通的 php 文件,就可以接受到,而用 thinkPHP 框架的生成url,就收不到,怎么回事呢?
以下是vba代码:
Set obj = CreateObject("Microsoft.XMLHTTP") obj.Open "POST", sUrl, False obj.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded" obj.send (sData)
以下成功:
sUrl = "http://localhost/VbaPostDemo.php" sData = "a=1&b=2" //对应目录:C:\AppServ\www\VbaPostDemo.php <?php echo $_POST["a"];
以下失败: sUrl = "http://localhost/yb1/Home/curd/futuresDemo" sData = "a=1&b=2" 控制器function : function futuresDemo() { echo $_REQUEST["a"]; } 错误提示: " :( 非法操作:1 错误位置 FILE: C:\AppServ\www\yb1\ThinkPHP\Library\Think\Controller.class.php LINE: 170 TRACE #0 C:\AppServ\www\yb1\ThinkPHP\Library\Think\Controller.class.php(170): E('\xE9\x9D\x9E\xE6\xB3\x95\xE6\x93\x8D\xE4\xBD\x9C:1') #1 [internal function]: Think\Controller->__call('1', '') #2 C:\AppServ\www\yb1\ThinkPHP\Library\Think\App.class.php(114): ReflectionMethod->invokeArgs(Object(Home\Controller\CurdController), Array) #3 C:\AppServ\www\yb1\ThinkPHP\Library\Think\App.class.php(204): Think\App::exec() #4 C:\AppServ\www\yb1\ThinkPHP\Library\Think\Think.class.php(120): Think\App::run() #5 C:\AppServ\www\yb1\ThinkPHP\ThinkPHP.php(97): Think\Think::start() #6 C:\AppServ\www\yb1\index.php(27): require('C:\\AppServ\\www\\...') #7 {main} ThinkPHP3.2.3 { Fast & Simple OOP PHP Framework } -- [ WE CAN DO IT JUST THINK ] "
使用其他工具Post测试下呢, 比如Postman, 看看会不会出现这种情况.如果也出现那么说明应该是你代码问题 或者是TP问题. 如果没有 那么说明是你vba问题.