制作蛋糕php验证表格以联系表格

时间:2013-09-26 12:29:05

标签: php cakephp-2.0

我想在cakephp中创建一个验证表单,我的代码形式为:

查看

<div class="well">

<?php
echo $this->Form->create(false);
echo $this->Form->input('name', array('label' => 'name '));
echo $this->Form->input('PHONE_NUMBER', array('label' => 'PHONE_NUMBER '));
echo $this->Form->input('EMAIL', array('label' => 'EMAIL '));
echo $this->Form->input('ISSUE', array('label' => 'ISSUE '));
echo $this->Form->input('IP', array('label' => 'IP '));
echo $this->Form->submit('Send.');
?>

控制器

<?php
class ContactController extends AppController {


public function index() {
    if (empty($_POST) === FALSE) {
        $message = '';
        $message .=$_POST['data']['EMAIL'] .  ' <br/>';
        $message .=$_POST['data']['name'] .  ' <br/>';
        $message .=$_POST['data']['PHONE_NUMBER'] .  ' <br/>';
        $message .=$_POST['data']['ISSUE'] .  ' <br/>';
        $message .=$_SERVER['REMOTE_ADDR'] .  ' <br/>';
        mail('mohmed@lcegy.com', 'Support From Website ', $message);
        $this->Session->setFlash("Thanks , an email just sent .");
    }

}

}

我的问题是如何在此表单中实现验证以及如何获取访问者的IP地址?

3 个答案:

答案 0 :(得分:0)

您可以通过设置规则从您的模型进行验证

 public $validate =

   array(
          'Email' => array
      (
        'rule' => 'notempty'

       ),

);

答案 1 :(得分:0)

您可能希望更新index()函数以查找类似于此的内容:我认为它更像是cakePHP约定。

public function index() {
    if ($this->request->is('post')) {
        $message = '';
        $message = $this->request->data['EMAIL'];
        ...
    }
}

要进行验证,您可以将其添加到模型中。你可以做类似的事情:

public $validate = array(
    'EMAIL' => 'email',
    'name' => array(
        'rule' => 'alphaNumeric',
        'required' => true
      )
);

有关更多验证,您可以查看文档:{​​{3}}

您可以使用$ _SERVER ['REMOTE_ADDR']来获取客户端的IP地址。

答案 2 :(得分:0)

按照上面给出的答案通过模型来做到这一点的最佳方式,但你也可以通过简单地添加属性&#34;要求&#34;来在视图页面上进行。并定义适当的类型,如电子邮件,数字。例如。在你的形式:

<?php
echo $this->Form->create(false);
echo $this->Form->input('name', array('label' => 'name ', 'required' => true));
echo $this->Form->input('PHONE_NUMBER', array('label' => 'PHONE_NUMBER ', 'required' => true,'type'=>'number'));
echo $this->Form->input('EMAIL', array('label' => 'EMAIL ', 'required' => true, 'type' => 'email'));
echo $this->Form->input('ISSUE', array('label' => 'ISSUE ', 'required' => true));
echo $this->Form->input('IP', array('label' => 'IP ', 'required' => true));
echo $this->Form->submit('Send.');
?>