CakePHP联系方式
我在我的网站上使用CakePHP构建了一个联系人表单。控制器逻辑如下所示:CakePHP联系方式,php,cakephp,Php,Cakephp,我在我的网站上使用CakePHP构建了一个联系人表单。控制器逻辑如下所示: <?php class ContactController extends AppController { var $helpers = array ('Html','Form'); var $components = array ('Email','RequestHandler'); var $name = 'Contact'; function beforeFilter(
<?php
class ContactController extends AppController
{
var $helpers = array ('Html','Form');
var $components = array ('Email','RequestHandler');
var $name = 'Contact';
function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allow(array('*'));
}
function index()
{
if ($this->RequestHandler->isPost())
{
$this->Contact->set($this->data);
if ($this->Contact->validates())
{
$this->Email->to = '###';
$this->Email->subject = 'Contact message from ' . $this->data['Contact']['name'];
$this->Email->from = $this->data['Contact']['email'];
$this->Email->send($this->data['Contact']['message']);
$this->render('success');
}
}
}
}
?>
我想做的是,当用户提交表单时,显示另一个视图文件,例如success.ctp
,但发生的情况是,即使他们有一个新视图,他们也可以刷新页面并一次又一次地发送数据。我该怎么阻止这个
有人能帮忙吗?谢谢处理完他们的表单数据后,将他们重定向到同一联系人页面(以避免刷新问题) 如果您不知道,可以设置Flash以显示成功消息。但是,如果您想以您想要的方式对其进行自定义,您可以向会话写入一个变量来向视图发送信号 并且认为:
处理他们的表单数据后,将他们重定向到同一联系人页面(以避免刷新问题) 如果您不知道,可以设置Flash以显示成功消息。但是,如果您想以您想要的方式对其进行自定义,您可以向会话写入一个变量来向视图发送信号 并且认为:
您可以尝试在不到五分钟前通过已发布的电子邮件查找计数,或者弹出一条会话快闪消息,如“抱歉,您只能每x分钟发布一次”
$this->Contact->find('count',array(
'conditions'=>array(
'email'=>$this->data['Contact'] ['email'],
'created <'=>date("Y-m-d H:i:s", strtotime('-5 minutes)));
$this->Contact->find('count',数组(
“条件”=>数组(
'email'=>$this->data['Contact']['email'],
'创建您可以尝试在不到五分钟前通过已发布的电子邮件查找计数,或者弹出一条会话快闪消息,如'抱歉,您只能每x分钟发布一次'
$this->Contact->find('count',array(
'conditions'=>array(
'email'=>$this->data['Contact'] ['email'],
'created <'=>date("Y-m-d H:i:s", strtotime('-5 minutes)));
$this->Contact->find('count',数组(
“条件”=>数组(
'email'=>$this->data['Contact']['email'],
'创建以避免发送超过一个时间位置会话值的消息,并根据是否放置该会话值检查要渲染的视图。
e、 g.在您的电子邮件发送代码中添加$this->Session->write('sent',1);
渲染时:if($this->Session->check('sent'))$this->render('common_view');else$this->render('alternate_view');
请确保在通过$this->redirect()
将电子邮件发送到页面本身后,页面被重定向,以避免发送超过一次的消息-放置会话值,并根据是否放置该会话值检查要呈现的视图。
e、 g.在您的电子邮件发送代码中添加$this->Session->write('sent',1);
渲染时:if($this->Session->check('sent'))$this->render('common_view');else$this->render('alternate_view');
请确保在通过$this->redirect()将电子邮件发送到页面本身后,页面被重定向
您好,我希望在同一页面上向用户显示备用视图,而不是重定向它们。但我不确定如何防止用户在刷新数据时再次发送数据?Cheers Internative view?因此您可能希望使用$this->render('alternative_view'))?关于刷新,它与第一个视图的显示方式有关。因此,请先确定您希望如何显示备用视图,然后我将回答第二个视图,以避免混淆。是的,我已完成渲染,因此现在我收到一条消息,感谢您的电子邮件(请参阅操作代码)但是,如果用户进行刷新,它将重新发送数据!我根本不知道如何修复此问题?Thankshm..如果您呈现另一个视图,刷新不太可能出现问题,除非您在success.ctp中包含相同的表单。如果是这种情况,只需在$this->render('success')之前设置$this->data=array();表单不再在页面上,因为它是一个全新的视图。它再次发送数据的原因是因为它存储在会话中或其他地方,并且它使用相同的控制器操作。并添加$this->data=array()
如果用户刷新页面,仍然会发送数据。您好,我更愿意在同一页面上向用户显示备用视图,而不是重定向它们。但我不确定如何防止用户在刷新后再次发送数据?CheeralInternative view?因此您可能希望使用$this->render('alternative_view'))?关于刷新,它与第一个视图的显示方式有关。因此,请先确定您希望如何显示备用视图,然后我将回答第二个视图,以避免混淆。是的,我已完成渲染,因此现在我收到一条消息,感谢您的电子邮件(请参阅操作代码)但是,如果用户进行刷新,它将重新发送数据!我根本不知道如何修复此问题?Thankshm..如果您呈现另一个视图,刷新不太可能出现问题,除非您在success.ctp中包含相同的表单。如果是这种情况,只需在$this->render('success')之前设置$this->data=array();表单不再在页面上,因为它是一个全新的视图。它再次发送数据的原因是因为它存储在会话或其他地方,并且它使用相同的控制器操作。添加$this->data=array();
在用户刷新页面时仍然发送数据。
$this->Contact->find('count',array(
'conditions'=>array(
'email'=>$this->data['Contact'] ['email'],
'created <'=>date("Y-m-d H:i:s", strtotime('-5 minutes)));