天小編給大家帶來的是html表單提交教程,非常簡單!
話不多說直接進入教程
首先要注意的事項:
第一:因為這節課涉及到了php所以本地要安裝php
在這里小編用的是phpStudyphpStudy(特點簡單很適合本地開發測試)
phpStudy界面
第二:在php編碼里一定要注意不要編寫錯誤
<?php //為開頭 //為結尾?>
<?php 這里寫php代碼 ?>
要切記php代碼要以分號未結束 “;”
首頁我們到我們剛剛安裝的軟件根目錄下,找到www這個文件夾
雙擊打開建立一個新文件夾(在這我命名為了表單的拼音你們可以自己命名為你們想命名的名字,切記不能用中文)
在打開剛剛建立好的文件夾創建兩個文件分別命名為orderform.html和processorder.php(當然你也可以自己取名)
我們用編程軟件打開這兩個新建文件(這里我用的是Sublime Text 3)
我們首先給orderform.html寫下如下代碼
然后我們開始寫建立表單
我們訪問本地連接看一下效果
我們在給php寫入代碼
以下為注意事項
<!--<?php //為php代碼 eoch為輸出代碼 $_POST為接收html提交過來的數據 $tireqty=$_POST['tireqty']
//$sj=$_POST['sj']
//$dz=$_POST['dz'] 為給建立的變量賦值? echo "$tireqty";為輸出這個變量-->
首先我們寫入和html一下的html代碼
在寫入php接收函數
完成效果
以下是html里的代碼
<!DOCTYPE html>
<html>
<head>
<!--這里編碼為utf-8國際編碼-->
<meta charset="utf-8">
<!--這里為網站標題-->
<title>表單</title>
</head>
<body>
<!--action為提交的頁面 method為提交類型 分為兩種一種為post還一種為get -->
<form action="processorder.php" method="post">
<!--border="0"為邊框粗細-->
<table border="0">
<!-- bgcolor="#cccccc"為表格背景顏色這里為灰色 -->
<tr bgcolor="#cccccc">
<td>參數</td>
<!-- aligan="center"為表格居中 -->
<td align="center">數據</td>
</tr>
<tr>
<td>姓名</td>
<!-- <input type="text" name="tireqty" size //這里為type為提交類型
text為文本類型 name為名稱和class一樣 size為字體大小-->
<td align="center"><input type="text" name="tireqty" size="3"/></td>
</tr>
<tr>
<td>手機</td>
<td align="center"><input type="text" name="sj" size="3"/></td>
</tr>
<tr>
<td>地址</td>
<td align="center"><input type="text" name="dz" size="3"/></td>
</tr>
<tr>
<!-- <input type="text" value="提交" value為input 元素的值 colspan為合并-->
<td colspan="0" align="center"><input type="submit" value="提交"/></td>
</tr>
</table>
</form>
</body>
</html>
以下是php中代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>接收</title>
</head>
<body>
<form>
<?php
$tireqty=$_POST['tireqty'];
$sj=$_POST['sj'];
$dz=$_POST['dz'];
?>
<table border="0">
<tr>
<td>參數</td>
<td align="center">數據</td>
</tr>
<tr>
<td>姓名</td>
<td align="center"><?php echo "$tireqty"; ?></td>
</tr>
<tr>
<td>手機</td>
<td align="center"><?php echo "$sj"; ?></td>
</tr>
<tr>
<td>地址</td>
<td align="center"><?php echo "$dz"; ?></td>
</tr>
</table>
</form>
</body>
</html>
謝謝觀看,喜歡的就收藏加關注吧!
用戶在 HTML 表單中填寫并提交數據時,可以使用 PHP 來接收并處理這些數據。要實現這一點,需要創建一個 PHP 腳本來處理提交的數據,然后將 HTML 表單的 "action" 屬性設置為該腳本的文件路徑。表單提交的數據需要進行驗證和過濾,以確保數據的完整性和安全性。可以使用條件語句、正則表達式、過濾器函數等方法來驗證和過濾數據,并使用 htmlspecialchars() 函數轉義 HTML 標記,以防止 XSS 攻擊。
以下是一個簡單的示例:
HTML 表單代碼:
<form action="submit.php" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<button type="submit">Submit</button>
</form>
PHP 代碼(submit.php):
<?php
// 獲取表單提交的數據
$name=$_POST['name'];
$email=$_POST['email'];
// 在這里進行處理,例如將數據存儲到數據庫中
// ...
// 返回一個響應,告訴用戶數據已經被成功提交
echo "Thank you for submitting the form, $name!";
?>
在上面的示例中,表單的 "action" 屬性設置為 "submit.php",這意味著提交表單時,數據將被發送到 submit.php 文件中的 PHP 代碼中進行處理。PHP 代碼使用 $_POST 數組來獲取表單提交的數據,然后進行處理,例如將數據存儲到數據庫中。最后,PHP 代碼返回一個響應,告訴用戶數據已經被成功提交。在處理表單數據時,一定要對用戶輸入進行驗證和過濾,以防止安全漏洞。
需要對表單提交的數據進行驗證和過濾,以確保數據的完整性和安全性。以下是一些常見的方法:
1、驗證表單字段:在 PHP 代碼中使用條件語句和正則表達式等方法來驗證表單字段的有效性,例如驗證電子郵件地址的格式是否正確。
$email=$_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 如果郵件地址格式不正確,則顯示錯誤消息
echo "Invalid email address";
}
2、過濾輸入數據:使用 PHP 中的過濾器函數來過濾表單輸入數據,以防止 XSS 攻擊和 SQL 注入等安全漏洞。
$name=$_POST['name'];
$name=filter_var($name, FILTER_SANITIZE_STRING); // 過濾特殊字符和標簽
3、防止跨站腳本攻擊(XSS):在 PHP 代碼中使用 htmlspecialchars() 函數來轉義 HTML 標記,防止惡意腳本注入到頁面中。
$name=$_POST['name'];
$name=htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); // 轉義 HTML 標記
4、防止 SQL 注入攻擊:在 PHP 代碼中使用參數化查詢或準備語句來執行數據庫操作,以防止惡意 SQL 語句注入到數據庫中。
$stmt=$pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->execute();
通過這些方法,可以確保表單提交的數據是安全和有效的,并且能夠正常地處理和存儲到數據庫中。
組:定義,數組做什么的
PHP中數組的特點:數組沒有類型,沒有長度限制,可以有文本下標
數據遍歷:foreach遍歷,for(數組是從0開始,順序增長的索引數組,count),each+list,一些列數組函數(current,key,next,prev,end,reset)
數組相關的函數
字符串-數組:explode,implode
驗證碼:range,array_rand(獲取元素下標,順序排序),shuffle
數據結構的模擬:棧和隊列,array_push(入棧),array_pop(出棧),array_unshift,array_shift
SQL注入:addslashes,stripslashes(將添加的轉義符號去掉)
用戶在瀏覽器里輸入相關數據,數據需要提交到服務器。
瀏覽器到底是如何將數據傳遞給服務器的?
url傳遞數據
表單提交數據(form)
PHP獲取瀏覽器提交數據的方式:
$_GET:獲取用戶get方式提交的數據,url地址欄里面的數據
$_POST:獲取用于post方式提交的數據,表單提交的數據
$_REQUEST:獲取以上兩種方式提交的數據(進行合并)
嚴格的講,瀏覽器只有兩種提交數據的方式:get提交和post提交
Get提交:url里本身的數據,表單get方式提交的數據
Post提交:表單以post形式提交的數據
$_REQUEST會對post和get方式提交的數據進行合并:array_merge()
Array_merge($_GET,$_POST):如果post方式提交的數據,如果與get方式提交的數據,有同名下標,則會用post覆蓋get。
是什么絕對了是post覆蓋get而不是get覆蓋post?
是配置文件決定了順序:php.ini中一個叫做request_order的配置,決定了覆蓋的順序
這個順序決定了數據數組在array_merge()里面出現的順序
如果在低版本里,可能沒有request_order這個配置,是用variables_order配置的。
注意:
1.通常session不會放到$_REQUEST里去,$_REQUEST里通常會保存get,post和cookie數據。
2.$_REQUEST要慎用,因為$_REQUEST不安全。
Get與post的區別
1.安全性:post提交的數據看不見(一般用戶看不到),get都是在地址欄里,用戶一眼就可以看到;用戶可以直接修改地址欄的信息
2.Get方式能提交的數據是有限的(比較少),比post小很多。
3.Get和post都只能提交字符流數據,如果要進行文件的傳輸(二進制流),必須使用post方式提交(配合其他)
如何選擇使用get方式還是post方式提交數據?
1.如果數據安全性要求不高,且數據量比較少,可以使用get方式(因為簡單,不需要使用表單)
2.如果數據量大,或者安全性要求較高(秘密等),應該使用post提交
3.如果要上傳完文件,非post莫屬
在PHP5.3以前,可以修改PHP的配置文件,register_globals,能夠將用戶提交的表單,直接生成表單名字對應的變量
<form method=”post” action=”post.php”>
用戶名:<input type=”text” name=”username”/>
密碼:<Input type=”password” name=”password” />
<input type=”submit” value=”提交”/>
</form>
當用戶提交到對應的PHP界面post.php中,默認的只能使用$_POST獲得用戶的數據
$_POST[‘username’],$_POST[‘password’];
Php.ini:register_globals=on
$username,$password
從PHP5.3開始,這個功能被廢棄,5.4之后直接刪除了。
1.不安全,用戶提交的數據不是很方便驗證
2.PHP不相信任何外來數據
如果用戶表單提交界面,使用js對用戶提交的所有表單數據進行驗證。那么PHP還有沒有必要對表單提交的數據進行驗證?(數據合法性)
答案的肯定有必要!
對于PHP來講,js驗證過的數據依然是外部數據。Js可以被用戶禁用,所以PHP還必須對數據進行驗證。
如果在一個PHP腳本中,既有PHP代碼,又有html表單,同時該表單還是提交到當前頁。就需要對用戶操作進行判斷,用戶究竟是直接請求還是提交
Checkbox
復選框語法
籃球<input type=”checkbox” name=”名字” value=”值”/>
表現形式
技術實現
1.如何提交復選框的內容
表單
提交接收
選擇了多個復選框,卻只得到一個復選框的值
1)什么樣的復選框能夠被提交
復選框必須要有name屬性
只有被選中的復選框才會被提交
2)多個復選框選中之后,只有一個被提交?
因為復選框的名字重復,瀏覽器只提交一個該名字的表單元素。最后一個被選中的復選框元素。
解決方式:給不同的復選框不同的名字,可以解決選中提交被覆蓋的問題
3)無法區分復選框是否屬于一類的問題?
采用數組的形式:給定name屬性的值增加一個中括號[]
加上中括號之后,瀏覽器就不會把這個看似一樣的名字當做相同的名字
提交之后
復選框加上中括號不會覆蓋名字的原理
將表單復選框選中的元素添加到數據庫
使用PHP1405數據庫
創建hobby表
插入數據庫代碼
將數據從數據庫拿出來并顯示
之前所選擇的愛好信息,在顯示的時候,能夠自動勾選上。
1.取出數據
2.把數據從字符串轉化成數組
3.遍歷數組,匹配選擇
1)如何讓復選框默認被選中?
在表單里添加一個checked=”checked”屬性
2)如何判斷一個元素是否在數組中存在?
In_array,判斷一個元素字符在數組中存在,如果存在返回true,否則返回false
作業:將復選框顯示采用數組遍歷,構造checkbox表單的形式。
將用戶瀏覽器端的文件上傳到服務器端的過程就是文件上傳。
1) 哪里會用到文件上傳?
頭像管理,相冊管理,共享文件,文件下載。。。
2)文件上傳瀏覽器端,要做什么呢?
1. 選中文件
2. 點擊上傳
3)文件上傳服務端,要做什么呢?
1. 接收用戶上傳的文件
2. 判斷文件的類型和內容
3. 將文件保存到服務器上
如果要實現文件上傳,必須保證兩點:
1.瀏覽器要有文件表單域
保證表單的提交方式是post
<input type=”file” name=”名字” />
2.保證PHP允許文件上傳功能
配置文件開啟文件上傳功能
修改臨時文件上傳的路徑
如果不做修改,那么該目錄指的是操作系統的臨時目錄,win7對應的是C:/Windows/Temp
文件上傳
1.準備文件上傳表單
2.準備接收文件的PHP文件
3.提交測試
文件沒有上傳成功,只是上傳了一個文件名。原因?
Get或者post都只能提交字符流的字符串,不能夠提交二進制流數據,而文件本身是二進制流
4.修改文件上傳表單域,增加一個二進制流配置enctype=”multipart/form-data”
經測試,怪異的事情發生了,原來保存著$_POST里面的文件名不見了。原因?
文件上傳成功了!
但是因為腳本立即結束,臨時文件馬上被刪除了。如果想要看臨時文件是否存在
5.PHP真正接收上傳的文件
$_FILES預定義全局變量,保存用戶上傳的文件信息。
6.將臨時文件給放到指定的文件上傳目錄
PHP提供了兩個函數
Copy:將一個文件復制一份,將復制的這份放到指定的目錄(會保留源文件)
Move_uploaded_file:將上傳的文件移動到指定的目錄(不會保留源文件)
文件上傳流程
文件上傳會因為編碼的原因導致上傳的中文名字會變成亂碼。所以解決該問題的方式,就是對上傳的文件進行重命名。
文件重命名
改變的是文件的名字,不改變文件后綴名
1.修改文件名字(系統生成)
2.保證原來文件的后綴名
文件上傳函數封裝(簡單)
1.判斷用戶是否上傳文件
2.正常情況下應該判斷文件上傳錯誤信息
只要當文件上傳錯誤信息為0的時候才上傳成功的,其他都是上傳失敗
3.文件重命名
4.移動文件
5.調用文件上傳函數
PHP中沒有算法,在底層的語言當中算法應用的比較多。
基本排序算法:冒泡算法,選擇排序,插入排序,快速排序。
都是對數組進行排序,數組里面都是數值元素
冒泡算法
假設升序排序,每次將最大的那個數值給冒到最后
原理
代碼
找出元素在數組中存在的位置。(下標)
查找就是遍歷數組,拿元素與需要查找的值進行比對,比對成功則返回對應的下標,失敗則繼續直到數組末尾。
二分法
前提:要查找的數組是一個已經排序好的數組。
將數組進行折半,對中間元素進行比較,如果沒有得到結果則從另外一半再進行折半,直到找到對應的元素
原理
代碼
相關鏈接:重蔚php學習第二十八天——數組,二維數組,數組的遍歷
重蔚php學習第二十八天——數組,數組相關函數,數據結構模擬
*請認真填寫需求信息,我們會在24小時內與您取得聯系。