簡體   English   中英

發布方法不適用於html形式

[英]post method don't work in html form

我有這個簡單的html表單,並使用post方法。

<html>
  <form action = "read.php" method="post">
        <input type="text" name ="name">
        <input type="submit">
  </form>
</html>

這是我的php:

if(isset($_POST["name"])){
   echo "sent";
}
else
{
   echo "not sent";
}

當我運行代碼時,將出現“未發送”消息。似乎一切正常,但它不起作用,而GET方法正常工作並顯示“已發送”消息。是什么問題?

首先,請確保您的標記有效。 請注意,您在一些空格中不應有空格(例如, name ="name" )。 至少應該有一個空白的HTML文檔,其內容位於<body>標記內:

<!DOCTYPE html>
<html>
<head></head>
<body>
    <form action="read.php" method="post">
        <input type="text" name="name">
        <input type="submit">
    </form>
</body>
</html>

從您的問題尚不清楚上述表格是在read.php還是單獨的腳本中?

如果它們是分開的(例如,表單在index.php ),則在瀏覽器中運行index.php 它應該發布到必須位於相同相對目錄中的read.php , then run read.php in your browser. 如果表單和PHP在 ,則在瀏覽器中運行read.php

使用PHP本身,最好通過輸出文章內容來調試它,例如

var_dump($_POST);

如果可行,您將在發布后得到一個包含表單內容的數組。 you have filled in the name field and pressed the Submit button, eg 您填寫了name字段並按下Submit按鈕后,該信息才會出現,例如

array(1) { ["name"]=> string(4) "andy" }

回到問題中的代碼...如果所有代碼都在同一腳本中, 則頁面加載時將顯示“未發送”,因為此時尚未發布任何內容 填寫name字段並按下“提交”按鈕后,它將僅輸出“已發送”。

您想知道為什么該方法可以使用GET方法。 好吧,原因是因為GET會將表單字段附加到URL。 在頁面加載時,您運行index.php 沒有$_GET參數。 提交表單后,將對URL進行操作(例如index.php?name=andy )。 因此,在頁面加載時,它說“未發送”,但是一旦它在URL中具有?name=andy ,它就會說“已發送”,因為這是一個GET參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM