сохранение введенного значения на уровне is, если форма отправлена с помощью codeigniter

#php #html #codeigniter

#php #HTML #codeigniter

Вопрос:

Это моя форма входа в систему:

      <div class="form-container">
        <h1 style="text-align:left">Login Here!</h1><br>
        <form class="form-horizontal" action="<?php echo base_url(); ?>index.php/User_Authentication_Controller/login_user" method="POST">
          <div class="error_msg1"></div>
          <input autofocus="autofocus" type="text" name="txt_login_username" class="form-control" placeholder="Username.."/><div class="error_msg2"></div>
          <input type="password" name="txt_login_password" class="form-control" placeholder="Password.." /><div class="error_msg3"></div>
          <center><button class="btn btn-info" type="submit">Login</button><br/><br/>
          <a href="<?php echo base_url();?>index.php/Pages_Controller/show_forgotpassword">Forgot Password?</a></center>
        </form>
    </div>
  

Это мой контроллер:

 public function login_user(){
    $username = $this->input->post('txt_login_username');
    $password = md5($this->input->post('txt_login_password'));
    $result=$this->LogIn_Model->login($username,$password);

    if (!empty($username) amp;amp; !empty($password)) {
    if($result!=null){
        $_SESSION["username"] = $username;
        $_SESSION["id"] = $result["0"]["Account_no"];
        $_SESSION["Usertype"] = $result["0"]["Usertype"];
        if($result["0"]["Status"] == 1){
            if($result["0"]["Usertype"] == 0){
                redirect('User_Authentication_Controller');
            }
            else if($result["0"]["Usertype"] == 1){
                redirect('Pages_Controller/show_adminpage/');           
            }
        }
        else if($result["0"]["Status"] == 0){
            redirect('User_Authentication_Controller');             
        }
    }
    else{
        redirect('User_Authentication_Controller');
    }
   }
   else{
        redirect('User_Authentication_Controller'); 
   } 

}
  

Это действительно работает!

Теперь мой вопрос:

Как вы видите в else if($result["0"]["Status"] == 0){} , все, что я хочу, это чтобы после отправки страницы она перенаправлялась обратно на логин, и я хочу, чтобы

    <div class="error_msg1"></div>
  

отобразит сообщение об ошибке «Ваша учетная запись деактивирована администратором», и если он введет имя пользователя, оно останется неизменным при его отправке! как я это сделаю? Если он вводит имя пользователя: Michael и вводит неправильный пароль, я хочу, чтобы имя пользователя: Michael оставалось неподвижным! Как я это сделаю после отправки формы?

Ответ №1:

вы можете использовать set_userdata для сохранения сообщения об ошибке и может отображать: в вашем контроллере:

 else if($result["0"]["Status"] == 0){
$this->session->set_flashdata('error_msg1','Some Error Msg!'); 
}
  

и, по вашему мнению:

 <?php if($this->session->flashdata('error_msg1')) : ?>
<div class="alert alert-success">
    <span class="alert-rr">
        <i class="fa fa-check-circle" aria-hidden="true"></i>
    </span>
    <span class="alert-msg">
        <?php echo $this->session->flashdata('error_msg1'); ?>
    </span>
</div>
<?php endif; ?>
  

Ответ №2:

Способ 1

Используйте AJAX вместо form . Ваш js отправляет сообщение ajax на ваш сервер, а затем получает результат. В зависимости от этого ваш js реагирует, например, показывая сообщения об ошибках. Это хороший выбор.

Способ 2

Например, вы можете установить $_SESSION['ShowErrorMsg1']=true в login_user, затем на вашей странице входа в php просто скажите:

.

 if(isset($_SESSION['ShowErrorMsg1']) amp;amp; $_SESSION['ShowErrorMsg1']==true){
    echo '<div class="error_msg1"></div>';
}
  

затем будет показано сообщение об ошибке msg.

Обновить:

Основная идея заключается в том, что вы можете хранить все , что хотите, чтобы передавать это с одного php на другой php $_SESSION . Если вы хотите передать $msg_content , например, просто используйте $_SESSION['somekey']=$msg_content; in one php. Затем в другом php используйте $_SESSION['somekey'] who хранит данные $msg_content .

Комментарии:

1. Мне нравится другой способ, потому что я еще не знаю, как использовать AJax! но мой вопрос в том, как я получу error_msg1? bcoz это в классе, и если я изменю класс на name, я все равно не смогу получить значение bcoz тип не является вводом, это div! как мне поместить это в login_user?

2. Спасибо, приятель! теперь я действительно понимаю! $ _SESSION — очень полезный человек! Большое вам спасибо!