【问题标题】:Unable to load a form in codeigniter from a controller无法从控制器在 codeigniter 中加载表单
【发布时间】:2015-12-10 08:38:12
【问题描述】:

我在php/codeigniter中有一个简单的注册/登录注册项目

而且我在点击登录或注册按钮时总是遇到这个特定的错误

错误:“在此服务器上找不到请求的 URL /CI/user/login。”

这里是控制器文件 user.php

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

    class User extends CI_Controller{   
     public function __construct()
     {

      parent::__construct();
      $this->load->model('user_model');

     }

     public function index()

     {
      if(($this->session->userdata('user_name')!=""))
      {
       $this->welcome();
      }

      else{
       $data['title']= 'Home';
       $this->load->view('header_view',$data);
       $this->load->view("registration_view.php", $data);
       $this->load->view('footer_view',$data);
      }}

     public function welcome()
     {
      $data['title']= 'Welcome';
      $this->load->view('header_view',$data);
      $this->load->view('welcome_view.php', $data);
      $this->load->view('footer_view',$data);
     }

     public function login()
     {
      $email=$this->input->post('email');
      $password=md5($this->input->post('pass'));

      $result=$this->user_model->login($email,$password);
      if($result) $this->welcome();
      else        $this->index();
     }

     public function thank()
     {
      $data['title']= 'Thank';
      $this->load->view('header_view',$data);
      $this->load->view('thank_view.php', $data);
      $this->load->view('footer_view',$data);
     }

     public function registration()
     {
      $this->load->library('form_validation');
      // field name, error message, validation rules
      $this->form_validation->set_rules('user_name', 'User Name', 'trim|required|min_length[4]|xss_clean');
      $this->form_validation->set_rules('email_address', 'Your Email', 'trim|required|valid_email');
      $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]');
      $this->form_validation->set_rules('con_password', 'Password Confirmation', 'trim|required|matches[password]');

      if($this->form_validation->run() == FALSE)
      {
       $this->index();
      }
      else
      {
       $this->user_model->add_user();
       $this->thank();
      }
     }

     public function logout()
     {
      $newdata = array(
      'user_id'   =>'',
      'user_name'  =>'',
      'user_email'     => '',
      'logged_in' => FALSE,
      );

      $this->session->unset_userdata($newdata );
      $this->session->sess_destroy();
      $this->index();
     }
    }
    ?>

这里是视图文件registration_view.php

    <html>
<div id="content">
<div class="signup_wrap">
<div class="signin_form">


 <?php echo form_open("user/login"); ?>

  <label for="email">Email:</label>
  <input type="text" id="email" name="email" value=""/>

  <label for="password">Password:</label>
  <input type="password" id="pass" name="pass" value=""/>

  <input type="submit" class="" value="Sign in"/>

 <?php echo form_close(); ?>




</div><!--<div class="signin_form">-->
</div><!--<div class="signup_wrap">-->





<div class="reg_form">
<div class="form_title">Sign Up</div>
<div class="form_sub_title">It's free and anyone can join</div>



<?php echo validation_errors('<p class="error">'); ?>
<?php echo form_open("user/registration");?>

  <p>
  <label for="user_name">User Name:</label>
  <input type="text" id="user_name" name="user_name" value="<?php echo set_value('user_name'); ?>" />
  </p>

  <p>
  <label for="email_address">Your Email:</label>
  <input type="text" id="email_address" name="email_address" value="<?php echo set_value('email_address'); ?>" />
  </p>

  <p>
  <label for="password">Password:</label>
  <input type="password" id="password" name="password" value="<?php echo set_value('password'); ?>" />
  </p>

  <p>
  <label for="con_password">Confirm Password:</label>
  <input type="password" id="con_password" name="con_password" value="<?php echo set_value('con_password'); ?>" />
  </p>

  <p>
  <input type="submit" class="greenButton" value="Submit" />
  </p>

 <?php echo form_close(); ?>

</div><!--<div class="reg_form">-->
</div><!--<div id="content">-->

</html>

我认为主要问题在于 form_open ('form');

这是 htacess 文件

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

【问题讨论】:

  • 您是否放置了.htaccess 文件??或尝试&lt;?php echo form_open("User/login"); ?&gt;
  • @Abdulla 刚刚添加了它
  • 将你的控制器大写form_open("User/login")
  • @Abdulla 那么我应该将我的 user.php 控制器命名为 User.php 吗?
  • 没有。只需在视图和 c 中使用

标签: php forms codeigniter


【解决方案1】:

您需要像这样将完整的 url 传递给 form_open 函数

   echo form_open(base_url()."/user/login");

【讨论】:

  • 试过了,还是没用:(
【解决方案2】:

改变这个: &lt;?php echo form_open("user/login"); ?&gt;
对此: &lt;?php echo form_open(base_url()."User/login"); ?&gt;
在配置中:

$config['base_url'] = 'http://localhost/projectname/';
$config['index_page'] = '';

之后,如果不起作用,则从 url 调用您的方法,如果工作正确,则将数据发布到您的方法!!!

【讨论】:

    【解决方案3】:

    编辑: 在您的 htaccess 文件中,更改为。 (另一个建议,不保证)

    RewriteBase /project
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php/$1 [L]
    

    【讨论】:

    • 好吧,我可以肯定地说,您的问题在于您尝试在域的子文件夹中运行 codeigniter。可以做到,但是有一些服务器设置需要更改(我不知道如何进行这些设置)。在 apache 中更改 httpd.conf 并让 CI 目录(或项目)成为服务器的根目录会更简单。但这将使您无法访问您可能在同一目录级别上拥有的其他项目。您正在寻找的是“在子文件夹中安装 CodeIgniter”。如果你谷歌,你可能会找到一些解决方案。
    • 那你觉得我应该怎么做?我的意思是,我应该将codeigniter文件夹从文件夹中取出并使其成为主文件夹吗?
    • 这就是我在开发环境中所做的,我的生活更加简单。我还在实时服务器上的子文件夹中运行 CodeIgniter(这就是我说它可以完成的原因),但是设置是由服务器管理员(我的一位同事)进行的,我可能永远无法理解 :)
    • 好的,我会尝试从 codeigniter 子文件夹中创建一个主文件夹
    【解决方案4】:

    检查您的/etc/apache2/apache2.conf/etc/apache2/httpd.conf 是否存在。基本上,除非您声明 AllowOverride 指令,否则 apache 不会确认 .htaccess 文件。

    所以,如果子目录的完整路径是/var/www/html/subdirectory/,则必须打开上述配置文件,并将其添加到底部

    <Directory /var/www/html/subdirectory/>
        AllowOverride all
    </Directory>
    

    别忘了重启apache!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-30
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2013-06-15
      • 2017-04-15
      相关资源
      最近更新 更多