Przeglądaj źródła

ZF-7824: GET params can break setting baseurl in Zend_Controller_Request_Http

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18191 44c647ce-9c0f-0410-b52a-842ac1e357ba
jan 16 lat temu
rodzic
commit
2db038444b

+ 6 - 1
library/Zend/Controller/Request/Http.php

@@ -505,8 +505,13 @@ class Zend_Controller_Request_Http extends Zend_Controller_Request_Abstract
                 return $this;
             }
 
+            $truncatedRequestUri = $requestUri;
+            if (($pos = strpos($requestUri, '?')) !== false) {
+                $truncatedRequestUri = substr($requestUri, 0, $pos);
+            }
+            
             $basename = basename($baseUrl);
-            if (empty($basename) || !strpos($requestUri, $basename)) {
+            if (empty($basename) || !strpos($truncatedRequestUri, $basename)) {
                 // no match whatsoever; set it blank
                 $this->_baseUrl = '';
                 return $this;

+ 13 - 0
tests/Zend/Controller/Request/HttpTest.php

@@ -505,6 +505,19 @@ class Zend_Controller_Request_HttpTest extends PHPUnit_Framework_TestCase
 
         $this->assertEquals('/index.php', $request->getBaseUrl());
     }
+    /**
+     * @group ZF-7824
+     */
+    public function testSetBaseUrlWithScriptNameAsGetParam()
+    {
+        $request = new Zend_Controller_Request_Http;
+        
+        $_SERVER['REQUEST_URI']     = '/article/archive?foo=index.php';
+        $_SERVER['QUERY_STRING']    = 'foo=index.php';
+        $_SERVER['SCRIPT_FILENAME'] = '/var/www/zftests/index.php';
+        
+        $this->assertEquals('/article/archive', $request->getPathInfo());
+    }
 
     public function testGetSetBasePath()
     {