1

ここ数日間、私の欲求不満は新たな高みにまで成長しました. codeigniter で単純なログイン システムを実行しようとしていますが、正しく動作させることができません。

ログインフォームを送信すると、次のエラーが表示されます。

要求された URL /wishlist/login_controller/login がこのサーバーで見つかりませんでした。

フォームは次のとおりです。

<form method="post" action="<?php echo base_url()?>login_controller/login">
<input type="text"placeholder="E-mail" id="email" name="email">
<input type="password" placeholder="Password" id="password" name="password">
<input class="btn btn-primary span2" type="submit" id="sign-in" value="Sign In">
</form>

login_controller のログイン関数は次のとおりです。

class Login extends CI_Controller {


function login() {

    $data['error'] = 0;

    if ($_POST) {

        $this->load->model('user_model');
        $email = $this->input->post('email', true);
        $password = $this->input->post('password', true);
        $user = $this->user_model->login($email, $password);

        if (!$user) {
            $data['error'] = 1;
        } else {
            $this->session->set_userdata('userID', $user['userID']);
            $this->session->set_userdata('firstname',    $user['firstname']);

            redirect(base_url().'admin_controller');

        }
    }

    $this->load->view('home_view');
}

ローカルホストで wampserver を使用しています。アクセスしようとする URL は次のとおりです: localhost/wishlist/login_controller/login

base_url() の後の最初の部分がコントローラーで、2 番目の部分がそのコントローラーの関数であると仮定するのは正しいですか?

config フォルダーからのいくつかの設定。

$config['base_url'] = '';
$config['index_page'] = 'index.php';
$route['default_controller'] = "site_controller";
4

4 に答える 4

3

コントローラの名前を から変更してください

class Login extends CI_Controller {

class Login_Controller extends CI_Controller {

それからあなたはすることができます

<form method="post" action="<?php echo site_url('login_controller/login'); ?>">
<input type="text"placeholder="E-mail" id="email" name="email">
<input type="password" placeholder="Password" id="password" name="password">
<input class="btn btn-primary span2" type="submit" id="sign-in" value="Sign In">
</form>

次にこれを使用します:

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

およびhtacees:

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

十分でない場合は、次の行で config.php ファイルを切り替えます。

| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of 'AUTO' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

私は AUTO を使用します。QUERY_STRING または REQUEST_URI オプションが必要かもしれません

于 2012-11-24T17:44:28.530 に答える
1

同時に2つの問題があります。

  1. フォームは「login_controller」を指していますが、コントローラーは「login」と呼ばれています(これはすでに回答済みです)。

  2. コントローラと同じ名前のメソッドを使用しないでください。

    このようなメソッド(クラスが名前空間内にある場合を除きますが、CodeIgniterの場合はそうではありません)は、クラスコンストラクターとして実行されます。

于 2012-11-24T18:51:41.723 に答える
1

そのメソッドをコンストラクターとして使用していない場合、クラスとメソッドに同じ名前を使用するのは正しくないため、 login() メソッドを user_login のようなものに変更します。

このようにあなたのURLにアクセスしてみてください

http://localhost/wishlist/index.php/login/user_login

stting を変更せず、htaccess ファイルを追加していないため、コードは通常どおりアクセス可能である必要があるため、codeiginter は次のような URL にアクセスするパターンを持っています。

http://localhost/folder_name/index.php/controller_name/method_name

アクセスURLが正しくないようです。

于 2012-11-24T18:04:37.910 に答える
0

action="<?php echo base_url()?>login_controller/login">コントローラーの名前が"login"andのときに呼び出しますmethod "login"

呼び出し base_url('login/login'); て、必ずbase_urlinconfig.phpに設定する必要があります。index_page が設定されています。

持ってい.htaccessない可能性があります。電話する必要があります。mysite.com/index.php/login/login/

于 2012-11-24T18:07:52.637 に答える