0

我正在尝试使用https://github.com/jackilyn/bootstrap-contact/将引导联系表添加到我的 codeigniter 项目中。

表格提交如下:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="contactform">

提交和验证后,以下代码用于通过电子邮件发送联系信息:

//If there is no error, send the email
    if(!isset($hasError)) {
    $emailTo = 'you@yourwebsite.com'; // Put your own email address here
    $body = "Name: $name \n\nEmail: $email \n\nPhone Number: $phone \n\nSubject: $subject \n\nComments:\n $comments";
    $headers = 'From: My Site <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

    mail($emailTo, $subject, $body, $headers);
    $emailSent = true;
}

我不喜欢 php 代码包含在页面本身中的方式,并希望将其移动到单独的控制器以确保安全。如何管理程序流程,以便在提交表单后没有错误,流程被定向到控制器,以便我可以在那里执行电子邮件代码,同时保持表单指向自身?

提前致谢,

账单

4

2 回答 2

3

嗨,请检查我已经创建了联系我们控制器并为您查看非常简单

控制器 http://scrp.at/bYk

class contact extends CI_Controller{

    function index(){

        $this->validation->rules('name','Name', 'required|trim');
        $this->validation->rules('email','Email', 'required|trim|vaild_email');
        $this->validation->rules('message','Message', 'required|trim');

        if(!$this->validation->run()){
            $this->load->view('form_view');
        }
        else{
            $this->send();  
        }

    }

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

        $input = $this->input->post();

        // will extract all variables from post array
        extract($input);

        $this->email->from($email, $name);
        $this->email->to('admin@example.com');
        //$this->email->cc('another@another-example.com');
        //$this->email->bcc('them@their-example.com');

        $this->email->subject('Email Test');
        $this->email->message($message);

        $this->email->send();

        //echo $this->email->print_debugger();

        redirect('redirect-to-thank-you');
    }

}

查看 http://scrp.at/bYl

<?
echo form_open(uri_string());
echo form_label('Name','name').form_input('name',set_value('name')).form_error('name').br();
echo form_label('Email','email').form_input('email',set_value('email')).form_error('email').br();
echo form_label('Message','message').form_textarea('message',set_value('message')).form_error('message').br();
echo form_close();
?>
于 2012-12-04T18:51:17.357 回答
1

您知道<form>带空的 aaction=""会将表单提交到同一页面吗?所以如果是同一个页面,你可以简单地让属性为空。

编辑:规范不允许将操作留空(如此处所示,但您可以将uri_string()其用于当前 url。


您还可以键入一个您知道将根据您的路由重定向到同一页面的 URL (doc)


如果您对路由感觉良好,可以试试这个反向路由类,它可以帮助您使用视图中的路由。

于 2012-12-04T18:33:05.473 回答