Jump to content

Email Form


elamunyon

Recommended Posts

Hello,

I am a newbie trying to make a website contact form with attachments that is sent to our email address when the user submits. In addition, I am trying to force the user to enter all their information before it will send. I have managed to get the error page to display when the fields are empty, however, when I fill them in, I still get the error page, not the message sent page I want. Please Help!!!

 

<?php

if ($_SERVER['REQUEST_METHOD']=="POST"){

 

  // assign the To address and message subject

  $to="[email protected]";

  $subject="Record of Survey";

  $fileatt_name="";

  $phone=($_POST['fromphone']);

  $company=($_POST['fromcompany']);

  $name=($_POST['fromname']);;

 

// get the sender's name and email address

  // we'll just plug them a variable to be used later

  $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">".stripslashes($_POST['fromphone']).">".stripslashes($_POST['fromcompany']).">";

 

  // generate a random string to be used as the boundary marker

  $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

 

  //  message headers

  $headers = "From: $from\r\n" .

  "MIME-Version: 1.0\r\n" .

      "Content-Type: multipart/mixed;\r\n" .

      " boundary=\"{$mime_boundary}\"";

 

  // here, we'll start the message body.

  // this is the text that will be displayed

  // in the e-mail

  $message="Efile: Record of Survey\n

  $name\n

  $phone\n

  $company\n";

   

 

  // next, we'll build the invisible portion of the message body

  // note that we insert two dashes in front of the MIME boundary

  // when we use it

  $message = "This is a multi-part message in MIME format.\n\n" .

      "--{$mime_boundary}\n" .

      "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .

      "Content-Transfer-Encoding: 7bit\n\n" .

  $message . "\n\n";

 

  // now we'll process our uploaded files

  foreach($_FILES as $userfile){

      // store the file information to variables for easier access

      $tmp_name = $userfile['tmp_name'];

      $type = $userfile['type'];

      $name = $userfile['name'];

      $size = $userfile['size'];

 

      // if the upload succeded, the file will exist

      if (file_exists($tmp_name)){

 

        // check to make sure that it is an uploaded file and not a system file

        if(is_uploaded_file($tmp_name)){

 

            // open the file for a binary read

            $file = fopen($tmp_name,'rb');

 

            // read the file content into a variable

            $data = fread($file,filesize($tmp_name));

 

            // close the file

            fclose($file);

 

            // now we encode it and split it into acceptable length lines

            $data = chunk_split(base64_encode($data));

        }

 

       

        $message .= "--{$mime_boundary}\n" .

            "Content-Type: {$type};\n" .

            " name=\"{$name}\"\n" .

            "Content-Disposition: attachment;\n" .

            " filename=\"{$fileatt_name}\"\n" .

            "Content-Transfer-Encoding: base64\n\n" .

        $data . "\n\n";

      }

  }

 

  // here's our closing mime boundary that indicates the last of the message

  $message.="--{$mime_boundary}--\n";

 

if(!isset($from))  {

 

}

elseif (!empty($from)) {

echo "Oops, please fill out all information\n";

 

}

else

  // now we just send the message

  if (@mail($to, $subject, $message, $headers)){

      echo "<font face=verdana size=2>Message Sent</font>";

}

  else {

      echo "Failed to send";

 

}

}else {

?>

</td>

</tr>

</table>

<table style="position:absolute;top:180px;left:30px;width:740px;"table bgcolor="#FFFFFF" bordercolor="#5b2e00" border = "3px solid">

 

  <tr>

  <td style="text-align:center;">

<p>E-File Your Survey(s):</p>

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

  enctype="multipart/form-data" name="form1">

  <p>Name*: <input type="text" name="fromname"></p>

  <p>Email*: <input type="text" name="fromemail"></p>

  <p>Phone Number*: <input type="text" name="fromphone"></p>

  <p>Company*: <input type="text" name="fromcompany"></p>

  <p>File: <input type="file" name="file1"></p>

  <p>File: <input type="file" name="file2"></p>

  <p>File: <input type="file" name="file3"></p>

  <p>File: <input type="file" name="file4"></p>

  <p><input type="submit" name="Submit" value="Submit"></p>

  <p><h2>*REQUIRED</h2></p>

</td>

</tr>

</table>

</form>

 

<?php } ?>

</body>

</html>

Link to comment
https://forums.phpfreaks.com/topic/184292-email-form/
Share on other sites

i put your code in code tags .. somebody might look at it now:

 

<?php
if ($_SERVER['REQUEST_METHOD']=="POST"){

   // assign the To address and message subject
   $to="[email protected]";
   $subject="Record of Survey";
   $fileatt_name="";
   $phone=($_POST['fromphone']);
   $company=($_POST['fromcompany']);
   $name=($_POST['fromname']);;

// get the sender's name and email address
   // we'll just plug them a variable to be used later
   $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">".stripslashes($_POST['fromphone']).">".stripslashes($_POST['fromcompany']).">";

   // generate a random string to be used as the boundary marker
   $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

   //  message headers
   $headers = "From: $from\r\n" .
   "MIME-Version: 1.0\r\n" .
      "Content-Type: multipart/mixed;\r\n" .
      " boundary=\"{$mime_boundary}\"";

   // here, we'll start the message body.
   // this is the text that will be displayed
   // in the e-mail
   $message="Efile: Record of Survey\n
   $name\n
   $phone\n
   $company\n";
   

   // next, we'll build the invisible portion of the message body
   // note that we insert two dashes in front of the MIME boundary
   // when we use it
   $message = "This is a multi-part message in MIME format.\n\n" .
      "--{$mime_boundary}\n" .
      "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
      "Content-Transfer-Encoding: 7bit\n\n" .
   $message . "\n\n";

   // now we'll process our uploaded files
   foreach($_FILES as $userfile){
      // store the file information to variables for easier access
      $tmp_name = $userfile['tmp_name'];
      $type = $userfile['type'];
      $name = $userfile['name'];
      $size = $userfile['size'];

      // if the upload succeded, the file will exist
      if (file_exists($tmp_name)){

         // check to make sure that it is an uploaded file and not a system file
         if(is_uploaded_file($tmp_name)){
    
            // open the file for a binary read
            $file = fopen($tmp_name,'rb');
    
            // read the file content into a variable
            $data = fread($file,filesize($tmp_name));

            // close the file
            fclose($file);
    
            // now we encode it and split it into acceptable length lines
            $data = chunk_split(base64_encode($data));
         }
    
         
         $message .= "--{$mime_boundary}\n" .
            "Content-Type: {$type};\n" .
            " name=\"{$name}\"\n" .
            "Content-Disposition: attachment;\n" .
            " filename=\"{$fileatt_name}\"\n" .
            "Content-Transfer-Encoding: base64\n\n" .
         $data . "\n\n";
      }
   }

   // here's our closing mime boundary that indicates the last of the message
   $message.="--{$mime_boundary}--\n";

if(!isset($from))  {

}
elseif (!empty($from)) {
echo "Oops, please fill out all information\n";

}
else
   // now we just send the message
  if (@mail($to, $subject, $message, $headers)){
      echo "<font face=verdana size=2>Message Sent</font>";
}
   else {
      echo "Failed to send";

}
}else {
?>
</td>
</tr>
</table>
<table style="position:absolute;top:180px;left:30px;width:740px;"table bgcolor="#FFFFFF" bordercolor="#5b2e00" border = "3px solid">

   <tr>
   <td style="text-align:center;">
<p>E-File Your Survey(s):</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"
   enctype="multipart/form-data" name="form1">
   <p>Name*: <input type="text" name="fromname"></p>
   <p>Email*: <input type="text" name="fromemail"></p>
   <p>Phone Number*: <input type="text" name="fromphone"></p>
   <p>Company*: <input type="text" name="fromcompany"></p>
   <p>File: <input type="file" name="file1"></p>
   <p>File: <input type="file" name="file2"></p>
   <p>File: <input type="file" name="file3"></p>
   <p>File: <input type="file" name="file4"></p>
   <p><input type="submit" name="Submit" value="Submit"></p>
   <p><h2>*REQUIRED</h2></p>
</td>
</tr>
</table>
</form>

<?php } ?>
</body>
</html>

 

EDIT: remove the @ from the mail function.  you do not want to suppress any errors that might be showing.  if you implement proper error handling, there is really no reason to suppress errors like that.

Link to comment
https://forums.phpfreaks.com/topic/184292-email-form/#findComment-973002
Share on other sites

error page?  or error message: "Oops, please fill out all information\n"?

 

this is your problem:

 

elseif (!empty($from)) {
echo "Oops, please fill out all information\n";
}

 

the ! is like saying, "If $from is NOT empty, display the error message stating it is."

 

simply remove the ! from !empty:

 

elseif (empty($from)) {
echo "Oops, please fill out all information\n";
}

 

or better yet, just combine the two:

 

<?php
if (!isset ($from) || (empty ($from))) {
echo "Oops, please fill out all information\n";
}
else
{
// now we just send the message
if (mail($to, $subject, $message, $headers)){
	echo "<font face=verdana size=2>Message Sent</font>";
}
else {
	echo "Failed to send";
}
}
//continue with code;
?>

Link to comment
https://forums.phpfreaks.com/topic/184292-email-form/#findComment-973007
Share on other sites

Hello! I took your advice and combined the two and changed the empty function. However, the form is still sending an email when fields are empty. The error page is not even showing up now. It just sends a blank email. What is wrong here? By the way, how do I put my code in code tags so people will look at it? Sorry, very new to this:)

 

<?php

if ($_SERVER['REQUEST_METHOD']=="POST"){

 

  // we'll begin by assigning the To address and message subject

  $to="[email protected]";

  $subject="Record of Survey";

  $fileatt_name="";

  $phone=($_POST['fromphone']);

  $company=($_POST['fromcompany']);

  $name=($_POST['fromname']);;

 

// get the sender's name and email address

  // we'll just plug them a variable to be used later

  $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">".stripslashes($_POST['fromphone']).">".stripslashes($_POST['fromcompany']).">";

 

  // generate a random string to be used as the boundary marker

  $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

 

  // now we'll build the message headers

  $headers = "From: $from\r\n" .

  "MIME-Version: 1.0\r\n" .

      "Content-Type: multipart/mixed;\r\n" .

      " boundary=\"{$mime_boundary}\"";

 

  // here, we'll start the message body.

  // this is the text that will be displayed

  // in the e-mail

  $message="Efile: Record of Survey\n

  $name\n

  $phone\n

  $company\n";

   

 

  // next, we'll build the invisible portion of the message body

  // note that we insert two dashes in front of the MIME boundary

  // when we use it

  $message = "This is a multi-part message in MIME format.\n\n" .

      "--{$mime_boundary}\n" .

      "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .

      "Content-Transfer-Encoding: 7bit\n\n" .

  $message . "\n\n";

 

  // now we'll process our uploaded files

  foreach($_FILES as $userfile){

      // store the file information to variables for easier access

      $tmp_name = $userfile['tmp_name'];

      $type = $userfile['type'];

      $name = $userfile['name'];

      $size = $userfile['size'];

 

      // if the upload succeded, the file will exist

      if (file_exists($tmp_name)){

 

        // check to make sure that it is an uploaded file and not a system file

        if(is_uploaded_file($tmp_name)){

 

            // open the file for a binary read

            $file = fopen($tmp_name,'rb');

 

            // read the file content into a variable

            $data = fread($file,filesize($tmp_name));

 

            // close the file

            fclose($file);

 

            // now we encode it and split it into acceptable length lines

            $data = chunk_split(base64_encode($data));

        }

 

        // now we'll insert a boundary to indicate we're starting the attachment

        // we have to specify the content type, file name, and disposition as

        // an attachment, then add the file content.

        // NOTE: we don't set another boundary to indicate that the end of the

        // file has been reached here. we only want one boundary between each file

        // we'll add the final one after the loop finishes.

        $message .= "--{$mime_boundary}\n" .

            "Content-Type: {$type};\n" .

            " name=\"{$name}\"\n" .

            "Content-Disposition: attachment;\n" .

            " filename=\"{$fileatt_name}\"\n" .

            "Content-Transfer-Encoding: base64\n\n" .

        $data . "\n\n";

      }

  }

 

  // here's our closing mime boundary that indicates the last of the message

  $message.="--{$mime_boundary}--\n";

 

if (!isset ($from) || (empty ($from))) {

  echo "Oops, please fill out all information\n";

}

else

{

  // now we just send the message

  if (mail($to, $subject, $message, $headers)){

      echo "<font face=verdana size=2>Message Sent</font>";

  }

  else {

      echo "Failed to send";

}

}

}else{

?>

</td>

</tr>

</table>

<table style="position:absolute;top:180px;left:30px;width:740px;"table bgcolor="#FFFFFF" bordercolor="#5b2e00" border = "3px solid">

 

  <tr>

  <td style="text-align:center;">

<p>E-File Your Survey(s):</p>

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

  enctype="multipart/form-data" name="form1">

  <p>Name*: <input type="text" name="fromname"></p>

  <p>Email*: <input type="text" name="fromemail"></p>

  <p>Phone Number*: <input type="text" name="fromphone"></p>

  <p>Company*: <input type="text" name="fromcompany"></p>

  <p>File: <input type="file" name="file1"></p>

  <p>File: <input type="file" name="file2"></p>

  <p>File: <input type="file" name="file3"></p>

  <p>File: <input type="file" name="file4"></p>

  <p><input type="submit" name="Submit" value="Submit"></p>

  <p><h2>*REQUIRED</h2></p>

</td>

</tr>

</table>

</form>

 

<?php } ?>

</body>

</html>

Link to comment
https://forums.phpfreaks.com/topic/184292-email-form/#findComment-973059
Share on other sites

Okay, I think I got it working!

 

Thanks to those who answered my question!!:)

 

f (!isset ($phone) || (empty ($phone))) {

  echo "<font face=verdana size=4>Please fill out all fields</font>

<a href=\"http://localhost:8080/efile_TEST1.php\">(Return to Form</a>)";

}

 

else

{

  // now we just send the message

  if (mail($to, $subject, $message, $headers)){

      echo "<font face=verdana size=5>Thank You!! Message Sent</font>";

 

  }

  else {

      echo "Failed to send";

}

Link to comment
https://forums.phpfreaks.com/topic/184292-email-form/#findComment-973098
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.