Web應(yīng)用安全技術(shù)原理與實踐 課件 第3章 Web服務(wù)端原理與編程_第1頁
Web應(yīng)用安全技術(shù)原理與實踐 課件 第3章 Web服務(wù)端原理與編程_第2頁
Web應(yīng)用安全技術(shù)原理與實踐 課件 第3章 Web服務(wù)端原理與編程_第3頁
Web應(yīng)用安全技術(shù)原理與實踐 課件 第3章 Web服務(wù)端原理與編程_第4頁
Web應(yīng)用安全技術(shù)原理與實踐 課件 第3章 Web服務(wù)端原理與編程_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Web應(yīng)用安全第三章Web服務(wù)器端原理與編程本講要求21理解Web服務(wù)器的工作原理2掌握PHP語言基礎(chǔ)3掌握PHP中的文件和目錄操作4掌握PHP中的數(shù)組及應(yīng)用5掌握PHP中的字符串6掌握PHP中的代碼重用和函數(shù)7掌握PHP+MySQL編程3Web服務(wù)器工作流程Web服務(wù)器:向發(fā)出請求的瀏覽器提供文檔的程序/test.php/test.phpWeb服務(wù)器原理缺省主頁:index.html、index.php、index.jsp、......從哪里搜索?-根目錄Web服務(wù)器配置文件:httpd.conf4PHP語言基礎(chǔ)基本語法以php為文件后綴PHP開始標(biāo)志:<?phpPHP結(jié)束標(biāo)志:?>每一條語句以分號(“;”)表示語句結(jié)束單行注釋,//或#塊代碼注釋,/*注釋*/<?php//開始標(biāo)志//單行注釋/*代碼塊注釋,第一行

代碼塊注釋,第二行*/echo"HelloWeb!!";//結(jié)束標(biāo)志?>在Web服務(wù)器上執(zhí)行請求對應(yīng)的PHP文件/test.php5PHP語言基礎(chǔ)PHP語言中的基本輸出常用輸出語句或函數(shù):echo、print、printf、print_recho"HelloWeb!!<br>","Otherstring!!<br>";print("Print!<br>");printf("num=%d,%s<br>",5,"printf!");print_r(array(1,2,3,4));6PHP語言基礎(chǔ)PHP語言中的基本輸入GET輸入/POST輸入<!DOCTYPEhtml><html><head><metacharset="utf-8"></head><body><h2>歡迎訪問哈哈銀行</h2><formaction="t3.php"method="get"><label>用戶名:</label><inputtype="text"name="user"size=30/><br><label>密__碼:</label><inputtype="password"name="pass"size=30/><br><inputtype="submit"value="登錄系統(tǒng)"/></form></body></html>7<?php$user=$_GET['user'];//$_POST['user'];

$_REQUEST['user'];$pass=$_GET['pass'];//

$_POST['pass'];$_REQUEST[‘pass'];if($user=="alice"&&$pass=="123456"){

print("歡迎您,Alice!!");}else{

print("用戶名或密碼錯誤!");}?>PHP語言基礎(chǔ)PHP語言中的基本輸入$_GET/$_POST/$_REQUESTt3.php,練習(xí)體會5分鐘8PHP語言基礎(chǔ)在HTML中嵌入PHP代碼<!DOCTYPEhtml><html><head><title>HTML中嵌入PHP代碼</title><metacharset="utf-8"></head><body><h1>HTML中嵌入PHP代碼</h1><p>HTML中的一段文字</p><?phpprint("<p>PHP輸出的一段文字</p>");?></body></html>搜索PHP代碼的開始標(biāo)志“<?php”和結(jié)束標(biāo)志“?>”,對于在開始標(biāo)志和結(jié)束標(biāo)志之外的文本內(nèi)容,則直接輸出友情提醒:文件名要以PHP為后綴,否則PHP代碼不會執(zhí)行/php/t4.php/php/t4.html在HTML中添加表單?9PHP語言基礎(chǔ)數(shù)據(jù)類型布爾類型(boolean或bool):TRUE或FALSE整型(integer或int):十進制、二進制、十六進制等,如$val=10浮點型(float):如$val=3.1415926字符串:如abc,后面將詳細介紹數(shù)組(array):如$a=array(1,2),后面詳細介紹對象(object):自學(xué)內(nèi)容資源類型(resource):如打開文件句柄等NULL:表示變量沒有值,唯一的值就是NULLCallback/Callable類型:回調(diào)類型10PHP語言基礎(chǔ)常量和變量define("MAX","1024");echoMAX;美元符號“$”開始后面跟變量名變量名由字母或者下劃線開頭,后面跟上任意數(shù)量的字母,數(shù)字,或者下劃線有效變量名:$user、$pass無效變量名:$1234、$*a常量11PHP語言基礎(chǔ)常量和變量PHP是弱類型語言,變量沒有固定的數(shù)據(jù)類型,使用前不需要定義,根據(jù)變量值確定變量類型$var=NULL;$type=gettype($var);print("變量\$var類型為:".$type."<br>");$var=100;$type=gettype($var);print("變量\$var類型為:".$type."<br>");$var="abc";$type=gettype($var);print("變量\$var類型為:".$type."<br>");$var=array(1,2,3,4,5);$type=gettype($var);print("變量\$var類型為:".$type);12PHP語言基礎(chǔ)常量和變量變量作用域局部變量局部變量就是在函數(shù)內(nèi)部定義,只能在函數(shù)內(nèi)部使用的變量functionfunc(){echo"func";echo$var;}$var="abcd";echo"main<br>";echo$var."<br>";func();13PHP語言基礎(chǔ)常量和變量變量作用域—全局變量在本函數(shù)外所定義,能在本函數(shù)中使用變量,方法有:global關(guān)鍵字和超級全局變量$GLOBALSfunctionfunc(){

global$vara;echo"func<br>";echo$vara."<br>";echo$GLOBALS['varb'];}$vara="abcd";$varb=1234;func();14PHP語言基礎(chǔ)常量和變量變量作用域—超級全局變量PHP中的一類特殊的全局變量,在PHP代碼的任何位置都可以訪問這些變量變量名備注$_GET通過URL參數(shù)(HTTP協(xié)議的GET方法)傳遞給當(dāng)前腳本的變量的數(shù)組$_POST通過HTTP協(xié)議的POST方法傳遞給當(dāng)前腳本的變量的數(shù)組。$_COOKIE通過HTTPCookies方式傳遞給當(dāng)前腳本的變量的數(shù)組。$_REQUEST默認情況下包含了$_GET,$_POST和$_COOKIE的數(shù)組。$_FILES文件上傳有關(guān)的變量的數(shù)組,如上傳文件名、文件臨時存放位置等。$_SERVER由Web服務(wù)器提供的關(guān)于HTTP頭(如HOST頭、HTTP_REFERER頭等)、客戶端相關(guān)信息(如REMOTE_ADDR等)、服務(wù)器相關(guān)信息(如SERVER_ADDR)、腳本相關(guān)信息(如PHP_SELF)等的數(shù)組。$_ENV通過環(huán)境方式傳遞給當(dāng)前腳本的變量的數(shù)組,如運行腳本的用戶等。特別提醒,需要修改php.ini的缺省配置項目variables_order="EGPCS",否則$_ENV內(nèi)容為空。$_SESSION當(dāng)前腳本可用會話變量的數(shù)組。$GLOBALS包含全部變量的全局組合數(shù)組,變量的名字就是數(shù)組的鍵。15PHP語言基礎(chǔ)常量和變量測試和設(shè)置變量類型獲取或設(shè)置變量類型:gettype函數(shù)/settype函數(shù)$var="1234";$type=gettype($var);print("Value:".$var.",Type:".$type."<br>");settype($var,"int");$type=gettype($var);print("Value:".$var.",Type:".$type);數(shù)據(jù)轉(zhuǎn)換規(guī)則?"123abc"=>int/bool"abc123"=>int/bool123=>string/booltrue/false=>string/int16PHP語言基礎(chǔ)常量和變量測試變量狀態(tài)函數(shù)isset:測試變量是否存在或是否為空函數(shù)empty:變量是否存在或變量值是否為“”、0、“0”、NULL、、FALSE、空數(shù)組、變量未賦值函數(shù)unset:銷毀一個變量$b=0;if(isset($a))print("Varible\$aissetted<br>");elseprint("Varible\$aisnotsetted<br>");if(empty($a))print("Varible\$aisempty<br>");elseprint("Varible\$aisnotempty<br>");if(isset($b))print("Varible\$bissetted<br>");elseprint("Varible\$bisnotsetted<br>");if(empty($b))print("Varible\$bisempty<br>");elseprint("Varible\$bisnotempty<br>");unset($b);if(isset($b))print("Varible\$bissetted<br>");elseprint("Varible\$bisnotsetted<br>");if(empty($b))print("Varible\$bisempty<br>");elseprint("Varible\$bisnotempty<br>");17PHP語言基礎(chǔ)操作符算術(shù)操作符+(加)、-(減)、*(乘)、/(除)、%(取余)字符串連接符.賦值操作符=、復(fù)合賦值+=、遞增++和遞減--、引用操作符&引用變量都指向同一內(nèi)存地址$a=5;$b=&$a;$b=9;echo$a;//返回9$a=$b."abc";18PHP語言基礎(chǔ)操作符比較操作符操作符名稱使用方法備注==等于$a==$b比較時會進行類型轉(zhuǎn)換===恒等$a===$b變量值都類型都相同!=不等$a!=$b變量值不相等!==不恒等$a!==$b變量值或類型不相同<>

不等$a<>$b變量值不相等<

小于$a<$b

>

大于$a>$b

<=小于等于$a<=$b

>=大于等于$a>=$b

注意等于和恒等的區(qū)別19PHP語言基礎(chǔ)操作符邏輯操作符操作符名稱使用方法備注!NOT$a如果$a是false,則返回true;如果$a是true,則返回false。&&AND$a&&$b如果$a和$b都為true,則結(jié)果為true,否則為false。||OR$a||$b如果$a和$b都為true,或者有一個為true,則返回true;否則返回false。andAND$aand$b與&&相同,但優(yōu)先級較低。orOR$aor$b與||相同,但優(yōu)先級較低。xorXOR$axor$b如果$a和$b都為true或false,則返回true;否則返回false。如果操作數(shù)不是布爾類型,結(jié)果又如何?20PHP語言基礎(chǔ)操作符位操作符操作符名稱使用方法備注&按位與$a&$b將$a和$b的每一位進行與操作所得到的結(jié)果,與操作規(guī)則:1&1=1,1&0=0,0&0=0|按位或$a|$b將$a和$b的每一位進行或操作所得到的結(jié)果,或操作規(guī)則:1|1=1,1|0=1,0|0=0~按位非~$a將$a的每一位進行非操作所得到的結(jié)果^按位異或$a^$b將$a和$b的每一位進行異或操作所得到的結(jié)果,異或操作規(guī)則:1^1=0,1^0=1,0^0=0<<

左移位$a<<$b將$a左移$b位>>

右移位$a>>$b將$a右移$b位21PHP語言基礎(chǔ)操作符三元操作符condition?val1iftrue:val2iffalse$a=true;$c=$a?"abc":123;//"abc"print($c);錯誤抑制符錯誤抑制操作符@可以放置在一個PHP表達式之前,該表達式可能產(chǎn)生的任何錯誤信息都被忽略掉$a=0;$b=@(50/$a);//除零錯誤控制語句條件分支語句-if語句條件分支語句-switch語句循環(huán)語句-for語句循環(huán)語句-while語句/dowhile語句循環(huán)語句-break和continue語句22例子:將1-100中滿足以下條件的整數(shù)打印出來:5的倍數(shù);不是3的倍數(shù);打印的整數(shù)個數(shù)不超過6個$count=0;for($i=1;$i<=100;$i++){

if($i%3==0)continue;

if($i%5==0){

print($i."--");

$count++;

if($count>=6)break;

}}PHP語言基礎(chǔ)控制語句23文件操作文件打開和關(guān)閉fopen函數(shù)/fclose函數(shù)fopen(string$filename,string$mode[,bool$use_include_path=false[,resource$context]]):resource模式名稱含義r只讀只讀模式打開文件,并將文件句柄指向文件。r+讀寫讀寫模式打開文件,并將文件句柄指向文件。w寫寫模式打開文件,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建文件。w+讀寫讀寫模式打開文件,將文件指針指向文件頭并將文件大小截為零,只能對文件進行寫操作。如果文件不存在則嘗試創(chuàng)建文件。a追加寫模式打開文件,將文件指針指向文件尾。如果文件不存在則嘗試創(chuàng)建文件。a+追加讀寫模式打開文件,將文件指針指向文件尾。如果文件不存在則嘗試創(chuàng)建文件。x寫創(chuàng)建文件并以寫模式打開文件,將文件指針指向文件頭。如果文件已存在,則fopen()調(diào)用失敗并返回FALSE,并生成一條E_WARNING級別的錯誤信息。如果文件不存在則嘗試創(chuàng)建之。x+讀寫只是以讀寫模式打開文件,其他和x模式一樣。c寫如果文件不存在,則創(chuàng)建文件并以寫模式打開;如果文件存在,則以寫模式打開文件并將文件指針指向文件頭。c+讀寫只是以讀寫模式打開文件,其他和c模式一樣。24文件操作文件打開和關(guān)閉fopen函數(shù)示例25文件操作文件讀取fread函數(shù)$filename=“c:/tmp/a1.txt";$fd=fopen($filename,"r");$con=fread($fd,1024);print($con);fgets函數(shù)/fgetss函數(shù)fgets函數(shù)用于從文件中讀取一行的內(nèi)容,fgetss函數(shù)也是用于從文件中讀取一行的內(nèi)容,不過會過濾任何HTML和PHP的標(biāo)簽$filename=“c:/tmp/a2.txt";$fd=fopen($filename,"r");print("<xmp>");while($con=fgets($fd)){print($con);}fclose($fd);print("\r\n");$fd=fopen($filename,"r");while($con=@fgetss($fd)){print($con);}print("</xmp>");26文件操作文件讀取readfile函數(shù)讀取文件并寫入到輸出緩沖$filename="c:/tmp/a2.txt";print("<xmp>");$ret=readfile($filename);print("</xmp>");print($ret);27文件操作文件讀取file函數(shù)把整個文件讀入一個數(shù)組中,一個元素對應(yīng)文件的一行$filename="c:/tmp/a5.txt";$con=file($filename);print_r($con);file_get_contents函數(shù)將整個文件讀入一個字符串$filename="c:/tmp/a5.txt";$con=file_get_contents($filename);print($con);28文件操作文件寫fwrite/fputs函數(shù)將字符串寫入文件,fputs函數(shù)是fwrite函數(shù)的別名$filename="c:/tmp/a6.txt";$str="Testfile......";$fd=fopen($filename,'w');$ret=fwrite($fd,$str);fclose($fd);打開文件c:/tmp/a6.txt檢查結(jié)果file_put_contents函數(shù)將數(shù)據(jù)(如字符串或數(shù)組等)寫入文件$filename="c:/tmp/a7.txt";$a=array("1"=>"a","2"=>"b");$ret=file_put_contents($filename,$a);打開文件c:/tmp/a7.txt檢查結(jié)果如果文件不存在,結(jié)果如何?如果原來文件存在,并且有內(nèi)容,結(jié)果又如何?文件的打開方式,對結(jié)果有什么影響?如以“a”方式打開。29文件操作目錄操作相關(guān)dirname函數(shù):獲取一個路徑名的目錄部分basename函數(shù):返回路徑中的文件名部分$path="C:/wamp64/www/test/a.txt";print("文件路徑:".$path."<br>");$dir=dirname($path);print("目錄名:".$dir."<br>");$filename=basename($path);print("文件名:".$filename."<br>");30文件操作其他文件和目錄操作file_exists函數(shù):查看文件或目錄是否存在filesize函數(shù):確定文件大小unlink函數(shù):刪除文件feof函數(shù):判斷是否文件結(jié)尾is_file函數(shù):判斷路徑是否是文件is_dir函數(shù):判斷路徑是否是目錄$path="C:/wamp64/www/test";if(is_dir($path))print("$path是目錄!<br>");elseprint("$path不是目錄!<br>");$file="C:/wamp64/www/test/a.txt";if(is_file($file))print("$file是文件!<br>");elseprint("$file不是文件!<br>");31數(shù)組數(shù)組結(jié)構(gòu)數(shù)組是可以存儲一組或一系列數(shù)值的變量;每一個元素都存儲一組或一系列數(shù)值的變量。由一個關(guān)鍵字(key)和一個值(value)組成,關(guān)鍵字也被稱為索引。PHP數(shù)組數(shù)字索引$a=array(0=>'a',1=>'b',2=>'c');$b=array('a','b','c');print_r($a);//Array([0]=>a[1]=>b[2]=>c)print_r($b);//Array([0]=>a[1]=>b[2]=>c)PHP數(shù)組字符串索引$c=array(‘a(chǎn)lice’=>‘student’,‘bob’=>‘worker’);32數(shù)組數(shù)組創(chuàng)建array函數(shù)以及數(shù)組操作符[]來創(chuàng)建數(shù)組可以帶上關(guān)鍵字(key),如果沒有關(guān)鍵字,則自動添加數(shù)字關(guān)鍵字$a=array(3,9,5,7,2);$b=["a","b","c","d","e"];$c=array("aclie"=>"girl","bob"=>"boy",5=>"time");print_r($a);print("<br>");print_r($b);print("<br>");print_r($c);33數(shù)組數(shù)組創(chuàng)建通過枚舉的方式組個創(chuàng)建數(shù)組的元素//創(chuàng)建數(shù)組$a$a[]=3;$a[]=9;$a[]=5;$a[]=7;$a[]=2;//創(chuàng)建數(shù)組$b$b[0]="a";$b[1]="b";$b[2]="c";$b[3]="d";$b[4]="e";//創(chuàng)建數(shù)組$c$c["alice"]="girl";$c["bob"]="boy";$c[]="time";print_r($a);print("<br>");print_r($b);print("<br>");print_r($c);34數(shù)組數(shù)組訪問數(shù)字索引數(shù)組訪問字符串索引數(shù)組訪問混合索引數(shù)組訪問$a=array(0=>'a',1=>'b',2=>'c');$b=array('a','b','c');print($a[0]);print($b{1});//PHP7.4不推薦使用,PHP8不再支持$c=array("aclie"=>"girl","bob"=>"boy",5=>"time");print($c['alice']);//girl$c=array("a"=>"alice","b"=>"bob",0=>"other","zero");print($c['a']);//aliceprint($c[0]);//otherprint($c[1]);//zeroprint($c[‘0’]);輸出什么?35數(shù)組訪問foreach語句遍歷數(shù)組$a=array(3,9,5,7);foreach($aas$value){print($value.",");}foreach(數(shù)組as$value){語句塊}方式一foreach(數(shù)組as$key=>$value){語句塊}方式二$a=array(3=>"apple",9=>"balana",5=>"peach",7=>"orange");foreach($aas$key=>$value){print($key."=>".$value.",");}數(shù)組36數(shù)組數(shù)組操作計算數(shù)組元素個數(shù)$a=array(1,2,3,4,5);$num=count($a);//sizeofprint($num);//5數(shù)組首元素添加和刪除$a=array('a','b','c','d');$b=array_shift($a);print($b);//aprint_r($a);//array('b','c','d')$c=array_unshift($a,$b);print($c);//4print_r($a);//array('a','b','c','d')37數(shù)組數(shù)組操作針對數(shù)組的入棧和出棧操作<?php$a=array(1,2,3,4,5);$b=6;array_push($a,$b);//$a[]=$b;print_r($a);//array(1,2,3,4,5,6)$c=array_pop($a);print($c);//6print_r($a);//array(1,2,3,4,5)?>38數(shù)組數(shù)組操作數(shù)組排序函數(shù)sort根據(jù)元素值進行排序,函數(shù)asort根據(jù)元素值排序并保留關(guān)鍵字,函數(shù)ksort根據(jù)關(guān)鍵字進行排序。$a=array("carl"=>4,"alice"=>3,"bob"=>1);$b=$a;$c=$a;sort($a);print_r($a);//array(1,3,4)asort($b);print_r($b);//array("bob"=>1,"alice"=>3,"carl"=>4)ksort($c);print_r($c);//array("alice"=>3,"bob"=>1,"carl"=>4)39數(shù)組多維數(shù)組EnglishWeb201908001Alice201908001Alice201908002Bob201908004Lisi201908003Carl201908005Wangwu$classes=array("English"=>array("201908001"=>"Alice","201908002"=>"Bob","201908003"=>"Carl"),"Web"=>array("201908001"=>“Alice","201908004"=>"Lisi","201908005"=>"Wangwu",));print_r($class);$classes=array("English"=>array(

array("201908001","Alice"),

array("201908002","Bob"),array("201908003","Carl")),"Web"=>array(array("201908001",“Alice"),array("201908004","Lisi"),array("201908005","Wangwu")));print_r($class);數(shù)組元素的值本身也可以是數(shù)組,這樣就形成了多維數(shù)組學(xué)生選課情況40字符串字符串(string)表示形式PHP中的字符串是由一系列字符組成,它不支持Unicode,有4種表示形式:單引號、雙引號、Heredoc結(jié)構(gòu)、Nowdoc結(jié)構(gòu)$a='a\'b\\c';$b="1234$a6";$c='1234$a6';//Heredoc結(jié)構(gòu)$d=<<<EOFxyz999$aabcEOF;//Nowdoc結(jié)構(gòu)$e=<<<'END'888ok$a123END;print($a."<br>");print($b."<br>");print($c."<br>");print($d."<br>");print($e."<br>");41字符串字符串連接和分割explode函數(shù):將一個字符串分割成幾個子字符串$str="abc@123@xyz@com";$a=explode("@",$str);print_r($a);print("<br>");$a=explode("@",$str,3);print_r($a);如何分詞?如:Thisisatest42字符串字符串連接和分割implode/join函數(shù):將字符串連接起來$strarray=array(1=>"abc","b"=>"123","xyz","com");$str1=implode("-*-",$strarray);print($str1."<br>");$str2=implode($strarray);print($str2."<br>");$str3=implode("",$strarray);print($str3."<br>");43字符串字符串連接和分割substr函數(shù):獲取一個字符串的子字符串$str='0123456';$str1=substr($str,1);//從第1號字符開始,123456print($str1."<br>");$str2=substr($str,2,4);//從第1號開始取4個字符,2345print($str2."<br>");$str3=substr($str,-3);//從尾部起第3個字符開始,456print($str3."<br>");$str4=substr($str,1,-2);//從第1號開始,到尾部,忽略尾部2個字符,1234print($str4."<br>");函數(shù)的參數(shù)個數(shù)可變44字符串字符串比較strcmp函數(shù):比較兩個字符串$str1="a2";$str2="a10";$cmp1=strcmp($str1,$str2);print($cmp1);//1$cmp2=strnatcmp($str1,$str2);print($cmp2);//-1strcasecmp函數(shù):比較兩個字符串,并且不區(qū)分大小寫strnatcmp函數(shù):以人類習(xí)慣對數(shù)字型字符串進行排序的比較算法,這就是“自然順序”,如a2<a1045字符串字符串匹配和替換strstr/strchr函數(shù):字符串中查找另一個字符串,如果找到,則返回匹配字符串之前或之后子字符串$email="zhangsan@";print("Email:".$email."<br>");$domain=strstr($email,'@');print("Domain:{$domain}<br>");$name=strstr($email,'@',true);print("Name:".$name."<br>");46字符串字符串匹配和替換strpos函數(shù):字符串中搜索子字符串的首次位置$str="SSSabc123abcxyzabc";$needle="abc";$offset=strpos($str,$needle);//正向搜索,3print($offset."--");$offset=strpos($str,$needle,5);//從第5號字符開始搜索,9print($offset."--");$offset=strpos($str,$needle,-4);//從倒數(shù)第4號字符開始搜索,15print($offset."--");47字符串字符串匹配和替換str_replace函數(shù):查找并替換子字符串$str="abc123abcxyzabc";$needle="abc";$new_needle="666";$count=0;$new_str=str_replace($needle,$new_needle,$str,$count);print($str."<br>");print($new_str."<br>");print($count);多項搜索和替換?使用數(shù)組?48代碼重用和函數(shù)文件包含文件包含可以引用其他文件中的代碼,很方便實現(xiàn)代碼的重用include語句:包含并運行指定文件print("Hello,include.php<br>");include.php文件內(nèi)容test.php文件內(nèi)容include('include.php');include('include.php');49代碼重用和函數(shù)文件包含include_once語句include_once語句與include語句類似,唯一的區(qū)別就是如果該文件已經(jīng)被包含過,則不會再次包含require語句require語句和include語句類似,唯一的區(qū)別就是如果語句執(zhí)行失敗,require語句會產(chǎn)生一個錯誤并終止程序運行,而include語句只會產(chǎn)生一個警告,并且程序不會終止運行require_once語句require_once語句與require語句類似,唯一的區(qū)別就是如果該文件已經(jīng)被包含過,則不會再次包含體會一下效果?50代碼重用和函數(shù)自定義函數(shù)functiontest(參數(shù)){

函數(shù)代碼塊;}基本格式參數(shù)有兩種傳遞方式,一是值傳遞,二是引用傳遞(參數(shù)前有“&”符號)函數(shù)中的return語句,將從函數(shù)調(diào)用中返回到調(diào)用函數(shù),return語句有兩個基本的返回形式,一種是直接返回,另一種是帶返回值返回例子:一個計算自然數(shù)N的階乘N!的函數(shù)51自定義函數(shù)代碼重用和函數(shù)自定義函數(shù)示例functionfactorial($n,&$total){//值傳遞、引用傳遞$total=1;if($n<0)return0;//直接返回或帶值返回for($i=1;$i<=$n;$i++){

$total=$total*$i;}return1;}$n=0;if(isset($_GET['n']))$n=(int)$_GET['n'];$ret=factorial($n,$total);if($ret)print($n."!=".$total);elseprint("Invalidinput");http:///php/t28.php?n=xx52內(nèi)置函數(shù)代碼重用和函數(shù)匿名函數(shù)匿名函數(shù)通常沒有函數(shù)名字,一般應(yīng)用于回調(diào)函數(shù)內(nèi)置函數(shù)是指PHP解釋器自帶的,不需要定義可以直接調(diào)用的函數(shù),如輸出函數(shù)、數(shù)組操作函數(shù)、文件操作函數(shù)、字符串操作函數(shù)等$a=array(1,2,3,4,5);array_walk($a,function($val){print($val."-");});53動態(tài)函數(shù)代碼重用和函數(shù)函數(shù)名可以是一個變量functionfuncA(){print("functionA");}functionfuncB(){print("functionB");}$func="funcA";//函數(shù)名有變量確定if(isset($_GET['func']))$func=$_GET['func'];$func();//動態(tài)函數(shù)調(diào)用http:///php/t29.php?func=funcX54PHP使用MySQL數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫是常用的數(shù)據(jù)庫類型,MySQL是一種關(guān)系型數(shù)據(jù)庫系統(tǒng)?;靖拍顢?shù)據(jù)表所謂的關(guān)系就是數(shù)據(jù)表,由行和列組成,其中行表示不同的數(shù)據(jù)記錄,列表示數(shù)據(jù)屬性idnamepassword201909001zhangsanzs123456201909002lisils654321201909003wangwu123456ww201909004zhaoliu654321zlEnglish成績表Networks成績表idgradeidgrade201909001782019090014520190900266201909002892019090039020190900376201909004532019090049755PHP使用MySQL數(shù)據(jù)庫基本概念列數(shù)據(jù)表中的每一列都有一個唯一的名字(稱為列名、字段或?qū)傩裕?、?shù)據(jù)類型行數(shù)據(jù)表的每一行表示數(shù)據(jù)表的一條數(shù)據(jù)記錄對于數(shù)據(jù)表中的每一行數(shù)據(jù)記錄,必須能夠區(qū)分開,以確定數(shù)據(jù)記錄的唯一性數(shù)據(jù)記錄的唯一性一般使用一個特定的列,并使得該列所有的值都不相同的方式來實現(xiàn),該列就稱為“鍵”或“主鍵”值每一行對應(yīng)每一列的單個數(shù)據(jù)56PHP使用MySQL數(shù)據(jù)庫SQL語句基礎(chǔ)StructedQueryLanguage(結(jié)構(gòu)化查詢語句,SQL),關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言,MySQL數(shù)據(jù)庫系統(tǒng)支持大部分的標(biāo)準(zhǔn)SQL語句啟動MySQL命令行控制端C:\>mysql–hhostname–uusername-p57PHP使用MySQL數(shù)據(jù)庫SQL語句基礎(chǔ)創(chuàng)建數(shù)據(jù)庫查看數(shù)據(jù)庫刪除數(shù)據(jù)庫使用數(shù)據(jù)庫58PHP使用MySQL數(shù)據(jù)庫SQL語句基礎(chǔ)創(chuàng)建數(shù)據(jù)表數(shù)字類型:包括整數(shù)(int或integer)、浮點數(shù)(float)等字符串類型:比較常用的是普通字符串,包括char(size)和varchar(size)日期和時間類型:比較常用的有日期類型(date)、時間類型(time)及日期時間類型(datetime)主鍵(primarykey)不能為空(notnull)59SQL語句基礎(chǔ)查看數(shù)據(jù)表PHP使用MySQL數(shù)據(jù)庫刪除數(shù)據(jù)表在數(shù)據(jù)表中插入數(shù)據(jù)60SQL語句基礎(chǔ)查詢數(shù)據(jù)PHP使用MySQL數(shù)據(jù)庫selectcolumnsfromtablenamewhereconditionslimitm,norderbyicoulums是指要查詢的列名,如果選擇所有的列,則使用“*”表示tablename表示要查詢的數(shù)據(jù)表名conditions表示查詢的條件limitm,n表示在獲取結(jié)果時,從m條記錄開始(MySQL的記錄是從0開始計數(shù)),獲取n條記錄信息orderbyi表示按照第i列進行排序,也可以直接使用列名查詢數(shù)據(jù)是數(shù)據(jù)庫操作中最常用,也是最為復(fù)雜的操作,這里只是給出了比較常用的一些場景61SQL語句基礎(chǔ)查詢數(shù)據(jù)PHP使用MySQL數(shù)據(jù)庫查詢表中所有的記錄62SQL語句基礎(chǔ)查詢數(shù)據(jù)PHP使用MySQL數(shù)據(jù)庫根據(jù)條件查詢表中的記錄63SQL語句基礎(chǔ)查詢數(shù)據(jù)PHP使用MySQL數(shù)據(jù)庫根據(jù)條件查詢表中的記錄64SQL語句基礎(chǔ)查詢數(shù)據(jù)PHP使用MySQL數(shù)據(jù)庫限制獲取的記錄信息65SQL語句基礎(chǔ)查詢數(shù)據(jù)PHP使用MySQL數(shù)據(jù)庫對獲取的記錄信息排序66SQL語句基礎(chǔ)修改數(shù)據(jù)表中的數(shù)據(jù)PHP使用MySQL數(shù)據(jù)庫updatetablenamesetcol1=val1[,col2=val2,……];67SQL語句基礎(chǔ)導(dǎo)入SQL語句文件PHP使用MySQL數(shù)據(jù)庫68PHP使用MySQL數(shù)據(jù)庫PHP與MySQL數(shù)據(jù)庫編程一般步驟第一步:連接數(shù)據(jù)庫系統(tǒng)并選擇數(shù)據(jù)庫第二步:構(gòu)造SQL語句第三步:執(zhí)行SQL語句第四步:獲取SQL語句執(zhí)行結(jié)果數(shù)據(jù)庫訪問接口mysqli接口在php.ini配置文件中,將“extension=mysqli”前的注釋符號(分號“;”)去掉,重新啟動PDO接口即在php.ini配置文件中,將“extension=php_pdo.dll”和“extension=php_pdo_mysql.dll”注釋符號去掉,重新啟動ODBC接口需要ODBC連接MySQL數(shù)據(jù)庫的驅(qū)動程序(MySQL官網(wǎng)可以下載)69PHP使用MySQL數(shù)據(jù)庫PHP與MySQL數(shù)據(jù)庫編程mysqli接口連接數(shù)據(jù)庫系統(tǒng)mysqli_connect(string$host,string$username,string$password[,string$dbname,int$port,string$socket]):mysqli$db=mysqli_connect("","root","123456",“

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論