1

我有一个用 slim 编写的基于 API 的应用程序。我一直在本地计算机上进行测试,一切正常。

我推送到服务器,我注意到我无法检索通过 get 请求传递的参数

在调试时,我观察到以下内容

  1. 发布请求工作正常

  2. 尝试使用$_GET['param']失败,因为我收到未定义的索引错误。

为了得到一个苗条的参数值,我写

$app->request()->get('param');

URL request :    {api}/hospital/get_locations?hospital_id=1
var_dump($_GET): array(1) { ["/hospital/get_locations"]=> string(0) "" } 

关于为什么会发生这种情况的任何指示?

.htaccess 文件的内容

RewriteEngine On  
RewriteCond %{REQUEST_FILENAME} -s [OR]  
RewriteCond %{REQUEST_FILENAME} -l [OR]  
RewriteCond %{REQUEST_FILENAME} -d  
RewriteRule ^.*$ - [NC,L]  
RewriteRule ^.*$ index.php [NC,L]
4

1 回答 1

0

编辑

可能有一种get使用$_SERVER['REQUEST_URI']. 我在我的本地主机上做了一个快速测试并想出了以下内容。试试看,可能对你有用。

php

<?php

// Function
function getParams() {
    $params = array();
    $urlParts = parse_url($_SERVER['REQUEST_URI']);
    if (isset($urlParts['query'])) {
        $query = $urlParts['query'];
        if (-1 !== strpos($query, '&')) {
            $query = explode('&', $query);
        } else {
            $query = array($query);
        }
        foreach ($query as $queryStr) {
            list($key, $val) = explode('=', $queryStr);
            $params[$key] = $val;
        }
    }
    return $params;
}

// Usage
$params = getParams();

// Debug
echo "<pre>";
print_r($params);
echo "</pre>";

?>

输出

Array
(
    [hospital_id] => 1
)

.htaccess(类似于你的)

<IfModule mod_rewrite.c>

    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule .* index.php [L]

</IfModule>
于 2013-11-01T19:15:16.070 回答