Php Codeigniter闪存数据未删除
我的代码实际上没有删除。我正在检查$user\u id变量是true还是false。如果为true,则用户登录并重定向,如果为false,则创建显示未登录的闪存数据。Php Codeigniter闪存数据未删除,php,database,codeigniter,codeigniter-3,Php,Database,Codeigniter,Codeigniter 3,我的代码实际上没有删除。我正在检查$user\u id变量是true还是false。如果为true,则用户登录并重定向,如果为false,则创建显示未登录的闪存数据。 问题是,一旦创建的闪存数据没有消失,我就在$user\u id变量中返回模型中的行数 $user_id = $this->login_model->login($email,$password); if($user_id == true){ $user_data = array("user_id"=>
问题是,一旦创建的闪存数据没有消失,我就在$user\u id变量中返回模型中的行数
$user_id = $this->login_model->login($email,$password);
if($user_id == true){
$user_data = array("user_id"=>$user_id,"email"=>$email,"loggedin"=>true);
$this->session->set_userdata($user_data);
$this->session->set_flashdata('login_success','You Are Now Logged In');
redirect('dashboard');
}else{
$this->session->set_flashdata('login_failed','Email Or Password Is Incorrect');
}
这是我的型号代码:
$query =$this->db->where('email',$email);
$query =$this->db->where('password',$password);
$result = $this->db->get('users');
if($result->num_rows() == 1){
return $result->row(0)->id;
}else{
return false;
}
为了使
flash_数据
消失或褪色,您需要为此创建一个脚本
使用此选项可消除您的闪存数据
setInterval(function()
{
$('#flash_data').fadeOut('slow');
}, 3000);
设置间隔,然后在html代码中执行此操作
<?php if(($this->session->flashdata('name')=='Hello, I am Flash Data')){?>
<div class="alert alert-info alert-dismissible fade in" role="alert" id="flash_data"> //set your id here
<i class="glyphicon glyphicon-ok"></i> <?php echo $this->session->flashdata('notif'); ?>
</div>
<?php } ?>
//在这里设置您的id
希望有帮助:)步骤01 在您传递的模型中
return$result->row(0)->id
并检查是否($user\u id==true){
。它永远不会进入funtionboolen!=Intiger
setInterval(function()
{
$('#flash_data').fadeOut('slow');
}, 3000);
替换这个
if($user_id == true){
对此
if($user_id != false){
步骤02 在控制器
if和else中有两种方法。只有一种方法是用
重定向定义的`
if($user_id == true){ # Must change accroding to step 01
$this->session->set_flashdata('login_success','You Are Now Logged In');
redirect('dashboard');
}else{
$this->session->set_flashdata('login_failed','Email Or Password Is Incorrect');
# missing ??? Maybe redirect('login');
}
添加重定向
到登录
路由,这将起作用
闪存数据只能使用一次
闪存数据可用于浏览器刷新
使用jQuery删除数据
<script>
setTimeout(function () {
$("#div_id").hide();
}, 4000);
</script>
setTimeout(函数(){
$(“#div_id”).hide();
}, 4000);
如果您仍然找到解决方案,可以尝试我的解决方案
在身体上添加onload js函数
<body onload="clearme();">
在开始之前在底部添加js脚本
<script type="text/javascript">
function clearme() {
<?php
if (isset($_SESSION['msg_success'])):
unset($_SESSION['msg_success']);
elseif (isset($_SESSION['msg_error'])):
unset($_SESSION['msg_error']);
endif;
?>
}
</script>
函数clearme(){
}
每次加载新控制器时,它都会清除您的flashdata会话。这对我来说是可行的,因为您的问题以前也是我的噩梦。模型代码与您的问题无关。您如何显示flashdata?可能是重复的,您可以尝试此问题中给出的一些解决方案。它们应该可以工作。显示您的查看页面Hi actually我有一个问题我发现我在同一页上使用表单操作,这就是为什么它会导致这个错误,因为flash数据不断出现。你能帮我解决这个问题吗?如果($this->session->flashdata('login_success')){echo$this->session->flashdata('login_success');}elseif($this->session->flashdata('login_failed')){echo$this->session->flashdata('login_failed');}添加您的问题并添加表单。我通过在另一个页面上更改操作action=“login/login_check”解决了这个问题,但是您能告诉我一种方法,通过这种方法,我可以在同一页面上显示错误,就像在core php if中一样(isset($_POST[''submit])){echo error?>为什么要用javascript包装PHP代码?虽然在语法上是有效的,但它没有语义关系,不会通过调用clearme()来执行
。相反,PHP将在呈现页面时执行代码,而不管任何javascriptIt是否工作,因为您在页面加载时执行PHP代码。没有理由使用任何javascript或onload调用。