2012-05-21 17 views
6

Me gustaría hacer un formulario que publique datos en mi correo electrónico.Publicar datos del formulario en el correo electrónico

Encontré el siguiente código y funciona bien, pero quiero eliminar algunos campos innecesarios. por ejemplo, ¿cómo puedo eliminar los campos 'Apellido' y 'Correo electrónico' sin romper el código de trabajo?

HTML:

<html> 
<head> 
    <title>Форма</title> 
</head> 

<body> 
<form name="contactform" method="post" action="send_form_email.php"> 
    <table width="450px"> 
     <tr> 
      <td valign="top"> 
       <label for="first_name">Name *</label> 
      </td> 
      <td valign="top"> 
       <input type="text" name="first_name" maxlength="50" size="30"> 
      </td> 
     </tr> 

     <tr> 
      <td valign="top"> 
       <label for="telephone">Phone number</label> 
      </td> 
      <td valign="top"> 
       <input type="text" name="telephone" maxlength="30" size="30"> 
      </td> 
     </tr> 
     <tr> 
      <td valign="top"> 
       <label for="comments">Comments *</label> 
      </td> 
      <td valign="top"> 
       <textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2" style="text-align:center"> 
       <input type="submit" value="Send"> 
      </td> 
     </tr> 
    </table> 
</form> 
</body> 

</html> 

PHP:

<?php 
    if(isset($_POST['email'])) { 

    // EDIT THE 2 LINES BELOW AS REQUIRED 
    $email_to = "[email protected]"; 
    $email_subject = "Order"; 


    function died($error) { 
     // your error code can go here 
     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 

    // validation expected data exists 
    if(!isset($_POST['first_name']) || 
     !isset($_POST['telephone']) || 
     !isset($_POST['comments'])) { 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 

    $first_name = $_POST['first_name']; // required 
    $telephone = $_POST['telephone']; // not required 
    $comments = $_POST['comments']; // required 

    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if(!preg_match($string_exp,$first_name)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 
    if(strlen($comments) < 2) { 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
    } 
    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 
    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    $email_message .= "First Name: ".clean_string($first_name)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Comments: ".clean_string($comments)."\n"; 


// create email headers 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 
?> 

<!-- include your own success html here --> 

Thank you for contacting us. We will be in touch with you very soon. 

<?php 
} 
?> 

Después presing el botón Enviar no pasa nada. Sin correo electrónico, sin mensaje Solo limpia la página.

+0

Paso uno ;: formato. No es necesario un blockquote –

Respuesta

4

HTML

<form name="contactform" method="post" action="send_form_email.php"> 
<table width="450px"> 
<tr> 
<td valign="top"> 
    <label for="first_name">Name *</label> 
</td> 
<td valign="top"> 
    <input type="text" name="first_name" maxlength="50" size="30"> 
</td> 
</tr> 
<tr> 
<td valign="top"> 
    <label for="telephone">Telephone Number</label> 
</td> 
<td valign="top"> 
    <input type="text" name="telephone" maxlength="30" size="30"> 
</td> 
</tr> 
<tr> 
<td valign="top"> 
    <label for="comments">Comments *</label> 
</td> 
<td valign="top"> 
    <textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea> 
</td> 
</tr> 
<tr> 
<td colspan="2" style="text-align:center"> 
    <input type="submit" value="Submit"> 
</td> 
</tr> 
</table> 
</form> 

PHP

<?php 
if(isset($_POST['first_name'])) { 

    // EDIT THE 2 LINES BELOW AS REQUIRED 
    $email_to = "[email protected]"; 
    $email_subject = "Your email subject line"; 


    function died($error) { 
     // your error code can go here 
     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 

    // validation expected data exists 
    if(!isset($_POST['first_name']) || 
     !isset($_POST['telephone']) || 
     !isset($_POST['comments'])) { 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 

    $first_name = $_POST['first_name']; // required 
    $telephone = $_POST['telephone']; // not required 
    $comments = $_POST['comments']; // required 

    $error_message = ""; 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if(!preg_match($string_exp,$first_name)) { 
    $error_message .= 'The Name you entered does not appear to be valid.<br />'; 
    } 
    if(strlen($comments) < 2) { 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
    } 
    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 
    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    $email_message .= "Name: ".clean_string($first_name)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Comments: ".clean_string($comments)."\n"; 


// create email headers 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
echo (int) mail($email_to, $email_subject, $email_message, $headers); 
?> 

<!-- include your own success html here --> 

Thank you for contacting us. We will be in touch with you very soon. 

<?php 
} 
?> 
+0

Por alguna razón, no funciona. Solo vacíe la página después de presionar el botón Enviar. Y no hay una nueva bandeja de entrada de correo electrónico –

+0

La función de correo de PHP podría no funcionar correctamente por varias razones, incluido el hecho de que su proveedor de alojamiento lo deshabilite si está en un servidor compartido. Proporcione más información sobre su entorno. He editado el código para imprimir la salida de la función. Si muestra 0, entonces el correo electrónico de envío falló por alguna razón, y tendrá que buscar el problema en otra parte del código. – Jeshurun

+0

¡Guau! Ahora funciona. ¡Gracias! Lamentablemente, no puedo dejar de votar por tu respuesta. Pero sé, me ayudaste mucho) –

0

Simplemente elimine todas las referencias a los campos que no desea. Cuando obtiene un error, es hora de publicar una pregunta.

también se suman los informes de errores durante la depuración, poner esta línea en la parte superior de su script:

error_reporting(E_ALL);

+0

Así lo hice. Y si no funciona. Voy a editar la pregunta ahora –

+0

Así que publique el código que tiene ahora y el mensaje de error – ilanco

+0

@ user1238612 y luego diga exactamente lo que no está funcionando. Cualquier aviso, error, nada sucede? – CodeCaster

Cuestiones relacionadas