【问题标题】:How to set background-image in codeigniter 3如何在codeigniter 3中设置背景图像
【发布时间】:2026-02-19 03:40:01
【问题描述】:

我几天前开始使用codeigniter,我无法通过css文件设置背景图像。我的控制器(verifylogin.php)是这样的:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class VerifyLogin extends CI_Controller {

 function __construct()
 {
   parent::__construct();
   $this->load->model('user','',TRUE);
   $this->load->helper('url');
 }

 function index()
 {
   //This method will have the credentials validation
   $this->load->library('form_validation');

   $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
   $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');

   if($this->form_validation->run() == FALSE)
   {
     //Field validation failed.  User redirected to login page
     $this->load->view('login_view');
   }
   else
   {
     //Go to private area
     redirect('home', 'refresh');
   }

 }

 function check_database($password)
 {
   //Field validation succeeded.  Validate against database
   $username = $this->input->post('username');

   //query the database
   $result = $this->user->login($username, $password);

   if($result)
   {
     $sess_array = array();
     foreach($result as $row)
     {
       $sess_array = array(
         'id' => $row->id,
         'username' => $row->username
       );
       $this->session->set_userdata('logged_in', $sess_array);
     }
     return TRUE;
   }
   else
   {
     $this->form_validation->set_message('check_database', 'Invalid username or password');
     return false;
   }
 }
}

而视图(login_view.php) 就是这个。

<html>
 <head>
   <title>OpediaLab</title>
 </head>
 <body>
   <h1></h1>
   <?php echo validation_errors(); ?>
   <?php echo form_open('verifylogin'); ?>

<link rel="stylesheet" type="text/css" href="<?=base_url()?>style.css"/>
<label for="username">Username:</label>
     <input type="text" size="20" id="username" name="username"/>
     <br/>
     <label for="password">Password:</label>
     <input type="password" size="20" id="passowrd" name="password"/>
     <br/>
     <input type="submit" value="Login"/>
   </form>
 </body>
</html>

css 文件只包含这两行:

body{
background-image: url("C:/wamp/www/CI/application/views/immagini/Opedia_LAB.png");
background-color: green;
}

现在,我很确定 css 文件必须位于特定文件夹中(我看过很多教程,但并非都说同样的话)。我最后一次尝试是把文件放到“views”中,如图

我希望我足够清楚,而且我知道,这是因为我对这个框架非常陌生。

这就是我在任何尝试改变我所做的事情时所看到的。没有错误但没有 CSS 效果。

更新:

这是我从控制台得到的:

【问题讨论】:

  • 试着把你的css调用放在head里。
  • 嗨@KetanSolanki,我刚试过,但不幸的是它不起作用。
  • 正如@KetanSolanki 提到的,您必须将链接标签放在 中。现在请从您的浏览器中打开源代码,查看 URL 是否正确。或者,检查 chrome devtools 中的网络选项卡并重新加载页面以检查是否有任何错误。很可能是路径的问题。
  • @user5913892 我已经更新了代码并更改了您的 css 文件的链接,请检查它.. Aziz 先生告诉的点也是一个有效点。
  • 另外,请避免在您的 CSS 背景图像 URL 中使用绝对路径......使用相对路径(它相对于 CSS 文件的位置)应该类似于 background-image: url(immagini/Opedia_LAB.png); `

标签: php css codeigniter background-image codeigniter-3


【解决方案1】:

像这样改变你的代码:::

<html>
 <head>
   <title>OpediaLab</title>
<link rel="stylesheet" type="text/css" href="<?=base_url()?>."application/views/style.css"/>
 </head>
 <body>
   <h1></h1>
   <?php echo validation_errors(); ?>
   <?php echo form_open('verifylogin'); ?>


<label for="username">Username:</label>
     <input type="text" size="20" id="username" name="username"/>
     <br/>
     <label for="password">Password:</label>
     <input type="password" size="20" id="passowrd" name="password"/>
     <br/>
     <input type="submit" value="Login"/>
   </form>
 </body>
</html>

【讨论】:

  • @user5913892 请向我们展示可以在您的浏览器错误控制台中看到的错误。
  • 我没有收到任何错误,这是我的问题。我附上我在浏览器中看到的问题:
  • @user5913892 只需在浏览器中按F12功能键,然后搜索控制台,那里可能会出现任何错误..
  • 在css文件中修改如下代码:body{ background-image: url("immagini/Opedia_LAB.png");背景颜色:绿色; }
  • 我解决了。我将 C:\wamp\www\CI 中的“Immagini”和 Style.css 移动到同一个文件夹中。之后一切正常。你的CSS是正确的。谢谢。
【解决方案2】:

试试这个

<html>
 <head>
   <title>OpediaLab</title>
   <link rel="stylesheet" href="<?php echo base_url('style.css');?>">
 </head>
 <body>
   <h1></h1>
   <?php echo validation_errors(); ?>
   <?php echo form_open('verifylogin'); ?>

<label for="username">Username:</label>
     <input type="text" size="20" id="username" name="username"/>
     <br/>
     <label for="password">Password:</label>
     <input type="password" size="20" id="passowrd" name="password"/>
     <br/>
     <input type="submit" value="Login"/>
   </form>
 </body>
</html>

【讨论】:

  • Base_url 只会反映到 CI 文件夹(在这种情况下)但 CSS 文件存储在 application>>views>>style.css
【解决方案3】:

使用 Codeigniter URL Helper base_url();

我建议您将您的 css 样式放在与应用程序相同级别的名为 assets 的文件夹中。

在您的情况下,样式调用应该是:

来自

<link rel="stylesheet" type="text/css" href="<?=base_url()?>style.css"/>

<link rel="stylesheet" type="text/css" href="<?=base_url()?>application/views/style.css"/>

在你的 style.css 中 改变

body{
background-image: url("C:/wamp/www/CI/application/views/immagini/Opedia_LAB.png");
background-color: green;
}

身体{ 背景图像:url(); 背景颜色:绿色; }

希望这对您有所帮助..随时提出问题..如果我有错误,请随时发表评论;

请注意我在这里编码;我还没有测试过。但我已经将它应用到我的项目中了。玩得开心!

【讨论】:

  • 最好将图片放在应用程序目录之外的 assets 文件夹中。
【解决方案4】:
"C:/wamp/www/CI/application/views/immagini/Opedia_LAB.png"

由于安全原因,您正在从应用程序目录中获取图像并且禁止用户使用,因此您无法从应用程序目录中获取图像,可以这样做但图像应该在应用程序目录之外,您可以使用自己的目录,如资产.

在应用程序目录中有htaccess文件,它全部拒绝。

<IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>

【讨论】:

    【解决方案5】:
       body{
             background: url(<?php echo base_url('assets/images/bg_images.jpg');?>);
    }
    

    【讨论】:

    • 或者在你的观点中你可以像这样写内联css: