Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erhält die durch die Router-Regeln von thinkPHP generierte URL Post-Daten?

Wie erhält die durch die Router-Regeln von thinkPHP generierte URL Post-Daten?

WBOY
WBOYOriginal
2016-12-01 00:57:091738Durchsuche

我用vba 给 php 传递参数的时候,如果是普通的 php 文件,就可以接受到,而用 thinkPHP 框架的生成url,就收不到,怎么回事呢?

以下是vba代码:

<code>    Set obj = CreateObject("Microsoft.XMLHTTP")
    obj.Open "POST", sUrl, False
    obj.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
    obj.send (sData)</code>

以下成功:

<code>sUrl = "http://localhost/VbaPostDemo.php"
sData = "a=1&b=2"


//对应目录:C:\AppServ\www\VbaPostDemo.php
        
<?php
       echo $_POST["a"];
    </code>
<code>以下失败:
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 ]
"

</code>

回复内容:

我用vba 给 php 传递参数的时候,如果是普通的 php 文件,就可以接受到,而用 thinkPHP 框架的生成url,就收不到,怎么回事呢?

以下是vba代码:

<code>    Set obj = CreateObject("Microsoft.XMLHTTP")
    obj.Open "POST", sUrl, False
    obj.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
    obj.send (sData)</code>

以下成功:

<code>sUrl = "http://localhost/VbaPostDemo.php"
sData = "a=1&b=2"


//对应目录:C:\AppServ\www\VbaPostDemo.php
        
<?php
       echo $_POST["a"];
    </code>
<code>以下失败:
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 ]
"

</code>

使用其他工具Post测试下呢, 比如Postman, 看看会不会出现这种情况.如果也出现那么说明应该是你代码问题 或者是TP问题. 如果没有 那么说明是你vba问题.

估计是路径错了,你自己手动吧路径在浏览器敲一下,应该是报一样的错!

m,c,a 禁用(内部已使用) 这问题确实比较扯淡

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn