版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
6.2PHP表單、輸入及驗(yàn)證陳學(xué)平2PHP表單和用戶輸入01輸入驗(yàn)證02目錄012PHP表單和用戶輸入2PHP表單和用戶輸入PHP中的$_GET和$_POST變量用于檢索表單中的信息,比如用戶輸入。2.1PHP表單處理有一點(diǎn)很重要的事情值得注意,當(dāng)處理HTML表單時,PHP能把來自HTML頁面中的表單元素自動變成可供PHP腳本使用。實(shí)例6-1PHP表單前端頁面實(shí)例代碼如下:下面的實(shí)例包含了一個HTML表單,帶有兩個輸入框和一個提交按鈕。form.html文件代碼:<html><head><metacharset="utf-8"><title>菜鳥教程</title></head>2.1PHP表單處理<body><formaction="welcome.php"method="post">名字:<inputtype="text"name="fname">年齡:<inputtype="text"name="age"><inputtype="submit"value="提交"></form></body></html>當(dāng)用戶填寫完上面的表單并單擊提交按鈕時,表單的數(shù)據(jù)會被送往名為"welcome.php"的PHP文件:2.1PHP表單處理welcome.php文件代碼:歡迎<?phpecho$_POST["fname"];?>!<br>你的年齡是<?phpecho$_POST["age"];?>歲。2.1PHP表單處理歡迎陳學(xué)平!你的年齡是50歲。圖6-1測試結(jié)果2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單單選以下實(shí)例設(shè)置了下拉菜單三個選項(xiàng),表單使用GET方式獲取數(shù)據(jù),action屬性值為空表示提交到當(dāng)前腳本,通過select的name屬性獲取下拉菜單的值:實(shí)例7實(shí)現(xiàn)PHP下拉菜單單選實(shí)例代碼如下:php_form_select.php文件代碼:<?php$q=isset($_GET['q'])?htmlspecialchars($_GET['q']):'';if($q)2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單單選{if($q=='RUNOOB'){echo'菜鳥教程<br>';}elseif($q=='GOOGLE'){echo'Google搜索<br>';}elseif($q=='TAOBAO'){echo'淘寶<br>';}}2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單單選else{?><formaction=""method="get"><selectname="q"><optionvalue="">選擇一個站點(diǎn):</option><optionvalue="RUNOOB">Runoob</option><optionvalue="GOOGLE">Google</option><optionvalue="TAOBAO">Taobao</option></select><inputtype="submit"value="提交"></form><?php}?>顯示結(jié)果如圖6-2所示2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單單選圖6-2測試結(jié)果2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單多選如果下拉菜單是多選的(multiple="multiple"),可以通過將設(shè)置selectname="q[]"以數(shù)組的方式獲取,以下使用POST方式提交,代碼如下所示:php_form_select_mul.php文件代碼:實(shí)例8實(shí)現(xiàn)PHP下拉菜單多選實(shí)例代碼如下:<?php$q=isset($_POST['q'])?$_POST['q']:'';if(is_array($q)){2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單多選$sites=array('RUNOOB'=>'菜鳥教程:','GOOGLE'=>'Google搜索:','TAOBAO'=>'淘寶:',);foreach($qas$val){//PHP_EOL為常量,用于換行echo$sites[$val].PHP_EOL;}}else2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單多選{?><formaction=""method="post"><selectmultiple="multiple"name="q[]"><optionvalue="">選擇一個站點(diǎn):</option><optionvalue="RUNOOB">Runoob</option><optionvalue="GOOGLE">Google</option><optionvalue="TAOBAO">Taobao</option></select><inputtype="submit"value="提交">2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單多選</form><?php}?>輸出結(jié)果如圖6-3所示。圖6-3輸出結(jié)果2.2PHP獲取下拉菜單的數(shù)據(jù)PHP單選按鈕PHP單選按鈕表單中name屬性的值是一致的,value值是不同的,代碼如下所示:php_form_radio.php文件代碼:2.2PHP獲取下拉菜單的數(shù)據(jù)實(shí)例9實(shí)現(xiàn)PHP單選按鈕實(shí)例代碼如下:<?php$q=isset($_GET['q'])?htmlspecialchars($_GET['q']):'';if($q){if($q=='RUNOOB'){echo'菜鳥教程<br>';}elseif($q=='GOOGLE'){echo'Google搜索<br>';2.2PHP獲取下拉菜單的數(shù)據(jù)實(shí)例9實(shí)現(xiàn)PHP單選按鈕}elseif($q=='TAOBAO'){echo'淘寶<br>';}}else{?><formaction=""method="get"><inputtype="radio"name="q"value="RUNOOB"/>Runoob2.2PHP獲取下拉菜單的數(shù)據(jù)實(shí)例9實(shí)現(xiàn)PHP單選按鈕<inputtype="radio"name="q"value="GOOGLE"/>Google<inputtype="radio"name="q"value="TAOBAO"/>Taobao<inputtype="submit"value="提交"></form><?php}?>輸出結(jié)果如圖6-4所示2.2PHP獲取下拉菜單的數(shù)據(jù)實(shí)例9實(shí)現(xiàn)PHP單選按鈕圖6-4單選按鈕2.2PHP獲取下拉菜單的數(shù)據(jù)PHP的checkbox復(fù)選框PHPcheckbox復(fù)選框可以選擇多個值:php_form_select_checkbox.php文件代碼:實(shí)例10實(shí)現(xiàn)PHP復(fù)選框?qū)嵗a如下:<?Php$q=isset($_POST['q'])?$_POST['q']:'';if(is_array($q)){$sites=array('RUNOOB'=>'菜鳥教程:','GOOGLE'=>'Google搜索:','TAOBAO'=>'淘寶:',);實(shí)例10實(shí)現(xiàn)PHP復(fù)選框foreach($qas$val){//PHP_EOL為常量,用于換行echo$sites[$val].PHP_EOL;}}else{?><formaction=""method="post"><inputtype="checkbox"name="q[]"value="RUNOOB">Runoob<br><inputtype="checkbox"name="q[]"value="GOOGLE">Google<br>實(shí)例10實(shí)現(xiàn)PHP復(fù)選框<inputtype="checkbox"name="q[]"value="TAOBAO">Taobao<br><inputtype="submit"value="提交"></form><?php}?>輸出結(jié)果如圖6-5所示。圖6-5復(fù)選按鈕2.3表單驗(yàn)證在任何時候?qū)τ脩糨斎脒M(jìn)行驗(yàn)證(通過客戶端腳本),可以讓瀏覽器驗(yàn)證速度更快,并且可以減輕服務(wù)器的負(fù)載。如果用戶輸入需要插入數(shù)據(jù)庫,應(yīng)該使用服務(wù)器驗(yàn)證。在服務(wù)器驗(yàn)證表單的一種好的方式是,把表單傳給它自己,而不是跳轉(zhuǎn)到不同的頁面。這樣用戶就可以在同一張表單頁面得到錯誤信息。用戶也就更容易發(fā)現(xiàn)錯誤了。本節(jié)將介紹如何使用PHP驗(yàn)證客戶端提交的表單數(shù)據(jù)。2.3表單驗(yàn)證PHP表單驗(yàn)證在處理PHP表單時需要考慮安全性。為了防止黑客及垃圾信息需要對表單進(jìn)行數(shù)據(jù)安全驗(yàn)證。本節(jié)介紹的HTML表單中包含以下輸入字段:必須與可選文本字段,單選按鈕,及提交按鈕:顯示效果如圖6-6所示。圖6-6顯示效果該頁面的代碼如下:2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證實(shí)例代碼如下:<!DOCTYPE
HTML>
<html><head><meta
charset="utf-8"><title>菜鳥教程</title><style>.error
{color:
#FF0000;}</style></head><body>
2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證<body><?php//定義變量并默認(rèn)設(shè)置為空值$nameErr=$emailErr=$genderErr=$websiteErr="";$name=$email=$gender=$comment=$website="";if($_SERVER["REQUEST_METHOD"]=="POST"){2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證<?php//
定義變量并默認(rèn)設(shè)置為空值$nameErr
=
$emailErr
=
$genderErr
=
$websiteErr
=
"";$name
=
=
$gender
=
$comment
=
$website
=
"";if
($_SERVER["REQUEST_METHOD"]
==
"POST"){
if
(empty($_POST["name"]))
{
$nameErr
=
"名字是必需的";
}
else
{
$name
=
test_input($_POST["name"]);
//
檢測名字是否只包含字母跟空格
if
(!preg_match("/^[a-zA-Z
]*$/",$name))
{
$nameErr
=
"只允許字母和空格";
}
}2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證
if
(empty($_POST["email"]))
{
$emailErr
=
"郵箱是必需的";
}
else
{
=
test_input($_POST["email"]);
//
檢測郵箱是否合法
if
(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$emailErr
=
"非法郵箱格式";
}
}
2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證
if
(empty($_POST["website"]))
{
$website
=
"";
}
else
{
$website
=
test_input($_POST["website"]);
//
檢測
URL
地址是否合法
if
(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))
{
$websiteErr
=
"非法的
URL
的地址";
}
}2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證
if
(empty($_POST["comment"]))
{
$comment
=
"";
}
else
{
$comment
=
test_input($_POST["comment"]);
}
if
(empty($_POST["gender"]))
{
$genderErr
=
"性別是必需的";
}
else
{
$gender
=
test_input($_POST["gender"]);
}}2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證function
test_input($data){
$data
=
trim($data);
$data
=
stripslashes($data);
$data
=
htmlspecialchars($data);
return
$data;}?>2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證<h2>PHP
表單驗(yàn)證實(shí)例</h2><p><span
class="error">*
必需字段。</span></p><form
method="post"
action="<?php
echo
htmlspecialchars($_SERVER["PHP_SELF"]);?>">
名字:
<input
type="text"
name="name"
value="<?php
echo
$name;?>">
<span
class="error">*
<?php
echo
$nameErr;?></span>
<br><br>
E-mail:
<input
type="text"
name="email"
value="<?php
echo
$email;?>">
<span
class="error">*
<?php
echo
$emailErr;?></span>
<br><br>網(wǎng)址:
<input
type="text"
name="website"
value="<?php
echo
$website;?>">
<span
class="error"><?php
echo
$websiteErr;?></span>
<br><br>備注:
<textarea
name="comment"
rows="5"
cols="40"><?php
echo
$comment;?></textarea>
<br><br>
性別:
<input
type="radio"
name="gender"
<?php
if
(isset($gender)
&&
$gender=="female")
echo
"checked";?>
value="female">女
<input
type="radio"
name="gender"
<?php
if
(isset($gender)
&&
$gender=="male")
echo
"checked";?>
value="male">男
<span
class="error">*
<?php
echo
$genderErr;?></span>
<br><br>
<input
type="submit"
name="submit"
value="Submit">
</form>2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證<?php
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025上海特種設(shè)備監(jiān)督檢驗(yàn)技術(shù)研究院事業(yè)單位招聘5人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年廣東佛山市北滘鎮(zhèn)行政服務(wù)中心招聘51人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川綿陽梓潼縣事業(yè)單位公開招聘65人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年內(nèi)蒙古事業(yè)單位聯(lián)考高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度高端家具購銷合同-奢華定制沙發(fā)采購協(xié)議3篇
- 2025年度單位車輛轉(zhuǎn)讓附帶車輛改裝與定制服務(wù)協(xié)議
- 2025年度房產(chǎn)電子合同數(shù)據(jù)備份與恢復(fù)服務(wù)協(xié)議3篇
- 2025年度二零二五年度倉儲物流場地承包租賃協(xié)議3篇
- 2025年度二零二五年度酒店制服一站式采購合同
- 2025年度工業(yè)園區(qū)場地租賃合同3篇
- 高中物理-帶電粒子在勻強(qiáng)組合場中的運(yùn)動教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 買賣合同糾紛案民事判決書
- 中國近代人物研究學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 注冊安全工程師考試之安全技術(shù)分章習(xí)題通關(guān)寶典
- XX物業(yè)服務(wù)有限公司工作指引手冊(物業(yè)服務(wù)中心)
- 廣東省高等學(xué)?!扒О偈こ獭钡诹^續(xù)培養(yǎng)對象和第
- 游泳教練工作計(jì)劃工作總結(jié)述職報(bào)告PPT模板下載
- 食管癌的護(hù)理查房
- 【企業(yè)杜邦分析國內(nèi)外文獻(xiàn)綜述6000字】
- 中考數(shù)學(xué)真題變式題庫
- FZ/T 91019-1998染整機(jī)械導(dǎo)布輥制造工藝規(guī)范
評論
0/150
提交評論