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>空のaがaction=""同じページにフォームを送信することをご存知ですか?したがって、同じページの場合は、属性を空にするだけです。

編集:アクションを空のままにすることは仕様では許可されていませんが(ここuri_string()に表示されているように)、現在のURLに使用できます。


ルーティング(ドキュメント)に基づいて同じページにリダイレクトされることがわかっているURLを入力することもできます。


ルーティングに満足している場合は、ビューでルートを使用するのに役立つこの逆ルーティングクラスを試すことができます。

于 2012-12-04T18:33:05.473 に答える