2011-03-31 24 views
0

这是我在codeigniter控制器中使用的代码,这似乎不适合我。 contact.php =控制器论坛提交CodeIgniter的限时?

function send() 
{ 
$this->load->library('session'); 

$this->session->set_userdata('lastsent', microtime()); 

if(microtime() >= $this->session->userdata('lastsent') + 60000000) 
{ 
// here I have all my send email code, that works. 
... 
$data['message'] = 'Email was sent, thank you.'; 
$this->load->view('contact', $data); 
} 
else 
{ 
$data['message'] = 'Please wait 60 seconds.'; 
$this->load->view('contact', $data); 
} //timeout check 

} //send() 
+1

我不知道这是你说的问题,但'set_uesrdata'应该接收2个参数:'$ this-> session-> set_userdata('some_name','some_value');''或数组 – BigFatBaby 2011-03-31 13:02:54

回答

1

你忘了在会话中添加数据:

$this->session->set_userdata('lastsent', 'Your data here'); 

如:

$this->session->set_userdata('lastsent', microtime()); 

编辑:使用time(),而不是microtime()尝试(microtime中是不支持无处不在,时间是) 函数send()

{ 
    $this->load->library('session'); 

    $this->session->set_userdata('lastsent', time()); 

    if(time() >= $this->session->userdata('lastsent') + 60) 
    { 

     $data['message'] = 'Email was sent, thank you.'; 
     $this->load->view('contact', $data); 
    } 
    else 
    { 
     $data['message'] = 'Please wait 60 seconds.'; 
     $this->load->view('contact', $data); 
    } 

} 
+0

是的你是对的,它缺少microtime()。但是,当我使用该代码时,它仍然不会发送任何电子邮件。不使用时间限制检查它的工作原理很好。 – EMC 2011-03-31 13:04:38