Php 如何避免在显示一次后刷新时更改日期时间?

Php 如何避免在显示一次后刷新时更改日期时间?,php,codeigniter,datetime,Php,Codeigniter,Datetime,我有一个函数,可以获取当前日期时间,并在控制器中为其添加30分钟。我将数据发送到视图中并显示它 控制器 public function index(){ $data['time'] = $this->set_time(); $this->load->view('templates/location_header'); $this->load->view('pages/confirmation', $data); $this->load->view('t

我有一个函数,可以获取当前日期时间,并在控制器中为其添加30分钟。我将数据发送到视图中并显示它

控制器

public function index(){
$data['time'] = $this->set_time();

$this->load->view('templates/location_header');
$this->load->view('pages/confirmation', $data);
$this->load->view('templates/footer');
}

public function set_time(){
date_default_timezone_set('Asia/Colombo');
$time = date('Y-m-d H:i', strtotime('+30 minute'));

    return $time;
}
看法

您的订单将在以下时间到达:
我的问题是,我是否可以将视图中显示的日期/时间设置为固定的,以便每当我刷新时,它都将保持在返回的原始日期/时间? 例如,当我第一次加载页面时,返回的日期/时间是
2020/11/09 10:30
。 如果我在5分钟内再次刷新页面,我如何保持时间
2020/11/09 10:30
而不是获取
2020/11/09 10:35


谢谢。

首先,您需要将这一行添加到php文件的第一行以使用会话

session_start();
然后您可以这样使用会话

公共功能索引(){
$data['time']=$this->set_time();
$this->load->view('templates/location_header');
$this->load->view('页面/确认',$data);
$this->load->view('templates/footer');
}
公共函数集_time(){
日期默认时区设置(“亚洲/科伦坡”);
$time=日期('Y-m-d H:i',标准时间('+30分钟');
$\会话['time']=$time;
$\u SESSION['start']=time();//现在使用登录时间。
//从开始时间起30分钟内结束会话。
$_会话['expire']=$_会话['start']+(30*60);
返回$time;
}
在你看来,这样做吧

您的订单将在以下时间到达:
您还可以通过更改“(30*60)”来更改希望成为持久化的时间


我希望我的解决方案能解决您的问题

首先,您需要将这一行添加到php文件的第一行,以使用会话

session_start();
然后您可以这样使用会话

公共功能索引(){
$data['time']=$this->set_time();
$this->load->view('templates/location_header');
$this->load->view('页面/确认',$data);
$this->load->view('templates/footer');
}
公共函数集_time(){
日期默认时区设置(“亚洲/科伦坡”);
$time=日期('Y-m-d H:i',标准时间('+30分钟');
$\会话['time']=$time;
$\u SESSION['start']=time();//现在使用登录时间。
//从开始时间起30分钟内结束会话。
$_会话['expire']=$_会话['start']+(30*60);
返回$time;
}
在你看来,这样做吧

您的订单将在以下时间到达:
您还可以通过更改“(30*60)”来更改希望成为持久化的时间


我希望我的解决方案能解决您的问题

首先在控制器中,在PHP的第一行启动会话:
session_start()

然后将数据存储在会话中,如:

if( empty($_SESSION['time']) ) {

  $_SESSION['time'] = date('Y-m-d H:i');

}

然后在您的视图中显示如下内容:
<h5><?php echo $_SESSION['time']; ?></h5>




首先在控制器的第一行PHP开始会话:
session_start()

然后将数据存储在会话中,如:

if( empty($_SESSION['time']) ) {

  $_SESSION['time'] = date('Y-m-d H:i');

}

然后在您的视图中显示如下内容:
<h5><?php echo $_SESSION['time']; ?></h5>




您真正的问题是-如何使变量在页面间持久化?答案是使用会话。因此,请阅读如何使用CI会话。您可以使用@TimBrownlaw所述的会话,或者,如果此时间不依赖于会话,但与订单相关,则可以将未来日期与其他订单数据一起保存到数据库中。你的具体情况是什么?时间实际上与订单有关。即使我使用会话,当我手动重新加载页面时,该值仍会更改。重新加载只是出于测试目的,因为没有自动刷新页面。我只是想确定最初的日期。我觉得如果没有其他方法,保存到数据库将是最好的选择。谢谢你你真正的问题是-我怎样才能使变量在页面间持久化?答案是使用会话。因此,请阅读如何使用CI会话。您可以使用@TimBrownlaw所述的会话,或者,如果此时间不依赖于会话,但与订单相关,则可以将未来日期与其他订单数据一起保存到数据库中。你的具体情况是什么?时间实际上与订单有关。即使我使用会话,当我手动重新加载页面时,该值仍会更改。重新加载只是出于测试目的,因为没有自动刷新页面。我只是想确定最初的日期。我觉得如果没有其他方法,保存到数据库将是最好的选择。感谢您使用
会话\u start()
(以及任何非本机Codeigniter会话管理的内容)并不是一个好主意。虽然本质上你的建议是合理的,但我会使用codeigniter的会话库来避免问题我的实现是在不使用任何全局变量的情况下完成的,并且会话已经用于显示购物车,尽管我很欣赏使用
session\u start()这不是个好主意。虽然本质上你的建议是合理的,但我会使用codeigniter的会话库来避免问题。我的实现是在不使用任何全局变量的情况下完成的,并且会话已经用于显示购物车,尽管我很欣赏答案