diff --git a/cake/basics.php b/cake/basics.php index 8ecc94bd1..62369264d 100644 --- a/cake/basics.php +++ b/cake/basics.php @@ -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; @@ -918,4 +922,4 @@ if (!function_exists('file_put_contents')) { } return $val2; } -?> +?> \ No newline at end of file diff --git a/cake/tests/cases/basics.test.php b/cake/tests/cases/basics.test.php new file mode 100644 index 000000000..b5b40108d --- /dev/null +++ b/cake/tests/cases/basics.test.php @@ -0,0 +1,64 @@ + + * 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; + } +} +?> \ No newline at end of file