首頁  >  問答  >  主體

PHP郵件發送空白郵件

我和php類似,不懂問題出在哪裡。

有時 php 函數會向我發送空訊息,例如

父母姓名

太晚了:

林恩:

電話號碼:

電子郵件:

出生日期:

訊息正文:

但它應該填入這樣的值

父母姓名測驗

# 失誤太多:測試

林恩:測試

電話號碼:測試

信箱:test@test

出生日期:21313

訊息文字:測試

這是我的 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 ');
?>

請給我建議,哪裡出了問題。

P粉225961749P粉225961749225 天前433

全部回覆(1)我來回復

  • P粉769045426

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

    如果您的腳本只是一個表單處理器,您可以例如add if(empty($_POST)) { die('沒有表單資料!'); } 到頂部以防止其運行,除非響應表單提交。

    如果您需要填寫所有字段,則必須在處理電子郵件之前檢查每個字段。您可以將所有這些isset 塞進一個巨大的if(isset(...) 語句中。但是,有一種更簡單、更易讀的方法來做到這一點。首先,讓我們設定幾個變數:

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

    然後,我們循環遍歷字段,如果值存在,則添加到 $data,否則我們添加錯誤註釋。

    // 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.
    }

    如果出現錯誤(= 缺少欄位),則不會傳送電子郵件。作為獎勵,您現在擁有一段可重複使用的程式碼,只需修改 $fields 陣列即可將其用於具有類似功能的其他表單。 (如果您確實需要重複使用它,則將其包裝到函數中是一個好主意;不要複製貼上程式碼。function x($post, $fields) { ... } 用於基本操作輔助函數。)

    請注意,這裡我們使用 empty 來取代 isset。如果提交空白表單,則會設定欄位(為空字串"")。另請注意,empty 傳回 true 對於任何等於false 的內容(即""0false、<代码>null,[])。 (如果「0」是預期且可接受的值,請注意它的「空性」!)另一方面,isset 對於任何非null 的內容回傳true。

    附註如果上面的程式碼是完整的程式碼,而您的腳本只是處理表單資料並重定向,那麼您根本不需要 HTML 包裝器。它永遠不會顯示。

    回覆
    0
  • 取消回覆