亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 的 isset 函數問題

PHP 的 isset 函數問題

PHP
largeQ 2023-07-08 21:44:37
我正在為我的網站制作一個聯系表單,該表單使用 php 將輸入的信息發送到我的電子郵件。我的問題是 isset php 函數返回 false。我不知道這是為什么。這是我的php代碼(輸出結果是“未發送”)<?phpif (isset($_POST['submit'])){    $name = $_POST['name'];    $subject = $_POST['subject'];    $mailFrom = $_POST['mail'];    $message = $_POST['message'];    $mailTo = "[email protected]";    $headers = "From: " .$mailFrom;    $txt = "You have received an email from " .$name.".\n\n".$message;    if (mail($mailTo, $subject, $txt, $headers)){        echo "<h1>sent successfully</h1>";    } else {        echo "<h1>something went wrong</h1>";    }} else {    echo "not sent";}?>這是我的表單代碼<form action="contactform.php" method="post" enctype="text/plain">     <label for="name">Name</label>     <input type="text" name="name" placeholder="Full name.." maxlength="20" required>     <label for="mail">Email</label>     <input type="text" name="mail" placeholder="Your email.."       pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z{2,}$" required>     <label for="subject">Subject</label>     <input type="text" name="subject" maxlength="25" placeholder="Subject..">     <label for="message">Message</label>     <input type="text" name="message" placeholder="Message.." style="height:170px"       maxlength="150" required>     <input type="submit" value="submit" name="submit"></form>
查看完整描述

2 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

功能上沒有什么問題isset。這甚至不是 PHP 相關的問題。

這都是關于表單提交編碼的。表單有 3 種有效的編碼類型:

  1. application/x-www-form-urlencoded(默認)

  2. multipart/form-data

  3. text/plain

您正在使用第三個,其記錄如下:

使用該text/plain格式的有效負載旨在便于人類閱讀。它們無法被計算機可靠地解釋,因為格式不明確(例如,無法區分值中的文字換行符和值末尾的換行符)。

您沒有獲得任何POST變量,因為 PHP$_POST在使用enctype="text/plain".

在 superglobal的文檔中$_POST

application/x-www-form-urlencoded當使用或?multipart/form-data作為請求中的 HTTP Content-Type時,通過 HTTP POST 方法傳遞到當前腳本的變量的關聯數組。


話雖如此,您仍然可以從請求正文中讀取原始數據。

$data?=?file_get_contents('php://input');

但您將獲得字符串(純文本)形式的整個數據。

最后但并非最不重要的一點是,要小心,php://input不適用于enctype="multipart/form-data".


查看完整回答
反對 回復 2023-07-08
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

isset($_POST['submit'])如果表單上有多個提交按鈕,則不要使用引用提交按鈕,因為該按鈕并不總是被按下。這在過去給我帶來了問題。

在任何字段上按 Enter 鍵將提交表單,并且第一個提交按鈕可用。

使用其中一個字段。在你的情況下你可以使用if (isset($_POST['name'])){


查看完整回答
反對 回復 2023-07-08
  • 2 回答
  • 0 關注
  • 155 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號