codeigniter的纯php中的base_url()函数

时间:2014-09-05 10:17:26

标签: php codeigniter

是否有办法在仅使用php的codeigniter中获取基本网址(在codeigniter中为url_helper)。

我的项目地址类似于

http://localhost/proj1/

它可以是任何名称
如何获取将在结构树中的任何文件上提供相同基本URL的URL,具体取决于所有情况,例如http://https://

3 个答案:

答案 0 :(得分:2)

设置文件 config.php

<?php

   define('base_url','http://localhost/proj1/');

?>

在每个页面上都包含config.php。像这样:

page1.php中

<?php

 include_once('config.php');

 echo base_url;


?>

有关define(); read this

的详情

修改1:

如果你想要,你也可以试试这个:

<?php

       define('base_url','http://'.$_SERVER['HTTP_HOST'].'/');

    ?>

或者,如果你使用子文件夹,那么:

$root = "http://".$_SERVER['HTTP_HOST'];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
define('base_url',$root);

编辑2 :试试这个:

define('ROOTPATH', realpath(dirname(__FILE__)) . '/');


// installed in the docroot?
if (realpath(dirname(__FILE__)) == $_SERVER['DOCUMENT_ROOT'])
{
    define('ROOT', '/');
}
else
{
    define('ROOT', substr(ROOTPATH, strlen($_SERVER['DOCUMENT_ROOT'])+1));
}


$url = (isset($_SERVER['HTTPS']) ? "https://" : "http://") . $_SERVER['HTTP_HOST'] . ROOT;

define('base_url',$url);

echo base_url;exit;

答案 1 :(得分:0)

或者如果你想在php而不是codeigniter中尝试php的$ _SERVER变量

     echo "http://" . $_SERVER['SERVER_NAME']; 

Link

答案 2 :(得分:0)

这是codeigniter直接从git存储库执行的方式:

https://github.com/EllisLab/CodeIgniter

CodeIgniter / application / config / config.php

/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|   http://example.com/
|
| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url'] = '';

CodeIgniter / system / core / Config.php

/**
 * Class constructor
 *
 * Sets the $config data from the primary config.php file as a class variable.
 *
 * @return  void
 */
public function __construct()
{
    $this->config =& get_config();
    log_message('debug', 'Config Class Initialized');

    // Set the base_url automatically if none was provided
    if (empty($this->config['base_url']))
    {
        if (isset($_SERVER['HTTP_HOST']))
        {
            $base_url = (is_https() ? 'https' : 'http')
                .'://'.$_SERVER['HTTP_HOST']
                .substr($_SERVER['SCRIPT_NAME'], 0, -strlen(basename($_SERVER['SCRIPT_NAME'])));
        }
        else
        {
            $base_url = 'http://localhost/';
        }

        $this->set_item('base_url', $base_url);
    }
}

您应该在配置文件中提供一个基本网址,我认为这将由codeigniter自动加载,base_url()将返回此值。

每当config.php被实例化时,它会检查是否已经在config.php中配置了基本URL,如果它没有,它将尝试通过检查主机,脚本的协议基本名称等进行猜测。然后调用set_item方法,将$ config ['base_url']设置为上述逻辑确定为基本URL的任何内容