我用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
以下失敗: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: 170TRACE#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 ]"
回複內容:
我用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
以下失敗: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: 170TRACE#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問題.
估計是路徑錯了,你自己手動吧路徑在瀏覽器敲一下,應該是報一樣的錯!
m,c,a 禁用(內部已使用) 這問題確實比較扯淡