[已解决] Php在Windows 10上无法正确获取查询字符串作为_GET数组

时间:2019-04-18 13:17:28

标签: php get windows-10 query-string

我正在测试Laracasts课程视频(PHP练习者)中的一些代码。通常,代码必须获取查询字符串(uri后的部分)作为数组,并将其输入到_GET数组变量中。但在这种情况下,它会获取uri。有趣的是,在Linux上一切正常。

代码如下:

index.php文件

<?php

require 'core/bootstrap.php';

require Router::load('routes.php')->direct(Request::uri());

Router.php文件

<?php

class Router
{

    protected $routes=[];

    public static function load($file)
    {
        $router=new static;

        require $file;

        return $router;
}

    public function define($routes)
    {
        $this->routes=$routes;
    }

    public function direct($uri)
    {
        if(array_key_exists($uri, $this->routes))
        {
            return $this->routes[$uri];
        }

        throw new Exception('No route defined for this URI.');
    }
}

Request.php文件

<?php

class Request
{
    public static function uri()
    {
        return trim(
            parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'
        );
    }
}

index.view.php文件

<h1>Submit your name</h1>
    <form action="names" method="get">
        <input type="text" name="name">
        <input type="submit">
</form>

add-name.php

<?php

die(var_dump($_GET));

在Windows上,结果是:

array(1) { ["url"]=> string(6) "/names" }

routes.php文件内容:

$router->define([ ''=>'controllers/index.php',                 
    'about'=>'controllers/about.php',
    'about/culture'=>'controllers/about-culture.php', 
    'contact'=>'controllers/contact.php',
    'names'=>'controllers/add-name.php' ]);

最后我找到了问题。错误的 .htaccess 文件内容导致了此问题。谢谢大家。

0 个答案:

没有答案