Cake PHP: Simple Contact Form Tutorial!
This guide provide a quick tutorial covering simple contact form for CakePHP v1.2, based on this post
Download code example here! CakePHP 1.2 Simple Contact Form.zip
1. Create the VIEW in cake/app/views/contact/contact.ctp
PHP:
-
<p><?= $success?></p>
-
<?php } else { ?>
-
<p><?= $error?></p>
-
<?}?>
-
<p>
-
</p>
-
<p>
-
</p>
-
<p>
-
</p>
-
<p>
-
</p>
-
<p>
-
All fields are required!
-
</p>
-
<?php }?>
2. Create Email COMPONENT, cake/app/controllers/components/email.php
PHP:
-
<?php
-
class EmailComponent extends Object {
-
function email($email, $name, $message) {
-
$f_mail = "name@domain.com";
-
$f_name = "WebMaster domain.com";
-
$f_message = "\nName : $name"; // start building the message
-
$f_message .= "\n\nE-mail : $email";
-
$f_message .= "\n\nMessage \n : $message";
-
$headers = "From: www.domain.com <administrator@domain.com>\n";
-
$headers .= "X-Sender: <admin @domain.com>\n";
-
$headers .= "X-Mailer: PHP\n";
-
$headers .= "Reply-To:$f_mail\n\n";
-
$subject = "Message from your website domain.com";
-
}
-
-
// this function checks to see if the email supplied by the visitor is a valid one
-
function validMail($email) {
-
$pattern = "^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$";
-
// the regex for an email addres
-
$ll = 1; else
-
$ll = 0;
-
return $ll;
-
}
-
}
-
?>
3. Create the CONTROLLER, cake/app/controllers/contact_controller.php
PHP:
-
<?php
-
class ContactController extends AppController {
-
var $name = 'Contact';
-
-
function contact() {
-
$this->pageTitle = 'Contact';
-
$email = $this->data ['Page'] ['email'];
-
$name = $this->data ['Page'] ['name'];
-
$message = $this->data ['Page'] ['message'];
-
$error = 0;
-
// start filter vars
-
$error = 1;
-
}
-
$error = 1;
-
}
-
// verify email address
-
$error = 1;
-
}
-
if ($error == 0) {
-
$this->Email->email ( $email, $name, $message ); //here is the email sent
-
$this->set ( 'success', 'The message was sent <br />Thank you!' );
-
// setting "succes" variable for displaying if email was sent.
-
} else {
-
$this->set ( 'error', 'Please complete all fields' );
-
// this is in case of error
-
}
-
} else {
-
}
-
}
-
}
-
?>
FINALLY
After all that just test it in your favorite web browser http://localhost/cake/contact/contact
Tags: php4, cakephp, code example