Weasel
👄 I'd intercept me
I have been working on a little contact script to intergrate with SmashCMS, however I don't have any time to do it. So here is a little, simple, contact script. Currently there is no anti-spam check, however if people would like to see this, I'll add it.
The core PHP file:
The form:
The PHP code to let the error/succes messages show. Place this piece of code on the spot you want this to show:
Do not forget to set the $extratime variable to the amount of seconds you want people to wait before sending another email, and also change the $to variable with your own email.
If you have any errors, please say so. I'll try to fix it. Ideas are welcome to.
The core PHP file:
PHP:
<?php
session_start();
$hour = date("H");
$minute = date("i");
$seconds = date("s");
$day = date("d");
$month = date("m");
$year = date("Y");
$extratime = 30;
$current = mktime($hour,$minute,$seconds,$month,$day,$year);
$expire = mktime($hour,$minute,$seconds+$extratime,$month,$day,$year);
$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message'];
$to = '[email protected]';
$subject = 'Message from '.$firstname.' '.$surname.' with IP '.$_SERVER['REMOTE_ADDR'].'';
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";
if(isset($_POST['send']))
{
$check_status = '';
$errors = array();
if (isset($_SESSION['check']) && $_SESSION['check'] > $current)
{
$errors[] = 'Please wait '.$extratime.' seconds before sending another message..';
}
if(empty($firstname))
{
$errors[] = 'The field "First name" is empty!';
}
if(empty($surname))
{
$errors[] = 'The field "Surname" is empty!';
}
if(empty($email))
{
$errors[] = 'The field "E-mail address" is empty!';
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($email))
{
$errors[] = 'The given e-mail address is invalid. Please fill in a good one.';
}
if(empty($message))
{
$errors[] = 'The field "Message" is empty!';
}
if(count($errors) == 0)
{
$headers .= 'From: ' . $firstname . ' ' . $surname . '<' . $email . '>';
if(mail($to, $subject, nl2br($message), $headers))
{
$check_status = 'Your message has been succesfully send!!';
$_SESSION['check'] = $expire;
}
else
{
$errors[] = 'A system error occured.';
}
}
}
foreach($errors as $key => $keyvalue){
$check_status .= ''.$keyvalue.'<br>';
}
?>
The form:
Code:
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
First name<br />
<input type="text" name="firstname" /><br /><br />
Surname<br />
<input type="text" name="surname" /><br /><br />
E-mail address<br />
<input type="text" name="email" /><br /><br />
Your message<br />
<textarea cols="50" rows="12" name="message"></textarea><br /><br />
<input type="reset" value="Empty fields" /> <input type="submit" name="send" value="Send message" />
</form>
The PHP code to let the error/succes messages show. Place this piece of code on the spot you want this to show:
PHP:
<?php
if ($check_status != ''){
echo $check_status;
}
?>
Do not forget to set the $extratime variable to the amount of seconds you want people to wait before sending another email, and also change the $to variable with your own email.
If you have any errors, please say so. I'll try to fix it. Ideas are welcome to.