#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 — очень полезный человек! Большое вам спасибо!