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 地址?

4

3 回答 3

0

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

 public $validate =

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

       ),

);
于 2013-09-26T13:18:24.240 回答
0

按照上面给出的答案按模型执行此操作的最佳方法,但您也可以在视图页面上执行此操作,只需添加属性“require”并定义适当的类型,如电子邮件、数字。例如。以您的形式:

<?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.');
?>
于 2014-11-21T03:48:13.263 回答
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
      )
);

如需更多验证,您可以查看文档:http ://book.cakephp.org/2.0/en/models/data-validation.html

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

于 2013-09-26T13:28:25.283 回答