2017-12-04 18 views
0

初心者はcodeigniterで、一部のオンラインvediosを参照して簡単なログインフォームを作成しようとしています。私はすべてをやった。しかし私がログインしようとすると404ページが見つかりませんでした。私はこの404ページが見つかりません - codeigniterログイン

autoload.phpをfinshにお役立てください

$autoload['libraries'] = array('database','session'); 

routes.phpの

$route['default_controller'] = 'welcome'; 

コントローラ

welcome.php

<?php defined('BASEPATH') OR exit('No direct script access allowed'); 
class Welcome extends CI_Controller { 


public function __construct(){ 

    parent::__construct(); 
     $this->load->helper('url'); 
     $this->load->model('main_model'); 
     $this->load->library('session'); 
     $this->load->library('form_validation');} 
public function index() 
{ 
      $this->load->view('welcome_message'); 
} 


function login_user(){ 
      $this->load->view('welcome_message'); 

} function login_validation(){ 

      $this->load->library('form_validation'); 
      $this->form_validation->set_rules('username','Username','required'); 
      $this->form_validation->set_rules('password','Password','required'); 

      if($this->form_validation->run()){ 
       // true 

       $username = $this->input->post('username'); 
       $password = $this->input->post('password'); 

       // model function 
       $this->load->model('main_model'); 

       if($this->main_model->can_login($username, $password)){ 
        $session_date = array(
         'username'=> $username); 

        $this->session->set_userdata($session_date); 

        redirect(base_url() . 'main/enter'); 
       }else{ 
        $this->session->set_flashdata('error','Invalid Username and Password'); 
           redirect(base_url() . 'main/login_user'); 

       } 
      } else{ 
       //false 

       $this->login_user(); 
      }}function enter(){ 
if($this->session->userdata('username') !=''){ 
echo '<h2> Welcome - '.$this->session->userdata('username').'/<h2>'; 

} else{redirect(base_url() . 'main/login_user');}}} 

モデルクラス

function can_login($username,$password){ 
$this->db->where('UserName',$username); 
$this->db->where('Password',$password); 
    $query=$this->db->get('User'); 


    if($query->num_rows() > 0){ 

    return true; 

    } else{ 
    return false; 
    }} 

私はその上映にログインしようとするたびには、404ページ

login.php

<form method="post" action="<?php echo base_url(); ?>main/login_validation"> 
      <div class="form-group"> 
       <label>Enter Username</label> 
       <input type="text" name="username" class="form-control" /> 
       <span class="text-danger"><?php echo form_error('username'); ?></span>     
      </div> 
      <div class="form-group"> 
       <label>Enter Password</label> 
       <input type="password" name="password" class="form-control" /> 
       <span class="text-danger"><?php echo form_error('password'); ?></span> 
      </div> 
      <div class="form-group"> 
       <input type="submit" name="insert" value="Login" class="btn btn-info" /> 
       <?php 
         echo '<label class="text-danger">'.$this->session->flashdata("error").'</label>'; 
       ?> 
      </div> 
     </form> 
+0

平凡なパスワードをdbに保存しないことを願っています。 – user4419336

+0

'main'という名前のコントローラがありますか? @Solmyrの提案によると、リダイレクトのベースURLは必要ありません。ちょうどリダイレクト( 'コントローラ/機能') – Penguine

答えて

0

はこのフレームワークを使用したことがないが、私には、問題は、リダイレクトのどちらかであるようだが見つからないことメイン/コントローラ/アクションを入力します。 base_url()でvar_dump()を調べるには、クラスや定数の静的メソッドが間違っているかもしれません。 コードのどこかにセッションのユーザーデータを設定すると、main/enterに行きます。多分存在しないでしょうか?

編集:codeingniterリダイレクトがちょうどあなたのlogin_validation()方法は、あなたのWelcomeコントローラである

redirect('/main/enter'); 
0

を使用base_urを必要としないようです。したがって、formactionwelcome/login_validationで、main/login_validationではないはずです。

詳しくは、URLs in Codeigniterをお読みください。

関連する問題