Maison  >  Questions et réponses  >  le corps du texte

Le courrier PHP envoie un e-mail vide

Je suis similaire à php et je ne comprends pas quel est le problème.

Parfois, les fonctions php m'envoient des messages vides comme

Noms des parents

Trop tard :

Lynn :

Numéro de téléphone :

Courriel :

Date de naissance :

Message text:

Mais il devrait être renseigné avec des valeurs comme celle-ci

Test de nom des parents

Trop d'erreurs : Test

Lynn : Teste

Numéro de téléphone : Test

E-mail : test@test

Date de naissance : 21313

Message text: Test

Voici mon code php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Обратная Связь</title>
  </head>
  <body>
    <?php
      if (isset($_POST['parent'])) {$parent = $_POST['parent'];}
      if (isset($_POST['child'])) {$child = $_POST['child'];}
      if (isset($_POST['contacts'])) {$contacts = $_POST['contacts'];}
      if (isset($_POST['email'])) {$email = $_POST['email'];}
      if (isset($_POST['bbd'])) {$bbd = $_POST['bbd'];}
      if (isset($_POST['city'])) {$city = $_POST['city'];}
      if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
 
      $to = "info@test.ee"; /*Укажите ваш адрес электоронной почты*/
      $headers = "Content-type: text/plain; text/html; charset=utf-8";
      $subject = "Kontakti Info";
      $message = "Vanema nimi $parent \n Lapse nimi: $child \nLinn: 
      $city \nTelefoninumber: $contacts \nEmail: $email \nSünnikuupäev: $bbd \nSõnumi tekst: $mess";
      $send = mail ($to, $subject, $message, $headers);
      if ($send == 'true')
        {
        echo "<b>Спасибо за отправку вашего сообщения!<p>";
        echo "<a href=index.php>Нажмите,</a> чтобы вернуться на главную страницу";
        }
      else 
        {
        echo "<p><b>Ошибка. Сообщение не отправлено!";
        } 
    ?>
  </body>
</html>

<?php
  header('Location: https://test.ee/aitah.html ');
?>

S'il vous plaît, donnez-moi des conseils sur ce qui n'a pas fonctionné.

P粉225961749P粉225961749175 Il y a quelques jours332

répondre à tous(1)je répondrai

  • P粉769045426

    P粉7690454262024-04-01 09:38:47

    Si votre script n'est qu'un gestionnaire de formulaire, vous pouvez par exemple ajouter if(empty($_POST)) { die('没有表单数据!'); } en haut pour l'empêcher de s'exécuter, sauf en réponse à la soumission d'un formulaire.

    Si vous devez remplir tous les champs, vous devez vérifier chaque champ avant de traiter l'e-mail. Vous pouvez mettre tout cela isset 塞进一个巨大的 if(isset(...) dans des déclarations. Cependant, il existe un moyen plus simple et plus lisible de procéder. Tout d’abord, configurons quelques variables :

    // Your required fields:
    $fields = ['parent', 'child', 'contacts', 'email', 'bbd', 'city', 'mess'];
    // Your data is collected here:
    $data = [];
    // Any errors are collected here:
    $errors = [];

    On boucle ensuite sur les champs et si la valeur existe, on l'ajoute à $data, sinon on ajoute une annotation d'erreur.

    // Loop to check your required fields:
    
    foreach($fields as $field) {
        // If value exists, add to $data:
        if(!empty($_POST[$field])) {
            $data[$field] = $_POST[$field];
        }
        // Else add error:
        else {
            $errors[] = 'Missing field: ' . $field;
        }
    }
    
    if(empty($errors)) {
        // No errors, send your email
        // You can use "Vanema nimi {$data['parent']}...",
        // ... otherwise: extract($data) to use $parent etc.
    }
    else {
        // You could report those errors, or redirect back to the form, or whatever.
    }

    S'il y a une erreur (= champ manquant), l'email ne sera pas envoyé. En bonus, vous disposez désormais d'un morceau de code réutilisable qui doit simplement être modifié $fields 数组即可将其用于具有类似功能的其他表单。 (如果您确实需要重用它,则将其包装到函数中是一个好主意;不要复制粘贴代码。function x($post, $fields) { ... } pour les fonctions d'aide aux opérations de base. )

    Veuillez noter qu'ici nous utilisons empty au lieu de isset. Si un formulaire vierge est soumis, le champ empty 代替 isset。如果提交空白表单,则会设置字段(为空字符串"")。另请注意, empty 返回 true 对于任何等于 false 的内容(即 ""0false、<代码>null,[])。 (如果“0”是预期且可接受的值,请注意它的“空性”!)另一方面,isset 对于任何非 null

    sera défini (avec la chaîne vide ""). Notez également que empty renvoie < code >true pour tout ce qui est égal à false (c'est-à-dire "", 0, false, null, []). (

    Si "0" est une valeur attendue et acceptable, merci de noter son "vide" !

    ) Par contre, isset Renvoie vrai pour tout contenu qui n'est pas null. 🎜 🎜P.S. Si le code ci-dessus est le code complet et que votre script gère uniquement les données du formulaire et les redirections, alors vous n'avez pas du tout besoin du wrapper HTML. Il ne s'affiche jamais. 🎜

    répondre
    0
  • Annulerrépondre