Correcting env('HTTP_BASE') ensuring that when used with no subdomain (http://example.com) it does not return '.com' as the HTTP_BASE

git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@7679 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
AD7six 2008-09-29 18:01:52 +00:00
parent badfb42c6a
commit 2cb2ca554c
2 changed files with 70 additions and 2 deletions

View file

@ -402,7 +402,11 @@ if (!function_exists('array_combine')) {
return (PHP_SAPI == 'cgi');
break;
case 'HTTP_BASE':
return preg_replace ('/^([^.])*/i', null, env('HTTP_HOST'));
$host = env('HTTP_HOST');
if (substr_count($host, '.') != 1) {
return preg_replace ('/^([^.])*/i', null, env('HTTP_HOST'));
}
return '.' . $host;
break;
}
return null;

View file

@ -0,0 +1,64 @@
<?php
/* SVN FILE: $Id$ */
/**
* Short description for file.
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP(tm) Tests <https://trac.cakephp.org/wiki/Developement/TestSuite>
* Copyright 2005-2008, Cake Software Foundation, Inc.
* 1785 E. Sahara Avenue, Suite 490-204
* Las Vegas, Nevada 89104
*
* Licensed under The Open Group Test Suite License
* Redistributions of files must retain the above copyright notice.
*
* @filesource
* @copyright Copyright 2005-2008, Cake Software Foundation, Inc.
* @link https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests
* @package cake.tests
* @subpackage cake.tests.cases
* @since CakePHP(tm) v 1.2.0.4206
* @version $Revision$
* @modifiedby $LastChangedBy$
* @lastmodified $Date$
* @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
*/
require_once CAKE.'basics.php';
/**
* BasicsTest class
*
* @package cake.tests
* @subpackage cake.tests.cases
*/
class BasicsTest extends CakeTestCase {
/**
* testHttpBase method
*
* @return void
* @access public
*/
function testHttpBase() {
$__SERVER = $_SERVER;
$_SERVER['HTTP_HOST'] = 'localhost';
$this->assertEqual(env('HTTP_BASE'), '');
$_SERVER['HTTP_HOST'] = 'example.com';
$this->assertEqual(env('HTTP_BASE'), '.example.com');
$_SERVER['HTTP_HOST'] = 'www.example.com';
$this->assertEqual(env('HTTP_BASE'), '.example.com');
$_SERVER['HTTP_HOST'] = 'subdomain.example.com';
$this->assertEqual(env('HTTP_BASE'), '.example.com');
$_SERVER['HTTP_HOST'] = 'double.subdomain.example.com';
$this->assertEqual(env('HTTP_BASE'), '.subdomain.example.com');
$_SERVER = $__SERVER;
}
}
?>