PHP(二)- 前後端交互!

html與php混編:

  • 如果想讓web服務器能自動轉發這些請求, 文檔的擴展名就不能是.html, 必須是.php
  • 遇到一個<?php ?>就轉發一個cgi請求, 不管這些標籤出現在當前文檔的什麼地方
  • 用戶最終看到的,仍然是一個html文檔, php代碼中的內容不會被泄漏的

http請求類型

最常用的就是GET和POST二種請求類型

1、GET 請求

  • 請求參數以鍵值對的方式,附加到url地址上,稱爲查詢字符串,用?號與當前腳本分隔 ;
  • url格式:index.php?name=peter&age=30 ;
  • 受url長度限制, GET方式傳遞的數據也是有限制的;
  • 服務器端腳本使用預定義變量數組 $_GET 進行接收.
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>get</title>
	</head>
	<body>
		<form action="" method="get">
			<label for="email">郵箱:</label>
			<input type="email" id="email" name="email" value="">
			<label for="password">密碼:</label>
			<input type="password" id="password" name="password" value="">
			<br/>

			<!--將用戶輸入的內容動態添加到value字段中, 創建具有粘性的表單-->
			<label for="email">郵箱:</label>
			<input type="email" id="email" name="email" value="<?php echo isset($_GET['email']) ? $_GET['email'] : ''; ?>">
			<label for="password">密碼:</label>
			<input type="password" id="password" name="password" value="<?php echo isset($_GET['password']) ? $_GET['password'] : '';?>">
			<br/>

			<!--簡易寫法-->
			<label for="email">郵箱:</label>
			<input type="email" id="email" name="email" value="<?php echo $_GET['email'] ?? ''; ?>">
			<label for="password">密碼:</label>
			<input type="password" id="password" name="password" value="<?php echo $_GET['password'] ?? ''; ?>">

			<button>登錄</button>
		</form>
	</body>
</html>

<?php
	// 獲取通過url發送的變量參數, php通過超全局變量$_GET獲取
	// $_GET是一個數組,鍵名就是get參數名
	// 鍵名=>變量名, 值=>變量值

	// print_r()格式化打印輸出一個數組
	print_r($_GET);
	echo $_GET['email'];

	// 獲取變量之前要進行判斷,用isset()
	if (isset($_GET['email'])) {
		echo $_GET['email'];
	} else {
		// 給個默認值
		$_GET['email'] = '';
	}
	// 與js類似,可以用三元運算符進行簡化
	echo isset($_GET['email']) ? $_GET['email'] : '';

	// 使用<pre>標籤,在網頁中可以實現格式化輸出
	echo '<pre>';
	print_r($_GET);
?>

2、POST 請求

  • 請求參數放在header請求頭中發送, url地址看不到請求參數,適合敏感信息;
  • 通常是通過表單提交併, 用來更新服務器上的信息;
  • 適合發送大量的數據到服務器端, 長度受到配置文件限制,但比GET要大得多;
  • 服務器端腳本使用預定義變量數組 $_POST 進行接收.
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>post</title>
	</head>
	<body>
		<form action="" method="post">
			<label for="email">郵箱:</label>
			<!--將用戶輸入的內容動態添加到value字段中, 創建具有粘性的表單-->
			<input type="email" id="email" name="email" value="<?php echo isset($_POST['email']) ? $_POST['email'] : ''; ?>">
			<label for="password">密碼:</label>
			<input type="password" id="password" name="password" value="<?php echo isset($_POST['email']) ? $_POST['email'] : '';?>">

			<button>登錄</button>
		</form>
	</body>
</html>

<?php
	// POST請求, 參數不是通過URL傳遞, 而是通過請求頭
	// 獲取通過url發送的變量參數, php通過超全局變量$_POST獲取
	// $_POST是一個數組,鍵名就是POST參數名
	// 鍵名=>變量名, 值=>變量值

	// print_r()格式化打印輸出一個數組
	print_r($_POST);
	echo $_POST['email'];
	// 獲取變量之前要進行判斷,用isset()
	if (isset($_POST['email'])) {
		echo $_POST['email'];
	} else {  // 給個默認值
		$_POST['email'] = '';
	}
	// 與js類似,可以用三元運算符進行簡化
	echo isset($_POST['email']) ? $_POST['email'] : '';

	// 使用<pre>標籤,在網頁中可以實現格式化輸出
	echo '<pre>';
	print_r($_POST);
?>

詳細資料,可參考:php中文網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章