




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6.1PHP超級(jí)全局變量陳學(xué)平011PHP超級(jí)全局變量1PHP超級(jí)全局變量PHP中預(yù)定義了幾個(gè)超級(jí)全局變量(superglobals),這意味著它們?cè)谝粋€(gè)腳本的全部作用域中都可用。不需要特別說明,就可以在函數(shù)及類中使用。PHP超級(jí)全局變量列表:$GLOBALS$_SERVER$_REQUEST$_POST$_GET$_FILES$_ENV$_COOKIE$_SESSION1.1PHP$GLOBALS$GLOBALS是PHP的一個(gè)超級(jí)全局變量組,在一個(gè)PHP腳本的全部作用域中都可以訪問。$GLOBALS是一個(gè)包含了全部變量的全局組合數(shù)組。變量的名字就是數(shù)組的鍵。以下實(shí)例介紹了如何使用超級(jí)全局變量$GLOBALS:實(shí)例1$GLOBALS的使用實(shí)例代碼如下:<?php$x=75;$y=25;functionaddition()1.1PHP$GLOBALS{$GLOBALS['z']=$GLOBALS['x']+$GLOBALS['y'];}addition();echo$z;?>1.1PHP$GLOBALS運(yùn)行實(shí)例?100以上實(shí)例中z是一個(gè)$GLOBALS數(shù)組中的超級(jí)全局變量,該變量同樣可以在函數(shù)外訪問。1.2PHP$_SERVER$_SERVER是一個(gè)包含了諸如頭信息(header)、路徑(path)、以及腳本位置(scriptlocations)等等信息的數(shù)組。這個(gè)數(shù)組中的項(xiàng)目由Web服務(wù)器創(chuàng)建。不能保證每個(gè)服務(wù)器都提供全部項(xiàng)目;服務(wù)器可能會(huì)忽略一些,或者提供一些沒有在這里列舉出來的項(xiàng)目。以下實(shí)例中展示了如何使用$_SERVER中的元素:實(shí)例2$_SERVER的使用實(shí)例代碼如下:<?phpecho$_SERVER['PHP_SELF'];echo"<br>";1.2PHP$_SERVERecho$_SERVER['SERVER_NAME'];echo"<br>";echo$_SERVER['HTTP_HOST'];echo"<br>";echo$_SERVER['HTTP_REFERER'];echo"<br>";echo$_SERVER['HTTP_USER_AGENT'];echo"<br>";echo$_SERVER['SCRIPT_NAME'];?>1.2PHP$_SERVER運(yùn)行如果下表列出了所有$_SERVER變量中的重要元素:1.3PHP$_REQUESTPHP的$_REQUEST用于收集HTML表單提交的數(shù)據(jù)。以下實(shí)例顯示了一個(gè)輸入字段(input)及提交按鈕(submit)的表單(form)。當(dāng)用戶通過單擊"Submit"按鈕提交表單數(shù)據(jù)時(shí),表單數(shù)據(jù)將發(fā)送至<form>標(biāo)簽中action屬性中指定的腳本文件。在這個(gè)實(shí)例中,指定文件來處理表單數(shù)據(jù)。如果希望其他的PHP文件來處理該數(shù)據(jù),可以修改該指定的腳本文件名,使用超級(jí)全局變量$_REQUEST來收集表單中的input字段數(shù)據(jù):實(shí)例3$_REQUEST的使用實(shí)例代碼如下:<html><body>1.3PHP$_REQUEST<formmethod="post"action="<?phpecho$_SERVER['PHP_SELF'];?>">Name:<inputtype="text"name="fname"><inputtype="submit"></form><?php$name=$_REQUEST['fname'];echo$name;?></body></html>1.3PHP$_REQUEST運(yùn)行結(jié)果1.4PHP$_POSTPHP的$_POST被廣泛應(yīng)用于收集表單數(shù)據(jù),在HTMLform標(biāo)簽的指定該屬性:"method="post"。以下實(shí)例顯示了一個(gè)輸入字段(input)及提交按鈕(submit)的表單(form)。當(dāng)用戶通過單擊"Submit"按鈕提交表單數(shù)據(jù)時(shí),表單數(shù)據(jù)將發(fā)送至<form>標(biāo)簽中action屬性中指定的腳本文件。在這個(gè)實(shí)例中,指定文件來處理表單數(shù)據(jù)。如果希望其他的PHP文件來處理該數(shù)據(jù),可以修改該指定的腳本文件名,使用超級(jí)全局變量$_POST來收集表單中的input字段數(shù)據(jù):實(shí)例4$_POST的使用實(shí)例代碼如下:<html>1.4PHP$_POST<body><formmethod="post"action="<?phpecho$_SERVER['PHP_SELF'];?>">Name:<inputtype="text"name="fname"><inputtype="submit"></form><?php$name=$_POST['fname'];echo$name;?>1.4PHP$_POST</body></html>1.4PHP$_POST運(yùn)行結(jié)果1.5PHP$_GET$_GET同樣被廣泛應(yīng)用于收集表單數(shù)據(jù),在HTMLform標(biāo)簽的指定該屬性:"method="get"。$_GET也可以收集URL中發(fā)送的數(shù)據(jù)。假定有一個(gè)包含參數(shù)的超鏈接HTML頁(yè)面:<html><body><ahref="test_get.php?subject=PHP&web=XX1.5PHP$_GETXX.com">Test$GET</a></body></html>當(dāng)用戶單擊鏈接"Test$GET",參數(shù)"subject"和"web"將發(fā)送至"test_get.php",可以在"test_get.php"文件中使用$_GET變量來獲取這些數(shù)據(jù)。以下實(shí)例顯示了"test_get.php"文件的代碼:實(shí)例5$_GET的使用實(shí)例代碼如下:<html>1.5PHP$_GET<html><body><?php
echo"Study".$_GET['subject']."at".$_GET['web'];?></body></html><!DOCTYPE
html><html><body><a
href="test_get.php?subject=PHP&web=XXXX.com">測(cè)試
$_GET</a></body></html>1.5PHP$_GET顯示如圖謝謝6.2PHP表單、輸入及驗(yàn)證陳學(xué)平2PHP表單和用戶輸入01輸入驗(yàn)證02目錄012PHP表單和用戶輸入2PHP表單和用戶輸入PHP中的$_GET和$_POST變量用于檢索表單中的信息,比如用戶輸入。2.1PHP表單處理有一點(diǎn)很重要的事情值得注意,當(dāng)處理HTML表單時(shí),PHP能把來自HTML頁(yè)面中的表單元素自動(dòng)變成可供PHP腳本使用。實(shí)例6-1PHP表單前端頁(yè)面實(shí)例代碼如下:下面的實(shí)例包含了一個(gè)HTML表單,帶有兩個(gè)輸入框和一個(gè)提交按鈕。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í),表單的數(shù)據(jù)會(huì)被送往名為"welcome.php"的PHP文件:2.1PHP表單處理welcome.php文件代碼:歡迎<?phpecho$_POST["fname"];?>!<br>你的年齡是<?phpecho$_POST["age"];?>歲。2.1PHP表單處理歡迎陳學(xué)平!你的年齡是50歲。圖6-1測(cè)試結(jié)果2.2PHP獲取下拉菜單的數(shù)據(jù)PHP下拉菜單單選以下實(shí)例設(shè)置了下拉菜單三個(gè)選項(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="">選擇一個(gè)站點(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測(cè)試結(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="">選擇一個(gè)站點(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ù)選框可以選擇多個(gè)值: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)證在任何時(shí)候?qū)τ脩糨斎脒M(jìn)行驗(yàn)證(通過客戶端腳本),可以讓瀏覽器驗(yàn)證速度更快,并且可以減輕服務(wù)器的負(fù)載。如果用戶輸入需要插入數(shù)據(jù)庫(kù),應(yīng)該使用服務(wù)器驗(yàn)證。在服務(wù)器驗(yàn)證表單的一種好的方式是,把表單傳給它自己,而不是跳轉(zhuǎn)到不同的頁(yè)面。這樣用戶就可以在同一張表單頁(yè)面得到錯(cuò)誤信息。用戶也就更容易發(fā)現(xiàn)錯(cuò)誤了。本節(jié)將介紹如何使用PHP驗(yàn)證客戶端提交的表單數(shù)據(jù)。2.3表單驗(yàn)證PHP表單驗(yàn)證在處理PHP表單時(shí)需要考慮安全性。為了防止黑客及垃圾信息需要對(duì)表單進(jìn)行數(shù)據(jù)安全驗(yàn)證。本節(jié)介紹的HTML表單中包含以下輸入字段:必須與可選文本字段,單選按鈕,及提交按鈕:顯示效果如圖6-6所示。圖6-6顯示效果該頁(yè)面的代碼如下: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"]);
//
檢測(cè)名字是否只包含字母跟空格
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"]);
//
檢測(cè)郵箱是否合法
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"]);
//
檢測(cè)
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)證<?phpecho
"<h2>您輸入的內(nèi)容是:</h2>";echo
$name;echo
"<br>";echo
$email;echo
"<br>";echo
$website;echo
"<br>";echo
$comment;echo
"<br>";echo
$gender;?></body></html>2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證圖6-7測(cè)試效果一2.3表單驗(yàn)證實(shí)例11PHP表單驗(yàn)證圖6-8測(cè)試效果二2.3表單驗(yàn)證表單驗(yàn)證規(guī)則驗(yàn)證規(guī)則單選按鈕首先看看純HTML的表單代碼:文本字段"名字","E-mail",及"網(wǎng)址"字段為文本輸入元素,"備注"字段是textarea。HTML代碼如下所示:“名字”:<inputtype="text"name="name">E-mail:<inputtype="text"name="email">網(wǎng)址:<inputtype="text"name="website">備注:<textareaname="comment"rows="5"cols="40"></textarea>單選按鈕"性別"字段是單選按鈕,HTML代碼如下所示:性別:<inputtype="radio"name="gender"value="female">女<inputtype="radio"name="gender"value="male">男表單元素HTML表單代碼如下所示:<formmethod="post"action="<?phpechohtmlspecialchars($_SERVER["PHP_SELF"]);?>">該表單使用
method="post"
方法來提交數(shù)據(jù)。謝謝6.2.8使用PHP驗(yàn)證表單數(shù)據(jù)陳學(xué)平012.8使用PHP驗(yàn)證表單數(shù)據(jù)PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)介紹如下:通過PHP的htmlspecialchars()函數(shù)處理用戶所有提交的數(shù)據(jù)。當(dāng)使用htmlspecialchars()函數(shù)時(shí),在用戶嘗試提交以下文本域:<script>location.href('')</script>該代碼將不會(huì)被執(zhí)行,因?yàn)樗鼤?huì)被保存為HTML轉(zhuǎn)義代碼,如下所示:<script>location.href('')</script>以上代碼是安全的,可以正常在頁(yè)面顯示或者插入郵件中。PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)在右側(cè)編輯區(qū)輸入內(nèi)容當(dāng)用戶提交表單時(shí),將做以下兩件事情:使用PHPtrim()函數(shù)去除用戶輸入數(shù)據(jù)中不必要的字符(如:空格,tab,換行)。在右側(cè)編輯區(qū)輸入內(nèi)容使用PHPstripslashes()函數(shù)去除用戶輸入數(shù)據(jù)中的反斜杠(\)接下來將這些過濾的函數(shù)寫在一個(gè)自己定義的函數(shù)中,這樣可以大大提高代碼的復(fù)用性。在右側(cè)編輯區(qū)輸入內(nèi)容將函數(shù)命名為test_input()。2.test_input()函數(shù)來檢測(cè)$_POST中的所有變量在右側(cè)編輯區(qū)輸入內(nèi)容在右側(cè)編輯區(qū)輸入內(nèi)容實(shí)例12通過test_input()函數(shù)來檢測(cè)$_POST中的所有變量實(shí)例代碼如下:<!DOCTYPEHTML>PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)<html><head><metacharset="utf-8"><title>菜鳥教程()</title></head><body><?php//定義變量并默認(rèn)設(shè)置為空值$name=$email=$gender=$comment=$website="";PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)if($_SERVER["REQUEST_METHOD"]=="POST"){$name=test_input($_POST["name"]);$email=test_input($_POST["email"]);$website=test_input($_POST["website"]);$comment=test_input($_POST["comment"]);$gender=test_input($_POST["gender"]);PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)}{$data=trim($data);$data=stripslashes($data);$data=htmlspecialchars($data);return$data;}?><h2>PHP表單驗(yàn)證實(shí)例</h2>functiontest_input($data)PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)<formmethod="post"action="<?phpechohtmlspecialchars($_SERVER["PHP_SELF"]);?>">名字:<inputtype="text"name="name"><br><br>E-mail:<inputtype="text"name="email"><br><br>網(wǎng)址:<inputtype="text"name="website"><br><br>PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)備注:<textareaname="comment"rows="5"cols="40"></textarea><br><br>性別:<inputtype="radio"name="gender"value="female">女<inputtype="radio"name="gender"value="male">男<br><br>PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)<inputtype="submit"name="submit"value="Submit"></form><?phpecho"<h2>您輸入的內(nèi)容是:</h2>";echo$name;echo"<br>";echo$email;echo"<br>";echo$website;PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)echo"<br>";01echo$comment;02echo"<br>";03echo$gender;04?>05</body>06運(yùn)行效果如圖6-9、6-10所示。07PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)圖6-9測(cè)試一PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)圖6-10測(cè)試二注意:在執(zhí)行以上腳本時(shí),會(huì)通過$_SERVER["REQUEST_METHOD"]來檢測(cè)表單是否被提交。如果REQUEST_METHOD是POST,表單將被提交,數(shù)據(jù)將被驗(yàn)證。如果表單未提交將跳過驗(yàn)證并顯示空白。PHP驗(yàn)證表單數(shù)據(jù)的函數(shù)在以上實(shí)例中使用輸入項(xiàng)都是可選的,即使用戶不輸入任何數(shù)據(jù)也可以正常顯示。謝謝6.2.9PHP表單必需字段驗(yàn)證陳學(xué)平CONTENTS2.9PHP表單必需字段驗(yàn)證2.10PHP表單驗(yàn)證郵件和URL目錄012.9PHP表單必需字段驗(yàn)證2.9PHP表單必需字段驗(yàn)證本節(jié)介紹如何設(shè)置表單必需字段及錯(cuò)誤信息。PHP必需字段在上一節(jié)已經(jīng)介紹了表單的驗(yàn)證規(guī)則,"名字","E-mail",和"性別"字段是必需的,各字段不能為空。如果在前面的章節(jié)中,所有輸入字段都是可選的。在以下代碼中加入了一些新的變量:$nameErr,$emailErr,$genderErr,和$websiteErr.。這些錯(cuò)誤變量將顯示在必需字段上。再為每個(gè)$_POST變量增加了一個(gè)ifelse語(yǔ)句。這些語(yǔ)句將檢查$_POST變量是否為空(使用php的empty()函數(shù))。如果為空,將顯示對(duì)應(yīng)的錯(cuò)誤信息。如果不為空,數(shù)據(jù)將傳遞給test_input()函數(shù):必填字段的關(guān)鍵代碼如下:PHP必需字段<?php//定義變量并默認(rèn)設(shè)為空值$nameErr=$emailErr=$genderErr=$websiteErr="";$name=$email=$gender=$comment=$website="";if($_SERVER["REQUEST_METHOD"]=="POST"){if(empty($_POST["name"])){$nameErr="名字是必需的。";}else{PHP必需字段$name=test_input($_POST["name"]);if(empty($_POST["email"])){$emailErr="郵箱是必需的。";}else{$email=test_input($_POST["email"]);}if(empty($_POST["website"])){$website="";}else{}PHP必需字段$website=test_input($_POST["website"]);}if(empty($_POST["comment"])){$comment="";}else{$comment=test_input($_POST["comment"]);}if(empty($_POST["gender"])){PHP必需字段$gender=test_input($_POST["gender"]);}}?>}else{$genderErr="性別是必需的。";PHP顯示錯(cuò)誤信息在HTML實(shí)例表單中,為每個(gè)字段中添加了一些腳本,各個(gè)腳本會(huì)在信息輸入錯(cuò)誤時(shí)顯示錯(cuò)誤信息。(如果用戶未填寫信息就提交表單則會(huì)輸出錯(cuò)誤信息):實(shí)例13PHP表單必填字段判斷實(shí)例代碼如下:<!DOCTYPEHTML><html><head><metacharset="utf-8"><title>菜鳥教程</title><style>PHP顯示錯(cuò)誤信息.error{color:#FF0000;}</style></head><body><?php//定義變量并默認(rèn)設(shè)為空值$nameErr=$emailErr=$genderErr=$websiteErr="";$name=$email=$gender=$comment=$website="";PHP顯示錯(cuò)誤信息if($_SERVER["REQUEST_METHOD"]=="POST"){if(empty($_POST["name"])){$nameErr="名字是必須的。";}else{$name=test_input($_POST["name"]);}if(empty($_POST["email"])){$emailErr="郵箱是必須的。";}else{PHP顯示錯(cuò)誤信息$email=test_input($_POST["email"]);}if(empty($_POST["website"])){$website="";}else{$website=test_input($_POST["website"]);}if(empty($_POST["comment"])){$comment="";PHP顯示錯(cuò)誤信息}else{$comment=test_input($_POST["comment"]);}if(empty($_POST["gender"])){$genderErr="性別是必須的。";}else{$gender=test_input($_POST["gender"]);}}PHP顯示錯(cuò)誤信息functiontest_input($data){$data=trim($data);$data=stripslashes($data);$data=htmlspecialchars($data);return$data;}?><h2>PHP表單驗(yàn)證實(shí)例</h2><p><spanclass="error">*必填字段。</span></pPHP顯示錯(cuò)誤信息><formmethod="post"action="<?phpechohtmlspecialchars($_SERVER['PHP_SELF']);?>">名字:<inputtype="text"name="name"><spanclass="error">*<?phpecho$nameErr;?></span><br><br>E-mail:<inputtype="text"name="email">PHP顯示錯(cuò)誤信息<spanclass="error">*<?phpecho$emailErr;?></span><br><br>網(wǎng)址:<inputtype="text"name="website"><spanclass="error"><?phpecho$websiteErr;?></span><br><br>備注:<textareaname="comment"rows="5"cols="40"></textarea><br><br>PHP顯示錯(cuò)誤信息性別:<inputtype="radio"name="gender"value="female">女<inputtype="radio"name="gender"value="male">男<spanclass="error">*<?phpecho$genderErr;?></span><br><br><inputtype="submit"name="submit"value="Submit">PHP顯示錯(cuò)誤信息</form>01echo"<h2>您的輸入:</h2>";02echo$name;03echo"<br>";04echo$email;05echo"<br>";06echo$website;07echo"<br>";08echo$comment;09<?php10PHP顯示錯(cuò)誤信息echo"<br>";echo$gender;?></body></html>PHP顯示錯(cuò)誤信息測(cè)試如圖6-11所示。圖6-11測(cè)試效果先不輸入內(nèi)容,單擊submit,則出現(xiàn)圖6-12提示圖6-12提示必填022.10PHP表單驗(yàn)證郵件和URL2.10PHP表單驗(yàn)證郵件和URL本節(jié)介紹如何驗(yàn)證names(名稱),e-mails(郵件),和URL。PHP驗(yàn)證名稱以下代碼將通過簡(jiǎn)單的方式來檢測(cè)name字段是否包含字母和空格,如果name字段值不合法,將輸出錯(cuò)誤信息:$name=test_input($_POST["name"]);if(!preg_match("/^[a-zA-Z]*$/",$name)){$nameErr="只允許字母和空格";}說明如下:preg_match—進(jìn)行正則表達(dá)式匹配。語(yǔ)法:PHP驗(yàn)證名稱intpreg_match(string$pattern,string$subject[,array$matches[,int$flags]])在subject字符串中搜索與pattern給出的正則表達(dá)式相匹配的內(nèi)容。如果提供了matches,則其會(huì)被搜索的結(jié)果所填充。$matches[0]將包含與整個(gè)模式匹配的文本,$matches[1]將包含與第一個(gè)捕獲的括號(hào)中的子模式所匹配的文本,以此類推。PHP驗(yàn)證郵件以下代碼將通過簡(jiǎn)單的方式來檢測(cè)e-mail地址是否合法。如果e-mail地址不合法,將輸出錯(cuò)誤信息:$email=test_input($_POST["email"]);if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)){$emailErr="非法郵箱格式";}PHP驗(yàn)證URL以下代碼將檢測(cè)URL地址是否合法(以下正則表達(dá)式運(yùn)行URL中含有破折號(hào):"-"),如果URL地址不合法,將輸出錯(cuò)誤信息:$website=test_input($_POST["website"]);if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)){$websiteErr="非法的URL的地址";}PHP驗(yàn)證URL4.PHP驗(yàn)證Name,E-mail,和URL實(shí)例14PHP驗(yàn)證姓名Name、郵件E-mail和網(wǎng)址URL實(shí)例代碼如下:代碼如下所示:<?php//定義變量并默認(rèn)設(shè)置為空值$nameErr=$emailErr=$genderErr=$websiteErr="";$name=$email=$gender=$comment=$website="";PHP驗(yàn)證URLif($_SERVER["REQUEST_METHOD"]=="POST"){1if(empty($_POST["name"])){2$nameErr="Nameisrequired";3}else{4$name=test_input($_POST["name"]);5//檢測(cè)名字是否只包含字母跟空格6if(!preg_match("/^[a-zA-Z]*$/",$name)){7$nameErr="只允許字母和空格";8PHP驗(yàn)證URL}}if(empty($_POST["email"])){$emailErr="Emailisrequired";}else{$email=test_input($_POST["email"]);//檢測(cè)郵箱是否合法if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)){$emailErr="非法郵箱格式";PHP驗(yàn)證URL}}if(empty($_POST["website"])){$website="";}else{$website=test_input($_POST["website"]);//檢測(cè)URL地址是否合法if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)){PHP驗(yàn)證URL$websiteErr="非法的URL的地址";}}if(empty($_POST["comment"])){$comment="";}else{$comment=test_input($_POST["comment"]);}if(empty($_POST["gender"])){PHP驗(yàn)證URL$genderErr="性別是必需的";}else{$gender=test_input($_POST["gender"]);}}?>如圖6-12、6-13、6-14、6-15所示。圖6-12必填字段PHP驗(yàn)證URLlogo圖6-13非法郵件測(cè)試PHP驗(yàn)證URL圖6-14正常輸入測(cè)試PHP驗(yàn)證URL圖6-15測(cè)試數(shù)據(jù)結(jié)果謝謝PHP$_GET、$_POST、$_REQUEST
變量陳學(xué)平2.12PHP$_GET變量012.12PHP$_POST變量022.14PHP$_REQUEST變量03目錄012.12PHP$_GET變量2.12PHP$_GET變量在PHP中,預(yù)定義的$_GET變量用于收集來自method="get"的表單中的值。$_GET變量介紹預(yù)定義的$_GET變量用于收集來自method="get"的表單中的值。從帶有GET方法的表單發(fā)送的信息,對(duì)任何人都是可見的(會(huì)顯示在瀏覽器的地址欄),并且對(duì)發(fā)送信息的量也有限制。form.html文件代碼如下:實(shí)例參考網(wǎng)盤提供的源文件6fo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年易拉罐警報(bào)器項(xiàng)目投資可行性研究分析報(bào)告
- 10 《勸學(xué)》 (教學(xué)設(shè)計(jì))-2024-2025學(xué)年高一語(yǔ)文同步教學(xué)設(shè)計(jì)與知識(shí)梳理(統(tǒng)編版必修上冊(cè))
- 2025-2030年中國(guó)數(shù)字鉗型功率因素表項(xiàng)目投資可行性研究分析報(bào)告
- 低壓電工考試模擬題與參考答案
- 2025-2030年中國(guó)鎖定氣彈簧行業(yè)深度研究分析報(bào)告
- 2025年中國(guó)多線切割機(jī)行業(yè)市場(chǎng)深度分析及投資策略咨詢報(bào)告
- 2025-2030年中國(guó)香絲苗米項(xiàng)目投資可行性研究分析報(bào)告
- 2025年中國(guó)智慧公路行業(yè)市場(chǎng)深度評(píng)估及投資戰(zhàn)略規(guī)劃報(bào)告
- 2020-2025年中國(guó)浙江省酒店行業(yè)市場(chǎng)深度分析及發(fā)展前景預(yù)測(cè)報(bào)告
- 安徽重點(diǎn)項(xiàng)目-合肥小倉(cāng)房垃圾中轉(zhuǎn)站項(xiàng)目可行性研究報(bào)告
- 《道路建筑材料緒論》課件
- 2025年湖南現(xiàn)代物流職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 第二十章手術(shù)減肥及體形塑造美容手術(shù)美容外科學(xué)概論講解
- 男科話術(shù)完整版本
- 中國(guó)心力衰竭診斷和治療指南2024解讀(完整版)
- 統(tǒng)編版五年級(jí)道德與法治下冊(cè)全冊(cè)完整課件
- 辭退公務(wù)員審批表辭退國(guó)家公務(wù)員審批表
- ETF基礎(chǔ)篇--特有概念、計(jì)算邏輯及模板-文庫(kù)版(現(xiàn)金差額、現(xiàn)金替代、ETF申贖、計(jì)算模板)
- play的用法講解PPT課件
- 除塵器檢修技術(shù)規(guī)程
- 環(huán)錘式碎煤機(jī)檢修工藝規(guī)程
評(píng)論
0/150
提交評(píng)論