PHP for a HTML Contact Form- please help me!

Hi

I have done lots of reading around and just cant figure this out. Im pretty new to php so any help will be greatly appreciated.

I have created a site and i need to have a contact form which has an attachment. The current code just doesnt seem to want to send. Ive attached the php in txt format and the site is called www.bigscaryvc.co.uk.

Thank you so much for any help.

[php]<?php

if(!$_POST) exit;

// Email address verification, do not edit.
function isEmail($email) {
return(preg_match("/^[-_.[: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|me|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]))$/i",$email));
}

if (!defined(“PHP_EOL”)) define(“PHP_EOL”, “\r\n”);

$name = $_POST[‘name’];
$email = $_POST[‘email’];
$phone = $_POST[‘phone’];
$comments = $_POST[‘covering_letter’];
$verify = $_POST[‘verify’];

if(trim($name) == ‘’) {
echo ‘

Attention! You must enter your name.
’;
exit();
} else if(trim($email) == ‘’) {
echo ‘
Attention! Please enter a valid email address.
’;
exit();
//} else if(trim($phone) == ‘’) {
// echo ‘
Attention! Please enter a valid phone number.
’;
// exit();
//} else if(!is_numeric($phone)) {
// echo ‘
Attention! Phone number can only contain digits.
’;
// exit();
} else if(!isEmail($email)) {
echo ‘
Attention! You have enter an invalid e-mail address, try again.
’;
exit();
}

// if(trim($subject) == ‘’) {
// echo ‘

Attention! Please enter a subject.
’;
// exit();
// } else
if(trim($covering_letter) == ‘’) {
echo ‘
Attention! Please enter your message.
’;
exit();
} else if(!isset($verify) || trim($verify) == ‘’) {
echo ‘
Attention! Please enter the verification number.
’;
exit();
} else if(trim($verify) != ‘4’) {
echo ‘
Attention! The verification number you entered is incorrect.
’;
exit();
}

if(get_magic_quotes_gpc()) {
$comments = stripslashes($comments);
}

// Configuration option.
// Enter the email address that you want to emails to be sent to.
// Example $address = “[email protected]”;

$address = “[email protected]”;

// Configuration option.
// i.e. The standard subject will appear as, “You’ve been contacted by John Doe.”

// Example, $e_subject = ‘$name . ’ has contacted you via Your Website.’;

$e_subject = 'You’ve been contacted by ’ . $name . ‘.’;

// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

$e_body = “You have been contacted by $name, the additional message is as follows.” . PHP_EOL . PHP_EOL;
$e_content = “”$covering_letter"" . PHP_EOL . PHP_EOL;
$e_reply = “You can contact $name via email, $email or via phone $phone”;

$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

$headers = “From: $email” . PHP_EOL;
$headers .= “Reply-To: $email” . PHP_EOL;
$headers .= “MIME-Version: 1.0” . PHP_EOL;
$headers .= “Content-type: text/plain; charset=utf-8” . PHP_EOL;
$headers .= “Content-Transfer-Encoding: quoted-printable” . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {

// Email has sent successfully, echo a success page.

echo "<fieldset>";
echo "<div id='success_page'>";
echo "<h4>Email Sent Successfully</h4>";
echo "<p>Thank you $name, your CV has been submitted to us.</p>";
echo "</div>";
echo "</fieldset>";

} else {

echo 'ERROR!';

}[/php]


contact.txt (4.13 KB)

Why are you trimming a null value?

Its not sending because its getting sent when you enter the page, before anything is filled out. Change submit to whatever you named your submit button.
[php]<?php
if($POST[‘submit’]) {
// Email address verification, do not edit.
function isEmail($email) {
return(preg_match("/^[-
.[: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|me|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]))$/i",$email));
}

if (!defined(“PHP_EOL”)) define(“PHP_EOL”, “\r\n”);
$name = $_POST[‘name’];
$email = $_POST[‘email’];
$phone = $_POST[‘phone’];
$comments = $_POST[‘covering_letter’];
$verify = $_POST[‘verify’];

 if(empty($name)) {
      echo '<div class="error_message">Attention! You must enter your name.</div>';
 } elseif(empty($email)) {
      echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
 } elseif(!isEmail($email)) {
      echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';
 } elseif(empty($covering_letter)) {
      echo '<div class="error_message">Attention! Please enter your message.</div>';
 } elseif(!isset($verify) || empty($verify)) {
      echo '<div class="error_message">Attention! Please enter the verification number.</div>';
 } elseif(trim($verify) != '4') {
      echo '<div class="error_message">Attention! The verification number you entered is incorrect.</div>';
 }

 if(get_magic_quotes_gpc()) {
      $comments = stripslashes($comments);
 }

 // Configuration option.
 // Enter the email address that you want to emails to be sent to.
 // Example $address = "[email protected]";

 $address = "[email protected]";

 // Configuration option.
 // i.e. The standard subject will appear as, "You've been contacted by John Doe."
 // Example, $e_subject = '$name . ' has contacted you via Your Website.';

 $e_subject = "You've been contacted by $name.";

 // Configuration option.
 // You can change this if you feel that you need to.
 // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

 $e_body = "You have been contacted by $name, the additional message is as follows.\r\n;
 $e_content = '"$covering_letter\"\r\n";
 $e_reply = "You can contact $name via email, $email or via phone $phone";

 $msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

 $headers = "From: $email" . PHP_EOL;
 $headers .= "Reply-To: $email" . PHP_EOL;
 $headers .= "MIME-Version: 1.0" . PHP_EOL;
 $headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
 $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

 if(mail($address, $e_subject, $msg, $headers)) {
      // Email has sent successfully, echo a success page.
      echo "<fieldset>";
      echo "<div id='success_page'>";
      echo "<h4>Email Sent Successfully</h4>";
      echo "<p>Thank you $name, your CV has been submitted to us.</p>";
      echo "</div>";
      echo "</fieldset>";
 } else {
      echo 'ERROR!';
 }

}[/php]

Hi

Thank you for the help there is a error in line 50 and I cant understande how to fix it. Could you help by any chance?

Thankyou

the concatenation in that line makes no sense, guessing this is what you’re after
[php]$e_content = $covering_letter . ‘\r\n’;[/php]

Sorry its all very new to me and im not sure what you mean

Its what I get for being tired when I made the corrections. I can only figure that he wanted the end result to be in quotes and I started to edit it, but forgot about it.

Thank you you dont know how much i appreciate your help.

I made those changes so the code is now below but it is still not sending just going to a blank page once i press submit

<?php if($_POST['submit']) { // Email address verification, do not edit. function isEmail($email) { return(preg_match("/^[-_.[: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|me|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]))$/i",$email)); } if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n"); $name = $_POST['name']; $email = $_POST['email']; $phone = $_POST['phone']; $covering_letter = $_POST['covering_letter']; $submit = $_POST['submit']; if(empty($name)) { echo '
Attention! You must enter your name.
'; } elseif(empty($email)) { echo '
Attention! Please enter a valid email address.
'; } elseif(!isEmail($email)) { echo '
Attention! You have enter an invalid e-mail address, try again.
'; } elseif(empty($covering_letter)) { echo '
Attention! Please enter your message.
'; } elseif(!isset($submit) || empty($submit)) { echo '
Attention! Please enter the verification number.
'; } elseif(trim($submit) != '4') { echo '
Attention! The verification number you entered is incorrect.
'; } if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); } // Configuration option. // Enter the email address that you want to emails to be sent to. // Example $address = "[email protected]"; $address = "[email protected]"; // Configuration option. // i.e. The standard subject will appear as, "You've been contacted by John Doe." // Example, $e_subject = '$name . ' has contacted you via Your Website.'; $e_subject = "You've been contacted by $name."; // Configuration option. // You can change this if you feel that you need to. // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here. $e_body = "You have been contacted by $name, the additional message is as follows.\r\n"; $e_content = $covering_letter . '\r\n'; $e_reply = "You can contact $name via email, $email or via phone $phone"; $msg = wordwrap( $e_body . $e_content . $e_reply, 70 ); $headers = "From: $email" . PHP_EOL; $headers .= "Reply-To: $email" . PHP_EOL; $headers .= "MIME-Version: 1.0" . PHP_EOL; $headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL; $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL; if(mail($address, $e_subject, $msg, $headers)) { // Email has sent successfully, echo a success page. echo ""; echo "
"; echo "

Email Sent Successfully

"; echo "

Thank you $name, your CV has been submitted to us.

"; echo "
"; echo ""; } else { echo 'ERROR!'; } }

Add error checking to the beginning of the script, it should print an error insted of just a blank page

[php]error_reporting(E_ALL);
ini_set(‘display_errors’,‘1’);[/php]

this is what it says

Notice: Undefined index: submit in /var/www/vhosts/bigscaryvc.co.uk/httpdocs/contact.php on line 4

Add isSet before your post_submit and wrap it in parentheses. You page is loading and trying to run the function, even though $email is null.

Sorry i dont understand what you have just said I am new to PHP and trying to learn quickly!

I really appreciate everyones help.

So I did as said and now the message is coming through without the attachment and with this

Notice: Undefined index: name in /var/www/vhosts/bigscaryvc.co.uk/httpdocs/contact.php on line 11 Notice: Undefined index: email in /var/www/vhosts/bigscaryvc.co.uk/httpdocs/contact.php on line 12 Notice: Undefined index: phone in /var/www/vhosts/bigscaryvc.co.uk/httpdocs/contact.php on line 13 Notice: Undefined index: covering_letter in /var/www/vhosts/bigscaryvc.co.uk/httpdocs/contact.php on line 14 Notice: Undefined index: submit in /var/www/vhosts/bigscaryvc.co.uk/httpdocs/contact.php on line 15
Attention! You must enter your name.

Email Sent Successfully

Thank you , your CV has been submitted to us.

My Php now looks like this

<?php error_reporting(E_ALL); ini_set('display_errors','1'); if(!isset($_POST['submit'])) { // Email address verification, do not edit. function isEmail($email) { return(preg_match("/^[-_.[: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|me|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]))$/i",$email)); } if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n"); $name = $_POST['name']; $email = $_POST['email']; $phone = $_POST['phone']; $covering_letter = $_POST['covering_letter']; $submit = $_POST['submit']; if(empty($name)) { echo '
Attention! You must enter your name.
'; } elseif(empty($email)) { echo '
Attention! Please enter a valid email address.
'; } elseif(!isEmail($email)) { echo '
Attention! You have enter an invalid e-mail address, try again.
'; } elseif(empty($covering_letter)) { echo '
Attention! Please enter your message.
'; } elseif(!isset($submit) || empty($submit)) { echo '
Attention! Please enter the verification number.
'; } elseif(trim($submit) != '4') { echo '
Attention! The verification number you entered is incorrect.
'; } if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); } // Configuration option. // Enter the email address that you want to emails to be sent to. // Example $address = "[email protected]"; $address = "[email protected]"; // Configuration option. // i.e. The standard subject will appear as, "You've been contacted by John Doe." // Example, $e_subject = '$name . ' has contacted you via Your Website.'; $e_subject = "You've been contacted by $name."; // Configuration option. // You can change this if you feel that you need to. // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here. $e_body = "You have been contacted by $name, the additional message is as follows.\r\n"; $e_content = $covering_letter . '\r\n'; $e_reply = "You can contact $name via email, $email or via phone $phone"; $msg = wordwrap( $e_body . $e_content . $e_reply, 70 ); $headers = "From: $email" . PHP_EOL; $headers .= "Reply-To: $email" . PHP_EOL; $headers .= "MIME-Version: 1.0" . PHP_EOL; $headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL; $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL; if(mail($address, $e_subject, $msg, $headers)) { // Email has sent successfully, echo a success page. echo ""; echo "
"; echo "

Email Sent Successfully

"; echo "

Thank you $name, your CV has been submitted to us.

"; echo "
"; echo ""; } else { echo 'ERROR!'; } }

please post the form that ur using.

Thank you!!

<tr>
    <th valign="middle">phone</th>
    <td><input name="fieldSubject" type="text" id="fieldSubject"></td>
</tr>
<tr>
    <th valign="middle">Covering Letter</th>
    <td><textarea name="fieldDescription" cols="20" rows="6" id="fieldDescription"></textarea></td>
</tr>
<tr>
  <th height="51">Attach Your File:</th>
  <td><input name="attachment" type="file"></td>
</tr>
<tr>
    <td colspan="2" style="text-align:center;"><input type="submit" class="submit" id="submit" value="Send message" /> <input type="reset" name="Reset" value="Reset"></td>
</tr>
</table>
</form>
Name
Email

if thats really the action youre using, then thats the issue. remove it.

Sorry what do you mean?

change

to

You don’t need to specify an action if the php is on the same page.

Its not its a seperate file i have the index.html and a contact.php file.

Your content type should be multipart not just text.

It does it says this

Sponsor our Newsletter | Privacy Policy | Terms of Service