CodeIgniter, Запрошенный URL не найден на сервере - PullRequest
0 голосов
/ 29 марта 2020

В настоящее время я разрабатываю систему в CodeIgniter, которая требует аутентификации пользователя через логин и регистрацию в качестве базы для использования остальной системы. У меня возникала проблема 404 Not Found в моей системе, когда я пытаюсь вызвать функцию Controller, это особенно распространено при отправке форм. Я разместил свой соответствующий код из моего контроллера, модели, вида, маршрутов и Htaccess ниже. Я не совсем уверен, что является причиной ошибки 404, любая помощь будет принята с благодарностью.

Контроллер:

// handles register page
public function register() {
    $this->load->helper('form');
    $this->load->library('form_validation');

    $data['title'] = "Register";

    $this->form_validation->set_rules('fullname','Full Name','required');
    $this->form_validation->set_rules('accountid','Account ID','required');
    $this->form_validation->set_rules('password','Password','required');
    $this->form_validation->set_rules('type','Account Type','required');

    if ($this->form_validation->run() === FALSE) {
        $this->load->view('register', $data);
    } else {
        $fullname = $this->input->post('fullname');
        $username = $this->input->post('username');
        $password = md5($this->input->post('password'));
        $accounttype = $this->input->post('type');

        $this->system->registeruser($username, $password, $fullname, $accounttype);
        echo "User Registration Complete";
    }
}

Модель:

public function registeruser($accountid, $password, $fullname, $accounttype) {
    $query = "INSERT INTO users VALUES($fullname','$accountid','$password','$accounttype')";
    $this->db->query($query);
}

Просмотр :

<?php
    echo form_open('main/register');
    echo validation_errors(); ?>
        <div id="name-input">
            <?php
                $data = array(
                    'name' => 'fullname',
                    'value' => $this->input->post('fullname'),
                    'placeholder' => 'Full Name',
                    'class' => '',
                    'style' => 'width:100%; padding:0.5em;' );

                echo form_input($data);
            echo "</p>"; ?>
        </div>

        <div id="username-input">
            <?php
                $data = array(
                    'name' => 'accountid',
                    'value' => $this->input->post('accountid'),
                    'placeholder' => 'User ID',
                    'class' => 'username',
                    'style' => 'width:100%; padding:0.5em;' );

                echo form_input($data);
            echo "</p>"; ?>
        </div>

        <div id="password-input">
            <?php
                $data = array(
                    'name' => 'password',
                    'value' => $this->input->post('password'),
                    'placeholder' => 'Password',
                    'class' => 'passwordd',
                    'style' => 'width:100%; padding:0.5em;' );

                echo form_password($data);
            echo "</p>"; ?>
        </div>

        <div id="account-type">
            <?php
                $options = array(
                    'student' => 'Student',
                    'lecturer' => 'Lecturer' );

                $data = array(
                    'name' => 'type',
                    'style' => 'width:100%; padding:0.5em;' );

                echo form_dropdown($data, $options);
            echo "</p>"; ?>
        </div>

        <div id="submit-button">
            <?php
                $data = array(
                    'name' => 'register',
                    'value' => 'Register Account',
                    'class' => 'register',
                    'style' => 'width:100%; padding:0.5em;' );

                echo form_submit($data); ?>
        </div>
<?php echo form_close(); ?>

Маршруты:

$route['main/register'] = 'main/register';
$route['default_controller'] = 'main';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Htaccess:

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

Весь приведенный выше код относится к моей странице регистрации / связанным функциям, у меня несколько эти ошибки в моей системе в настоящее время, но все они, кажется, то же самое, я решил, что решение одной может решить и остальные.

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Я не знаю точную причину вашей проблемы, но должно работать следующее решение.

Удалить

echo form_open('main/register');

строку и добавить

echo "<form action='' method='post' >";

( оставьте атрибут действия пустым, чтобы он отправлял данные на текущую страницу)

Удалить

$route['main/register'] = 'main/register';

строка.

Дополнительные предложения: Дон не используйте md5(), потому что это не безопасно. Вместо этого используйте password_ha sh () .

0 голосов
/ 29 марта 2020

Попробуйте удалить маршрут $route['main/register'] = 'main/register';. Также передайте метод POST в форму. И имена полей ввода не совпадают как в контроллере, так и в модели.


Редактировать:

Действие формы должно быть полным URL-
echo form_open(base_url()."/controllername/mehod"); В вашем случае это должно быть echo form_open(base_url()."/main/register");

Если вы не установили base_url, тогда

Шаг 1 : Откройте файл конфигурации. php в application \ config folder

шаг 2 : установите значение $ config ['base_url'] для пути вашего сайта

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

Это должно помочь. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...