网页有一个重定向循环

时间:2013-09-07 13:33:13

标签: php mysql codeigniter

我在这里有一个问题,那时我从这个日期预订了书籍(例如2013年7月9日作为保留日期和09/11/2013作为到期日期)。要检查它是否被没收,我注销然后将我的日历日期更改为09/11/2013,然后当我刷新login.form时,它说网页有一个重定向循环。

<?php

class Login extends CI_Controller{

function index()
{
    $this->load->model('admin/confirmation_model');
    $data['confirmation'] = $this->confirmation_model->getConfirm();
    $data['main_content'] = 'login_form';
    $this->load->view('includes/template', $data);  

}
//added function update
function update($isbn){
    $statuses = 'Forfeited';
    $data = array(
        'status' => $statuses
    );

    $this->db->where('isbn',$isbn);
    $this->db->update('reserved_dummy',$data);

    $sql = 'update books set stock=stock+1 where isbn=?';
    $this->db->query($sql, $isbn);
    redirect('login');
}

这是我的观点:

<?php $date = date('m/d/Y'); 
      $tomorrow = date('m/d/Y',strtotime($date)); 
      if ($confirmation) { 
        foreach($confirmation as $r) { 
           if (date('m/d/Y',strtotime($r->date_expire . "+1 days")) == $tomorrow && $r->status != 'forfeited') { 
              redirect('login/update/'.$r->isbn,'location'); 
           } 
         } 
      } 
?>

1 个答案:

答案 0 :(得分:1)

我认为这个问题可能与你使用“美国式”日期(月/日)有关。这是一种非常模糊的计算机格式。尝试以下操作,看看会发生什么。

将所有date('m/d/Y')更改为date('Y-m-d')

原因;因为当你将'09/08/2013'传递给strtotime()时,PHP会做出“猜测”。猜测的原因?几乎只有美国人以m/d/Y格式阅读他们的日期。例如,我将此日期视为 2013年8月9日,但美国人会说这是 2013年9月8日

如果您将'2013-09-08'传递给strtotime(),则不会产生混淆,因为它总是被解释为'Y-m-d'格式。