2012-08-31 4 views
1

Проблема 1) Я установил зону регистрации/входа и проверил все (включая пустые поля) и ударил стену при отображении сообщения об ошибке, если имя пользователя и/или пароль неверны. На данный момент я могу получить сообщение об ошибке для отображения, если поля оставлены пустыми, но при отправке перенаправлений страницы на «личную страницу» либо с правильными, либо с неправильными данными пользователя. Это мой текущий код:Codeigniter, пароль или имя пользователя неверное сообщение (проверка базы данных)

Выпуск 1 (ПОСТАНОВИЛИ):

Контроллер:

//This method will have the credentials validation 
    public function credentials_validation() { 
     $data['error'] ="Invalid Username or Password"; 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_username_check'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_password_check'); 

      if($this->form_validation->run() == FALSE) 
      { 
      //Field validation failed. User redirected to login page 
      $this->index(); 

      }else{ 
       $this->load->model('register_model'); 

       if($query = $this->register_model->validate()) { 
       $this->load->model('news_model'); 

       $data = array('news' => $this->news_model->getArticle()); 
       $data['title'] = 'Admin | Home'; 
       $data['heading'] = 'News Articles'; 
       $data['main_content'] = 'admin/news'; 
       $this->load->view('include/template', $data); 

       }else { 
       $this->load->view('login',$data); 
       }  

      } 
    } 

Выпуск 2) Новости Статья Страница загружается только 1 статьи и URL отображает имя класса.

Новости Контроллер:

class News extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('admin/news_model'); 
    } 

    public function index() { 
     $data = array('news' => $this->news_model->getArticle()); 
     $data['title'] = 'Admin | News Home'; 
     $data['heading'] = 'News Articles'; 
     $this->load->view('admin/news', $data); 
} 

}

Известие модель просто потянув таблицу базы данных, выбрать все, и порядок по идентификатору и в результате в массиве. У кого-нибудь есть идеи, почему это только показывает 1 результат? Я думаю, что это связано с методом foreach?

PS, никаких сообщений об ошибках, отображаемых в журнале ошибок CI или php!

+0

Кроме того, я думаю, что, так как ответ ниже решить оригинальный вопрос, который вы должны принять этот ответ и поставить новый вопрос в качестве отдельного вопрос. Для меня помогает вам игра, и я зарабатываю очки. Если мой ответ решит вашу проблему, но если вы не отметите это как ответ, вы не дадите мне заработать очки ... и это не мотивирует меня играть в эту «игру» –

ответ

5

Лучшим способом было бы сохранить сообщения об ошибках в массиве, например.

$data['error'] ="Invalid Login"; 

Например, в контроллере

if($query = $this->register_model->check_membership()) { 
    $data['main_content'] = 'signup_successful'; 
    $this->load->view('include/template', $data); 

}else { 
    $data["error"]="Invalid User Id and Password combination"; 
    $this->load->view('signup',$data); 
} 

check_membership функция должна проверить, является ли в порядке или нет Логин ID и пароля.

А затем на странице signup вида, что-то на вершине, как

if (isset($error)){ 
    echo "<div class='error'>$error</div>"; 
} 
+0

Я принял ваш совет, и это, похоже, работает с использованием массив (ура). Теперь, когда пользователь пытается войти в систему, используя неправильное имя пользователя или пароль, на странице входа в систему отображается сообщение об ошибке, и при правильном обращении к странице новостей администратора. Однако другая проблема появилась и только показывает 1 новостную статью (результат в методе метода массивных объектов) вместо отображения всех (без ограничения), а url отображает имя класса «credentials_validation», любые идеи, как решить эту проблему? Я добавлю свой код в свой оригинальный пост, который теперь работает для вас, чтобы увидеть, используя ваш метод, еще раз спасибо! – Shimsham84

+0

Попробуйте это ($ this-> db-> last_query()); сразу после вызова метода select из вашей модели. то есть $ data = array ('news' => $ this-> news_model-> getArticle()); echo ($ this-> db-> last_query()); Это покажет вам, что такое SQL Query Или enable_profiler - true (Google для него или Check CI Documentation), в вашем контроллере. Это расскажет вам, что происходит с вашим кодом за сценой. Это может дать вам представление о том, почему у вас есть только одна запись. –

Смежные вопросы