hualinux 編程概念 3.6:瀏覽器是如何和網站交互數據的(新手必看!)

目錄

一、HTML語法(熟悉可跳過)

1.1 使用語法

1.2 HTML標籤英文全稱

二、PHP語法(可以跳過)

三、編寫交互代碼

3.1 需求及講解

3.1.1 需求

3.1.2 分析

3.2 GET方式實現

3.2.1 HTML代碼及解說

3.2.2 php代碼及解說

3.2.3 運行效果並get分析

3.3 使用post方式提交

3.3.1 HTML代碼

3.3.2 PHP代碼

3.3.3 效果並分析

四、補充內容


我看到不少初級運維,連前後怎麼向後端提交數據的都不懂!一問就回了一句“沒學過開發”,那個汗顏啊~~

所以本章打算教一下前後使用HTML,後端使用PHP,做一個簡單的向網站提交數據,主要使用GET和POST兩種方式

如果沒基礎,沒關係直接看《HTML教程》主要使用的是的表單部分,如果你真的很懶,你也可以直接不看

php可以看《PHP教程》,也可以不看,主要是輸出你提交的數據而已。

此教程

TML使用的是本地win7編寫的,我這裏使用webStorm進行HTML編寫,也可以不要,直接複製我的代碼也行。
PHP使用的是LNMP,搭建可以看我的《hualinux2.5 環境搭建:centos8安裝LNMP》,使用PHPStorm編寫PHP,也可不要

 

一、HTML語法(熟悉可跳過)

1.1 使用語法

<標籤>內容</標籤>

注:新的html5如果內容沒有可以寫成<標籤/>
  • HTML 標籤是由尖括號包圍的關鍵詞,比如 <html>
  • HTML 標籤通常是成對出現的,比如 <b> 和 </b>
  • 標籤對中的第一個標籤是開始標籤,第二個標籤是結束標籤
  • 開始和結束標籤也被稱爲開放標籤閉合標籤

固定格式爲:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--在這裏寫內容就行了--> 
</body>
</html>

上面的每對標籤只能出現一次,在<body>...</body>之間寫東西就行了,可以嵌套其它標籤,有興趣可以看《HTML教程

1.2 HTML標籤英文全稱

有些人反映老是記不住HTML標籤,這裏我貼出全稱

HTML標籤

英文全稱

中文釋義

a

Anchor

abbr

Abbreviation

縮寫詞

acronym

Acronym

取首字母的縮寫詞

address    

Address

地址

dfn           

Defines a Definition Term

定義定義條目

kbd          

Keyboard

鍵盤(文本)

samp      

Sample

示例(文本

var            

Variable

變量(文本)

tt               

Teletype

打印機(文本)

code

Code

源代碼(文本)

pre

Preformatted

預定義格式(文本 

blockquote    

Block Quotation

區塊引用語

cite          

Citation

引用

q

Quotation

引用語

strong

Strong

加重(文本)

em          

Emphasized

加重(文本)

b

Bold

粗體(文本)

i

Italic

斜體(文本)

big          

Big

變大(文本)

small      

Small

變小(文本)

sup          

Superscripted

上標(文本)

sub          

Subscripted

下標(文本)

bdo          

Direction of Text Display

文本顯示方向

br            

Break

換行

center    

Centered

居中(文本)

font          

Font

字體

u              

Underlined

下劃線(文本)

s/ strike      

Strikethrough

刪除線

div              

Division

分隔

span          

Span

範圍

ol                

Ordered List

排序列表

ul               

Unordered List

不排序列表

li

List Item

列表項目

dl                

Definition List

定義列表

dt                 

Definition Term

定義術語

dd             

Definition Description

定義描述

del               

Deleted

刪除(的文本)

ins               

Inserted

插入(的文本)

h1~h6

Header 1 to Header 6

標題1到標題6

p

Paragraph

段落

hr                

Horizontal Rule

水平尺

href

hypertext reference

超文本引用

alt

alter

替用(一般是圖片顯示不出的提示)

src

Source

源文件鏈接

cell

cell

cellpadding

cellpadding

巢補白

cellspacing

cellspacing

巢空間

nl

navigation lists

導航列表

tr

table row

表格中的一行

th

table header cell

表格中的表頭

td

table data cell

表格中的一個單元格

<a> anchor 定義錨 
<abbr> abbreviation 定義縮寫 
<acronym>  定義只取消首字母的縮寫 
<address> 定義地址元素 
<area> 定義圖像映射內部的區域 
<b> bold 定義粗體字 
<base> 定義頁面當中的所有鏈接的基準鏈接 
<bdo>  bidirectional override 定義文字的顯示方向 
<big> 定義大號字 
<blockquote> 定義長的引用 
<body> 定義body元素 
<br> break 插入一個回車 
<button> 定義按鈕 
<caption> 定義表格標題 
<cite> citation 定義引用 
<code> computer code 定義計算機代碼文本 
<col> column 定義用於表格列的屬性 
<h1>to<h6> 定義標題1到標題6 
<head> 定義關於文檔的信息 
<hr> horizontal 定義水平線 
<html> hypertext markup language 定義html文檔 
<i> italic 定義斜體字 
<iframe> inline frame 定義內聯框架 
<img> image 定義圖像 
<input>  定義輸入域 
<ins> inserted 定義被插入的文本 
<kbd> keyboard 定義鍵盤文本 
<label> 定義針對表單控件的標籤 
<legend> 定義框架集的標題 
<li> list item 定義列表的項目 
<link> 定義資源引用 
<map> 定義圖像映射 
<meta> 定義元信息 
<noframe> 定義無框架的節 
<noscript> 定義無腳本的節 
<object> 定義內嵌對象 
<ol> ordered list 定義有序列表 
<optgroup> option group 定義選項組 
<option> 定義下拉列表的選項 
<p> paragraph 定義段落 
<param> 定義對象的參數 
<pre> preformatted 定義預格式文本 
<q> quotation 定義短的引用 
<samp> sample 定義計算機代碼樣本 
<script> 定義腳本 
<select> 定義選擇列表 
<small> 定義小字體文本 
<span> 定義文檔中的節 
<strong> stronger empasis定義強調文本 
<style> 定義樣式的定義 
<sub> subscript 定義下標文本 
<sup> superscript 定義上標文本 
<table> 定義表格 
<tbody> table body 定義表格的主體部分 
<td> table data cell定義表格單元 
<textarea> 定義文本區域 
<tfoot> table foot定義表也的腳註 
<th> table header cell定義表格的表頭單元格 
<thead> table head定義表格的標題 
<title> 定義文檔的標題 
<tr> table row定義表格的行 
<tt> teletype 定義打字機文本 
<ul> unordered list 定義無序列表 
<var> variable 定義變量 

二、PHP語法(可以跳過)

<?
;php代碼

php語法很簡單可以看《PHP教程》和《PHP官方中文文檔

本文只用到 “$_GET 變量”和“$_POST 變量”

 

三、編寫交互代碼

3.1 需求及講解

3.1.1 需求

上圖填寫“名字”“留言”點提交,就顯示你的名字和留言的內容,

名字:hua
留言:php是世界上最好的語言

效果如下圖所示:

要求使用get和post兩種方式提交,並對比一下不同的地方

3.1.2 分析

HTML提交數據使得的是表單,表單是用於向服務器傳輸數據用的,

表單能夠包含 input 元素,比如文本字段、複選框、單選框、提交按鈕等等。

表單還可以包含 menustextareafieldsetlegend 和 label 元素

有興趣的可以看一下《HTML表單

我在這裏HTML中可以使用的是<input>的text和 <textarea>實現

php的get方法可以使用$_GET,而post可以使用 $_POST

 

3.2 GET方式實現

3.2.1 HTML代碼及解說

html代碼,我放在桌面了,大家可以用記事本編寫,然後另存爲index.html就行了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
<form method="get" action="http://192.168.3.11/note.php" enctype="application/x-www-form-urlencoded">
    名字:<input type="text" name="username"><br>
    留言:<br><textarea name="note" cols="30" rows="5" placeholder="請輸入你的留言"></textarea><br>
    <input type="submit" value="提交">
</form>


</body>
</html>

註解:

form屬於解說:

method="get":表示使用get方式,如果使用post可以把get改爲post

action="http://192.168.3.11/note.php":表示處理這個get請求的文件路徑,我的php文件在服務器上,路徑是http://192.168.3.11/note.php

enctype: 屬性規定在發送到服務器之前應該如何對錶單數據進行編碼。默認地,表單數據會編碼爲 "application/x-www-form-urlencoded"。就是說,在發送到服務器之前,所有字符都會進行編碼(空格轉換爲 "+" 加號,特殊符號轉換爲 ASCII HEX 值)。

描述
application/x-www-form-urlencoded 在發送前編碼所有字符(默認)
multipart/form-data

不對字符編碼。

在使用包含文件上傳控件的表單時,必須使用該值。

text/plain 空格轉換爲 "+" 加號,但不對特殊字符編碼。

input說明:標籤用於蒐集用戶信息。

根據不同的 type 屬性值,輸入字段擁有很多種形式。輸入字段可以是文本字段、複選框、掩碼後的文本控件、單選按鈕、按鈕等等。

type="text":表示是文本框,還有其它一堆類型,我這裏就不說了,有求個可以看一下<input>

name:表示這個控制的名字,一定要寫的!

from提交數據是 name屬的值,以及value的值,如果少了name屬性是不會提交 的!!

就是因爲見到不少初學者都犯這個錯誤

 

提交按鍵 type="submit"必需寫!這個是提交的意思,沒有name,因爲它只負責把form標籤中包含有name的都提交到服務器中。

textarea:標籤定義多行的文本輸入控件。

文本區中可容納無限數量的文本,其中的文本的默認字體是等寬字體(通常是 Courier)。

可以通過 cols 和 rows 屬性來規定 textarea 的尺寸,不過更好的辦法是使用 CSS 的 height 和 width 屬性。

屬性不說了,自己看

3.2.2 php代碼及解說

我在PHP服務器上note.php代碼爲

<?php
echo $_GET['username'].'留言是:</br>';
echo '<pre style="border: 3px solid olivedrab;width: 25%">'.$_GET['note'].'</pre>';

解說:

echo:輸出的意思,如果有個字符串連接使用點號.

 

$_GET:

預定義的 $_GET 變量用於收集來自 method="get" 的表單中的值。

從帶有 GET 方法的表單發送的信息,對任何人都是可見的(會顯示在瀏覽器的地址欄),並且對發送信息的量也有限制。

 

<pre style="border: 3px solid olivedrab;width: 25%">:

我加入的html標籤,效果就是加一個綠色的框圍着

 

 

3.2.3 運行效果並get分析

打開HTML我的放在桌面上,用的是火狐瀏覽器打開,輸入如下圖內容:

效果如下:

在上圖中我們看URL地址的變化

http://192.168.3.11/note.php?username=hua&note=php是世界上最好的語言,get方式

上面中

http://192.168.3.11/note.php:訪問的是PHP服務器的note.php文件

問號?:連接作用,一般表示後是傳參數的,可以理解爲連接參數的作用

 

username=hua&note=php是世界上最好的語言,get方式:

這些就是參數,對應的是form表單標籤中含有name屬性及值,第一個是我在html使用的是input的文本,name設置爲username,value的值爲hua,它們形式是

name的值=value的值

所以我這裏是username=hua,同理那2個也一樣,這裏不就說了

&:不同參數的間隔符,我這裏有2對參數,所以使用了&連接號

有些眼尖的人還看到你自己發送的內容在URL上顯示了!!!對,這就是get方式,直接以明文方式在URL使用參數提交的!所以使用用戶名和密碼登陸方式,不能使用get方式!!

我這裏再在火狐瀏覽器上按F12,會彈出開發者工具菜單,選擇“網絡”

再退回再次提交看一下,發現會有很多東西可以看,如下圖所示:

再點一下響應頭

這些東西我就不理解了,有興趣可以看一下《圖解HTTP

3.3 使用post方式提交

3.3.1 HTML代碼

只需要把method方式改爲post就行了,其它不需要修改

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
<form method="post" action="http://192.168.3.11/note.php" enctype="application/x-www-form-urlencoded">
    名字:<input type="text" name="usernmae"><br>
    留言:<br><textarea name="note" cols="30" rows="5" placeholder="請輸入你的留言"></textarea><br>
    <input type="submit" value="提交">
</form>

</body>
</html>

3.3.2 PHP代碼

把$_GET改爲$_POST

<?php
echo $_POST['username'].'留言是:</br>';
echo '<pre style="border: 3px solid olivedrab;width: 25%">'.$_POST['note'].'</pre>';

3.3.3 效果並分析

按下圖輸入內容並提交:

效果如下圖所示:

發現post提交併不像get提交URL上會多出一些東西,連提交的內容都是明文顯示的。這裏是什麼都沒有看到,但數據的確提交到服務器上了。

所以說post提交適合於

1.不想別人看到內容的,如用戶名和密碼

2.提交大的數據,一般get提交的數據不能超過4k,有的瀏覽器是8k,決定於瀏覽器,畢竟URL長度是有限的

 

四、補充內容

如果做運維久的人會發現有的人用get提交時,發現也並不是所有的傳參用?分隔的啊,有的用/,這是因爲是進行了修改了,使用的不是默認風格而是PATH_INFO用斜槓把參數隔開了。

 

 

 

 

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