Slim v3框架无法正确读取参数问题求助
解决Slim框架中格式参数判断的逻辑错误问题
嘿,作为Slim框架新手遇到这种问题确实挺闹心的——不管你传入xml还是json,代码总是返回"unknown format parameter sent"对吧?先看看你写的这段代码:
$app->get('/GetIpInfo/{format}/{ip}/{api_key}', function($request, $response, $args){ global $dbc; $ip = $args['ip']; $private_key = $args['api_key']; $format = $args['format']; if($format != "xml" or $format!= "json") { echo "unknown format parameter sent"; die(); } // 其余业务代码... });
问题就出在条件判断的逻辑上!你用了or运算符,这会导致无论$format是xml还是json,这个条件都会成立:
- 当
$format是xml时,$format != "json"是true,整个or条件就为true,触发错误提示; - 当
$format是json时,$format != "xml"是true,同样会触发错误提示。
你需要把or改成and(PHP里用&&更规范),意思是当格式既不是xml也不是json的时候才触发错误:
修正后的条件判断代码:
if($format != "xml" && $format != "json") { echo "unknown format parameter sent"; die(); }
或者换用!in_array()的写法,可读性会更好:
if(!in_array($format, ['xml', 'json'])) { echo "unknown format parameter sent"; die(); }
这样修改后,只有当传入的格式不在允许的列表里时,才会输出错误提示,正常的xml和json就能顺利通过判断啦~
内容的提问来源于stack exchange,提问作者Mario Bernheim
相关产品推荐
相关产品推荐

