4
votes

I'm using Codeigniter. Everything is fine until when I'm create new controller named user_authentication.php (located on http://localhost/etalasekursusci/index.php/user_authentication). When I try to open this controller, the browser said "404 Page Not Found. The page you requested was not found". My controller files on http://localhost/etalasekursusci/index.php/controller and http://localhost/etalasekursusci/index.php/user work fine, just this one which fails.

(FYI, I copy the user_authentication.php file from my friend. And if I copy the script inside user class to user_authentication class, the user_authentication.php can be accessed...)

The /application/.htaccess file :

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

The /application/config/config.php file :

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

The /application/config/routes.php file :

$route['default_controller'] = 'controller';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

The /application/controllers/user.php file (can be accessed):

<?php
class user extends CI_Controller {
public function __construct()
{
    parent::__construct();

    $this->load->model('user_model');
}

public function index()
{
    $this->load->library('form_validation');

    $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

    $this->form_validation->set_rules('nama', 'Nama Kursus', 'required|min_length[5]|max_length[20]');

    $this->form_validation->set_rules('alamat', 'Alamat Kursus', 'required|min_length[5]|max_length[40]');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('register_user');
    }
    else
    {
        $data = array(
        'lembaga' => $this->input->post('nama'),
        'alamat' => $this->input->post('alamat'),
        'paketkursus' => $this->input->post('paket'),
        'lokasi' => $this->input->post('lokasi'),
        'harga' => $this->input->post('biaya')
        );

        $this->user_model->insert_userinfo($data);

        $this->load->view('tambahberhasil');

    }
}
}

The /application/controllers/user_authentication.php file (which can't be accessed):

<?php
class user_authentication extends CI_Controller {

public function __construct() {
parent::__construct();


$this->load->helper('form');


$this->load->library('form_validation');


$this->load->library('session');


$this->load->model('login_database');

}


public function user_login_show() {
$this->load->view('login_form');
}

public function user_registration_show() {
$this->load->view('registration_form');
}

public function new_user_registration() {

$this->form_validation->set_error_delimiters('<div class="error">', '</div>');

$this->form_validation->set_rules('name', 'Name', 'required|min_length[5]|max_length[20]');

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[40]');

$this->form_validation->set_rules('email_value', 'Email', 'required|min_length[2]|max_length[50]');

$this->form_validation->set_rules('password', 'Password', 'required|min_length[6]|max_length[10]');

if ($this->form_validation->run() == FALSE) {
$this->load->view('registration_form');
} else {
$data = array(
'name' => $this->input->post('name'),
'user_name' => $this->input->post('username'),
'user_email' => $this->input->post('email_value'),
'user_password' => $this->input->post('password')
);
$result = $this->login_database->registration_insert($data) ;
if ($result == TRUE) {
$data['message_display'] = 'Registrasi Berhasil !';
$this->load->view('login_form', $data);
} else {
$data['message_display'] = 'Username yang ada inputkan sudah ada!';
$this->load->view('registration_form', $data);
}
}
}


public function user_login_process() {

$this->form_validation->set_error_delimiters('<div class="error">', '</div>');

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[20]');

$this->form_validation->set_rules('password', 'Password', 'required|min_length[5]|max_length[40]');

if ($this->form_validation->run() == FALSE) {
$this->load->view('login_form');
} else {
$data = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
$result = $this->login_database->login($data);
if($result == TRUE){
$sess_array = array(
'username' => $this->input->post('username')
);

$this->session->set_userdata('logged_in', $sess_array);
$result = $this->login_database->read_user_information($sess_array);
if($result != false){
$data = array(
'name' =>$result[0]->name,
'username' =>$result[0]->user_name,
'email' =>$result[0]->user_email,
'password' =>$result[0]->user_password
);
$this->load->view('admin_page', $data);
}
}else{
$data = array(
'error_message' => 'Nama atau Password yang anda masukan salah !'
);
$this->load->view('login_form', $data);
}
}
}


public function logout() {

$sess_array = array(
'username' => ''
);
$this->session->unset_userdata('logged_in', $sess_array);
$data['message_display'] = 'Anda sudah Log Out !';
$this->load->view('login_form', $data);
}

}

Any ideas?

(FYI, I copy the user_authentication.php file from my friend. And if I copy the script inside user class to user_authentication class, the user_authentication.php can be accessed...)

2
It looks like you need to configure your routes, check out the CI documentation (codeigniter.com/userguide2/general/routing.html)Josef Engelfrost
post your .htaccess file that is in main folder etalasekursusci and what version of codeigniter are you using ?Kamran
Which version of Codeigniter are you using?Ben Broadley
This question is asked lots of time.Did you searched at google?Shaiful Islam
There is no .htaccess file in my etalasekursusci main folder. I'm using Codeigniter version 3.0Graha Pramudita

2 Answers

3
votes

Since you have defined base url as

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

Please try url http://localhost/etalasekursusci/user_authentication without index.php

OR Define base_url in config as below with index.php

$config['base_url'] = 'http://localhost/etalasekursusci/index.php';

Please post controller code, If you can.

3
votes

In Codeigniter 3 your class names must start with an uppercase letter as should their filename.

You should try rename user_authentication.php to User_authentication.php and change the opening lines to:

<?php
class User_authentication extends CI_Controller {

similarly, the user.php should be changed to User.php and its opening lines to:

<?php
class User extends CI_Controller {

The class documentation explaining this can be found here