CakePHP强制键入URL

时间:2015-01-09 07:35:41

标签: url cakephp redirect

好的,我有一个网页应用程序,其页面名称为“联系我们”。就像所有联系我们页面一样。输入字段为:姓名,学校/公司,电子邮件,消息。

因此,一旦用户填写了所有必需的信息并点击了提交,他/她将被重定向到新页面,此页面只是一条消息“消息已发送”或“消息发送失败”。

我们说这是用户点击提交按钮时的URL:localhost / appname / controller / messagesent

在其他网站中,如果您尝试键入邮件页面的网址,则无法访问该网址。

所以我希望只有在点击提交按钮时才能访问'messagesent'页面。但是,如果由于某种原因用户尝试通过在URL中键入来访问“messagesent”页面,他/她将被重定向到index.ctp。

我该怎么做?

谢谢!

编辑:

所以这是联系我们页面的部分代码:

if($this->Contact->save($data)) { 
                $this->redirect(array('controller' => 'websites', 'action' => 'messagesuccessful'));
            } else{
                    $this->redirect(array('controller' => 'websites', 'action' => 'messagefailed'));
                }

这是messagesuccessful()的代码:

if($this->request->is('post')){
            $this->layout = 'website';
        }else{
            $this->redirect(array('action' => 'index'));
        }

1 个答案:

答案 0 :(得分:0)

试试这个..

function contactus()
{
    if($this->request->is('post'))
    {
        if($this->Contact->save($data)) { 
            $this->messagesent();
        } else{
                $this->redirect(array('controller' => 'websites', 'action' => 'messagefailed'));
            }
    }
    else{
        // put the code here if you access the function directly (not posting any data)
    }
}

使其成为私人功能,因此没有人可以直接访问它。

private function messagesent()
{
    $this->render('messagesent', 'website'); 
}

它只是使用'网站'呈现您的messagesent文件。布局。确保将messagesent.ctp文件保存在views文件夹下的网站文件夹中。

谢谢..!