找不到CodeIgniter对象控制器

时间:2017-12-11 08:42:08

标签: php .htaccess codeigniter codeigniter-3

我正在使用codeIgniter 3.x.我加载了一个包含提交给 User.php 控制器的表单的视图,但每当我点击提交按钮时,它都会重定向到此网址&#34; http://localhost/signup/Users/register&#34; < / em>它始终给出&#34;找不到对象!在此服务器上找不到请求的URL。&#34;

以下是我的 .htaccess 文件

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

以下是 autload.php

中的自动加载助手
$autoload['helper'] = array('url','form');

以下是 config.php

$config['base_url'] = 'http://localhost/signup/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

以下是我如何打开表单并在 Welcome.php 视图中关闭它。

<?php echo form_open("Users/register", $attributes);?>
<?php echo form_close(); ?>

以下是 Users.php 控制器

class Users extends CI_Controller
{
public function __construct()
{
    parent::__construct();
    $this->load->helper(array('form','url'));
    $this->load->library(array('session', 'form_validation', 'email'));
    $this->load->database();
    $this->load->model('user_model');
    $this->load->view('user_registration_view');
}

function index()
{
    $this->register();
}
    function register()
{
    //set validation rules
    $this->form_validation->set_rules('fname', 'First Name', 'trim|required|alpha|min_length[3]|max_length[30]|xss_clean');
    $this->form_validation->set_rules('lname', 'Last Name', 'trim|required|alpha|min_length[3]|max_length[30]|xss_clean');
    $this->form_validation->set_rules('email', 'Email ID', 'trim|required|valid_email|is_unique[user.email]');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|md5');
    $this->form_validation->set_rules('cpassword', 'Confirm Password', 'trim|required|matches[password]|md5');

    //validate form input
    if ($this->form_validation->run() == FALSE)
    {
        // fails
        $this->load->view('user_registration_view');
    }
    else
    {
        //insert the user registration details into database
        $data = array(
            'fname' => $this->input->post('fname'),
            'lname' => $this->input->post('lname'),
            'email' => $this->input->post('email'),
            'password' => $this->input->post('password')
        );

        // insert form data into database
        if ($this->user_model->insertUser($data))
        {
            // send email
            if ($this->user_model->sendEmail($this->input->post('email')))
            {
                // successfully sent mail
                $this->session->set_flashdata('msg','<div class="alert alert-success text-center">You are Successfully Registered! Please confirm the mail sent to your Email-ID!!!</div>');
                redirect('user/register');
            }
            else
            {
                // error
                $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error.  Please try again later!!!</div>');
                redirect('user/register');
            }
        }
        else
        {
            // error
            $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error.  Please try again later!!!</div>');
            redirect('user/register');
        }
    }
}

4 个答案:

答案 0 :(得分:0)

文件名应与班级名称相同 Users.php Class Users extends CI_Controller

答案 1 :(得分:0)

如果您的应用程序位于注册文件夹下(由.htaccess文件显示),那么您需要执行以下操作...

<强>的.htaccess 它与您的应用程序位于同一文件夹中。即与系统index.php文件相同的文件夹。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 

由于您的网址为http://localhost/signup/,您已在$ config [&#39; base_url&#39;]中正确设置了该网址。

我刚刚创建了一个虚拟测试站点并进行了测试。

如果有效,请告诉我。

答案 2 :(得分:0)

htaccess的问题因此将其更改为默认

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L]

并在配置

$root=(isset($_SERVER["HTTPS"]) ? "https://" : "http://").$_SERVER["HTTP_HOST"];
$root.= str_replace(basename($_SERVER["SCRIPT_NAME"]), "", $_SERVER["SCRIPT_NAME"]);
$config["base_url"] = $root; 

答案 3 :(得分:0)

我认为你在重定向时犯了错误......

替换:  重定向( '用户/注册');

用: 重定向( '用户/寄存器');或重定向('用户/注册','刷新');