2017-08-10 1 views
1

Im PHP débutant et j'ai du mal à obtenir ce formulaire de contact fonctionnant sur ce site: http://bm-translations.de/#kontakt Il recharge la page, quand j'appuie sur envoyer et qu'il n'envoie rien. Qu'est-ce que je fais mal? Ceci est mon code:formulaire de contact (selfmade, pas de bibliothèque) n'envoie rien mais recharge site

error_reporting(-1); 
ini_set('display_errors', 'On'); 
set_error_handler("var_dump"); 




if(isset($_POST) && !empty($_POST)) { 
    // catch spam bots which never loaded contact form 
    // if (!isset($_POST["url"]) || $_POST["url"] != "sometext") { 

     // header("Location: http://bm-translations.de/"); 
    // exit; 

    // } 

    // check whether the POST method was used 
    if ("POST" != getenv("REQUEST_METHOD")) { 

     header("Location: http://bm-translations.de/"); 
     exit; 

    } 
    // check for user-agent and http-referer 
    if ("" == getenv("HTTP_USER_AGENT") || "" == getenv("HTTP_REFERER")) { 
     header("Location: http://bm-translations.de/"); 
     exit; 

    } 
    // trick the spam bot into identifying itself using a honeypot 
    if (empty($_POST["email"])) { 
     exit; 

    } 
    $hasAttachment = !empty($_FILES['attachment']['name']); 
    $uid = md5(uniqid(time())); 
    //mail essentials 
    $from = $_POST['mail']; 
    $to = "[email protected]"; 
    $subject = "Anfrage über Website"; 
    $message = $_POST['quote']; 
    // standard mail headers 
    $header = "From: ".$from."\r\n"; 
    $header .= "Reply-To: ".$to."\r\n"; 
    $header .= "MIME-Version: 1.0\r\n"; 
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
    $message .= "This is a multi-part message in MIME format.\r\n"; 
    // plain text part 
    $message .= "--".$uid."\r\n"; 
    $message .= "Content-Type:text/plain; charset=iso-8859-1\r\n"; 
    $message .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
    $message .= $message."\r\n\r\n"; 
    //if there is an attachment 
    if($hasAttachment) { 
     //store some varables 
     $file_name = $_FILES['attachment']['name']; 
     $temp_name = $_FILES['attachment']['tmp_name']; 
     $file_type = $_FILES['attachment']['type']; 
     //get the extension of the file 
     $base = basename($file_name); 
     $extension = substr($base, strlen($base)-4, strlen($base)); 
     // only thes file types will be allowed 
     $allowed_extensions = array(".doc","docx",".pdf",".zip",".png","jpeg",".jpg",".gif",".txt","docm",".odt","xlsx","xlsm",".csv",".xml",".ods","tiff",".rtf",""); 
     // check that this file type is allowed 
     if(in_array($extension,$allowed_extensions)){ 
      // things you need 
      $file = $temp_name; 
      $content = chunk_split(base64_encode(file_get_contents($file))); 
      // file attachment 
      $message .= "--".$uid."\r\n"; 
      $message .= "Content-Type: ".$file_type."; name=\"".$file_name."\"\r\n"; 
      $message .= "Content-Transfer-Encoding: base64\r\n"; 
      $message .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n"; 
      $message .= $content."\r\n\r\n"; 
     } 
    } 
    $msg = ""; 
    //send the mail 
    if (mail($to, $subject, $message, $header)) { 
     $msg = "Ich habe Ihre Mail erhalten und melde mich in Kürze!"; 
    } else { 
     $msg = "Nachricht konnte nicht gesendet werden. Bitte senden Sie mir Ihre Anfrage an [email protected]"; 
    } 
} 

Cest la forme:

<?php if (!empty($msg)) { 
        echo "<h2>$msg</h2>"; 
       } ?> 
       <form method="POST" enctype="multipart/form-data"> 
        <input style="width: 100%;" type="text" name="name" id="name" placeholder="Ihr Name..." required/><br> 
        <input style="width: 100%;" type="email" name="email" id="email" placeholder="Ihre Email-Adresse..." required/><br> 
        <input style="width: 100%;" type="text" name="phone" id="phone" placeholder="Ihre Telefonnummer..." /><br> 
        <textarea style="padding: 10px 12px; width: 100%;" name="quote" rows="6" placeholder="Auftragsdetails: Fachgebiet, Sprachkombination, Beglaubigung (ja/nein), Liefertermin, Versandart ..." required></textarea><br> 
        <input name="uploaded_file" id="uploaded_file" type="file" size="50" style="margin-top: 10px;"> 
        <input name="url" style="display:none"> 
        <button type="submit" class="button" name="submit" value="send" style="width:100%; margin-top:10px; text-align: center;">Anfrage absenden!</button> 
       </form> 

Maintenant, je reçois ce message not really the information I sent

et beaucoup d'erreurs, qu'ai-je tort? J'ai essayé de suivre les instructions des réponses. enter image description here

+0

[L'attribut d'espace réservé HTML5 ne remplace pas l'élément d'étiquette] (http://www.456bereastreet.com/archive/201204/the_html5_placeholder_attribute_is_not_a_substitute_for_the_label_element/) – Quentin

Répondre

1

Mise à jour 5 ..............

error_reporting(0); 


    if(isset($_POST['submit'])) { 

    // catch spam bots which never loaded contact form 
    // if (!isset($_POST["url"]) || $_POST["url"] != "sometext") { 

     // header("Location: http://bm-translations.de/"); 
    // exit; 

    // } 

// check whether the POST method was used 
if ("POST" != getenv("REQUEST_METHOD")) { 

    echo "error 1"; 
    exit; 

} 
// check for user-agent and http-referer 
if ("" == getenv("HTTP_USER_AGENT") || "" == getenv("HTTP_REFERER")) { 
echo "Error 2"; 
exit; 

} 
// trick the spam bot into identifying itself using a honeypot 
if (empty($_POST["email"])) { 
exit; 

} 
$hasAttachment = !empty($_FILES['uploadedfile']['name']); 
$uid = md5(uniqid(time())); 
//mail essentials 
$from = "[email protected]"; 
$to = "[email protected]"; 
$subject = "Your subject"; 
$message2 = $_POST['quote']."\r\n"; 
$message2 .= 'Email provided is '.$_POST['email'].'\r]n'; 
// standard mail headers 
$header = "From: ".$from."\r\n"; 
$header .= "Reply-To: ".$to."\r\n"; 
$header .= "MIME-Version: 1.0\r\n"; 
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
$message = "This is a multi-part message in MIME format.\r\n"; 
// plain text part 
$message .= "--".$uid."\r\n"; 
$message .= "Content-Type:text/plain; charset=iso-8859-1\r\n"; 
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
$message .= $message2."\r\n\r\n"; 
//if there is an attachment 
if($hasAttachment) { 
    //store some varables 
    $file_name = $_FILES['uploadedfile']['name']; 
    $temp_name = $_FILES['uploadedfile']['tmp_name']; 
    $file_type = $_FILES['uploaded']['type']; 
    //get the extension of the file 
    $base = basename($file_name); 
    $extension = substr($base, strlen($base)-4, strlen($base)); 
    // only thes file types will be allowed 
    $allowed_extensions = array(".doc","docx",".pdf",".zip",".png","jpeg",".jpg",".gif",".txt","docm",".odt","xlsx","xlsm",".csv",".xml",".ods","tiff",".rtf",""); 
    // check that this file type is allowed 
    if(in_array($extension,$allowed_extensions)){ 
     // things you need 
     $file = $temp_name; 
     $hd="/home2/inam/public_html/uploads/"; 
     $uploaddir=$hd.$file_name; 
     copy($temp_name,$uploaddir); 
     $content = chunk_split(base64_encode(file_get_contents($uploaddir))); 
     // file attachment 

     $message .= "--".$uid."\r\n"; 


    $message .= "Content-Type: ".$file_type."; name=\"".$file_name."\"\r\n"; 
      $message .= "Content-Transfer-Encoding: base64\r\n"; 
      $message .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n"; 
      $message .= $content."\r\n\r\n"; 
     } 
    } 
    $msg = ""; 
    //send the mail 
    if (mail($to, $subject, $message, $header)) { 
     $msg = "Mail is sent"; 
    } else { 
     $msg = "Email was not sent"; 
    } 
} 
?> 
<?php if (!empty($msg)) { 
        echo "<h2>$msg</h2>"; 
       } ?> 
      <form method="POST" enctype="multipart/form-data"> 
       <input style="width: 100%;" type="text" name="name" id="name" placeholder="Name" required/><br> 
       <input style="width: 100%;" type="email" name="email" id="email" placeholder="email" required/><br> 
       <input style="width: 100%;" type="text" name="phone" id="phone" placeholder="phone" /><br> 
       <textarea style="padding: 10px 12px; width: 100%;" name="quote" rows="6" placeholder="Description" required></textarea><br> 
       <input name="uploadedfile" id="uploadedfile" type="file" size="50" style="margin-top: 10px;"> 
       <input name="url"> 
       <button type="submit" class="button" name="submit" value="send" style="width:100%; margin-top:10px; text-align: center;">Anfrage absenden!</button> 
      </form> 

Mise à jour 4. Comme je le pensais. La question était if (!empty($_POST["email"])) { exit; }

changer juste à if (empty($_POST["email"])) { exit; }

et vos œuvres de formulaire. Je l'ai vérifié encore et seulement enlevé la partie $ _POST ['p3'] car je ne sais pas ce que c'est. Aussi appelé le bouton. <button name=button...

Mise à jour 3. OK J'ai essayé votre formulaire en supprimant les choses que je ne comprenais pas pourquoi il y avait là en premier lieu et j'ai pu recevoir l'email y compris la pièce jointe. Utilisez if(isset($_POST['submit'])){ au début et non if(isset($_POST))

Puis j'ai enlevé $ _POST [ « p3 »] comme je ne sais pas où il est sous la forme et aussi je retire if (!empty($_POST["email"])) { exit; } ////// en tapant ce que vous sont en train de dire que si l'email n'est pas vide, quittez. Il devrait être if(empty($_POST['email'])) mais je l'ai enlevé juste pour vérifier votre forme.

Essayez ces modifications.


Mise à jour 2. Votre entrée de fichier est <input name="uploaded_file" id="uploaded_file" type="file" size="50" style="margin-top: 10px;"> mais vous utilisez $hasAttachment = !empty($_FILES['attachment']['name']); Modifier à $hasAttachment = !empty($_FILES['uploaded_file']['name']);

J'ai essayé votre formulaire, mais que je comprends ce n'est pas toute la forme. $ _POST ["p3"] où est-ce. Dans tous les cas, essayez la solution que j'ai mentionnée ci-dessus.


Vous n'avez pas entré le nom du bouton.

FAITES L'ESSAI

<button type="submit" class="button" name=submit value="send" style="width:100%; margin-top:10px; text-align: center;">Anfrage absenden!</button> 
+0

pourquoi est-ce important? Toujours le même problème. Rien n'a changé –

+0

cochez Mise à jour 2 dans les réponses –

+0

ne fonctionne toujours pas –