CodeIgniter设置消息和插入时间错误

4
我是一位有用的助手,可以为您翻译文本。
我有两个问题需要解决。首先,我有这个小函数。
if(!$verified) {
            $this->db->trans_rollback();
            $this->form_validation->set_message('token_expired', 'Token expired try again.');
            $this->load->view('header');
            $this->load->view('forgot_password_view');
            $this->load->view('footer');
            }

我只粘贴了必要的代码,所以当验证失败时,我希望在忘记密码页面上加载设置消息,但问题是我正在使用该页面来处理其他验证错误,并且如果此函数不起作用,我也希望显示此消息。以下是视图。
<div class="well">
        <?php echo validation_errors(); ?>
        <?php 
        if(validation_errors() != false) 
        { 
            echo '<div class="form-group alert alert-danger has-error">';
                echo'<ul>';
                    echo validation_errors('<li class="control-label">', '</li>');
                echo'</ul>';
            echo '</div>';   
        }

        ?>
        <?php echo form_open('login/reset_password'); ?>
        <h1>Forgot your password?</h1>
        <p>Please enter your email address so we will send you a link to change your password</p>
        <div class="<?php if(form_error('email')!= null){echo ' has-error';} ?>">
        <input  name="email" style="width: 20%" class="form-control" type="email" placeholder="Enter your email Address"/>
        <button style="margin-top:20px;" class="btn btn-default" type="submit" name="submit">Submit</button>
    </div>
    </div>

我以为第一个echo validation_errors可以处理token_expired,但当然不起作用,第二个验证在检查电子邮件是否经过验证时有效。

我的第二个问题是,我有一个函数可以插入当前时间+15分钟,它可以工作。我在赫尔辛基/芬兰,所以我这样使用它。

 function __construct(){
        parent::__construct();
        date_default_timezone_set('Europe/Helsinki');

在函数中,它的内容是......

$data = array(
         'expiration' => date("Y-m-d h:i:s", strtotime("+15 minutes")),
         );

但问题在于它一直正常工作到中午12点,但当它是下午1点时,它应该显示13:15:00,但它显示01:15:00,因此需要修复该问题。


date("Y-m-d H:i:s", strtotime("+15 minutes")), - Praveen Kumar
@PraveenKumar 谢谢你的回答 :D ,你能帮我解决另一个问题吗? - XAF
标记我的下面的答案并开始吧.. :) - Praveen Kumar
@PraveenKumar,另一个问题也写在帖子上了,是验证错误,请帮我解决另一个问题,这样我就可以标记两个答案 :) - XAF
检查一下...添加了一些代码... - Praveen Kumar
1个回答

3

您不能在提交表单之前设置表单验证消息,而是应该将变量传递到视图中。

if(!$verified) 
{
    $this->db->trans_rollback();
    $message['token_expired']= 'Token expired try again.';//(token_expired)?'Token expired try again.':'';
    $this->load->view('header');
    $this->load->view('forgot_password_view', $message);
    $this->load->view('footer');
}

而且从以下角度看

if(isset($token_expired) && $token_expired != '') 
{  
    echo $token_expired;
}

针对您的第二个问题

$data = array(
             'expiration' => date("Y-m-d H:i:s", strtotime("+15 minutes")),
             );

我明白你的意思,但问题是该视图通常用作为忘记密码的人提供页面,并且如果函数运行返回false,我想将人们带回到同一页,所以现在如果我进入该页面,它会显示“Severity: Notice Message: Undefined variable: token_expired Filename: views/forgot_password_view.php Line Number: 4”。 - XAF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接