表單是Web平台允許用戶與頁面互動並將數據發送到服務器的方式。
以下是HTML中的一個簡單表單:
<form>
<input type="text" name="name" />
<input type="submit" />
</form>
你可以將其放置在名為index.php
的文件中,就像名為index.html
一樣。
PHP文件中允許你在其中編寫HTML,並使用一些“PHP填料”(即<?php ?>
)來與客戶端進行通信。有時,PHP部分占據了整個頁面,這就是通過PHP生成所有HTML的方式-與我們現在所執行的相反。
所以,我們有這個生成基於純HTML的表單的index.php
文件:
單擊提交按鈕將向相同的URL發送一個GET請求,通過查詢字符串將數據發送出去,請注意URL已更改為localhost:8888/?name=test:
我們可以添加一些代碼來檢查該參數是否設置,使用isset()
函數:
<form>
<input type="text" name="name" />
<input type="submit" />
</form>
<?php
if (isset($_GET['name'])) {
echo '<p>The name is ' . $_GET['name'];
}
?>
看到了嗎?我們可以通過$_GET
從GET請求的查詢字符串中獲取信息。
然而,你通常會使用表單執行POST請求:
<form **method="POST"**>
<input type="text" name="name" />
<input type="submit" />
</form>
<?php
if (isset($_POST['name'])) {
echo '<p>The name is ' . $_POST['name'];
}
?>
看,我們獲得了相同的信息,但URL未更改,表單信息未附加到URL上。
這是因為我們使用POST請求,這種方式將數據通過urlencoded數據發送到服務器。
正如之前提到的,PHP仍然會提供index.php
文件,因為我們仍然向與表單相同的URL發送數據。
我們正在混合了很多代碼,我們可以將表單請求處理程序與生成表單的代碼分開。
因此,在index.php
中,我們可以有以下內容:
<form **method="POST" action="/post.php"**>
<input type="text" name="name" />
<input type="submit" />
</form>
然後,我們可以創建一個新的post.php
文件,內容如下:
<?php
if (isset($_POST['name'])) {
echo '<p>The name is ' . $_POST['name'];
}
?>
PHP現在會在提交表單後顯示此內容,因為我們在表單上設置了action
HTML屬性。
這個例子非常簡單,但post.php
文件是我們可以將數據保存到數據庫或文件的地方。