本書內(nèi)容包括PHP開發(fā)環(huán)境、PHP語言基礎(chǔ)、PHP數(shù)組與字符串、PHP面向?qū)ο蟪绦蛟O(shè)計(jì)、構(gòu)建PHP互動(dòng)頁面、MySQL數(shù)據(jù)庫基礎(chǔ)、PHP訪問MySQL數(shù)據(jù)庫、PHP常用功能模塊、PHP安全編程、學(xué)生學(xué)籍成績(jī)管理系統(tǒng)開發(fā)實(shí)例等。學(xué)生學(xué)籍成績(jī)管理系統(tǒng)開發(fā)實(shí)例通過開發(fā)一個(gè)實(shí)用系統(tǒng)來闡述PHP的開發(fā)技術(shù)和技巧。按照軟件產(chǎn)品開發(fā)的規(guī)范與流程, 對(duì)系統(tǒng)進(jìn)行需求分析、數(shù)據(jù)庫設(shè)計(jì)以及功能模塊的劃分, 有利于讀者了解一個(gè)實(shí)際項(xiàng)目的開發(fā)流程。
1.以WampServer(即基于Windows平臺(tái)的Apache、MySQL、PHP的組合)為編譯器,介紹了PHP 5.5的基礎(chǔ)知識(shí)、特點(diǎn)和具體的應(yīng)用。
2.內(nèi)容講解由淺入深,循序漸進(jìn),適合自學(xué),具有實(shí)用性、可操作性。書中對(duì)每個(gè)知識(shí)點(diǎn)都有實(shí)例演示。
3.每章后配有了2-4道實(shí)訓(xùn)題,進(jìn)一步檢驗(yàn)學(xué)生對(duì)各個(gè)知識(shí)點(diǎn)的綜合應(yīng)用能力。
4.書中所有實(shí)例程序均上機(jī)調(diào)試通過,通過閱讀本書,結(jié)合上機(jī)實(shí)訓(xùn),讀者就能在較短的時(shí)間內(nèi)基本掌握PHP及其應(yīng)用技術(shù)。
第1章PHP開發(fā)環(huán)境
1.1PHP簡(jiǎn)介
1.1.1靜態(tài)網(wǎng)頁和動(dòng)態(tài)網(wǎng)頁
1.1.2動(dòng)態(tài)網(wǎng)頁設(shè)計(jì)技術(shù)
1.1.3PHP語言的特點(diǎn)
1.2集成開發(fā)環(huán)境配置
1.2.1WampServer簡(jiǎn)介
1.2.2WampServer安裝
1.2.3WampServer配置
1.2.4PHP編輯器
1.3典型PHP程序?qū)嵗?
1.3.1在Dreamweaver中創(chuàng)建PHP站點(diǎn)
1.3.2最簡(jiǎn)單的PHP程序
1.3.3同一頁面上的PHP交互
1.3.4不同頁面上的PHP交互
1.4項(xiàng)目實(shí)訓(xùn)
實(shí)訓(xùn)1在Dreamweaver中創(chuàng)建PHP站點(diǎn)
實(shí)訓(xùn)2創(chuàng)建一個(gè)PHP網(wǎng)頁
思考與練習(xí)
第2章PHP語言基礎(chǔ)
2.1PHP入門
2.2PHP數(shù)據(jù)類型
2.2.1整型
2.2.2浮點(diǎn)型
2.2.3字符串型
2.2.4布爾型
2.2.5數(shù)組
2.2.6對(duì)象
2.2.7NULL類型
2.2.8資源類型
2.3PHP變量
2.3.1自定義變量
2.3.2預(yù)定義變量
2.3.3外部變量
2.4運(yùn)算符與表達(dá)式
2.5程序流程控制
2.5.1條件控制語句
2.5.2循環(huán)控制語句
2.5.3跳轉(zhuǎn)語句
2.5.4文件包含語句
2.6PHP函數(shù)
2.6.1函數(shù)的定義
2.6.2函數(shù)的返回值
2.6.3函數(shù)的調(diào)用
2.6.4參數(shù)的傳遞
2.7綜合實(shí)例
2.7.1多項(xiàng)選擇題
2.7.2計(jì)算器程序
2.8項(xiàng)目實(shí)訓(xùn)
實(shí)訓(xùn)1條件控制語句的應(yīng)用
實(shí)訓(xùn)2循環(huán)控制語句的應(yīng)用
思考與練習(xí)
第3章PHP數(shù)組與字符串
3.1數(shù)組及處理
3.1.1數(shù)組的創(chuàng)建和初始化
3.1.2鍵名和值的操作
3.1.3數(shù)組的排序
3.2字符串操作
3.2.1常用的字符串函數(shù)
3.2.2字符串與HTML
3.2.3其他字符串函數(shù)
3.3正則表達(dá)式
3.3.1基礎(chǔ)知識(shí)
3.3.2正則表達(dá)式在JavaScript中的應(yīng)用
3.3.3正則表達(dá)式在PHP中的應(yīng)用
3.4項(xiàng)目實(shí)訓(xùn)
實(shí)訓(xùn)1數(shù)組和循環(huán)嵌套
實(shí)訓(xùn)2正則表達(dá)式的應(yīng)用
思考與練習(xí)
第4章PHP面向?qū)ο蟪绦蛟O(shè)計(jì)
4.1基本概念
4.2類與對(duì)象
4.2.1創(chuàng)建類
4.2.2類的屬性和方法
4.2.3構(gòu)造函數(shù)和析構(gòu)函數(shù)
4.2.4創(chuàng)建對(duì)象
4.3類的繼承
4.3.1子類的創(chuàng)建
4.3.2方法覆蓋
4.4抽象類與接口
4.4.1抽象類
4.4.2接口
4.5實(shí)例——設(shè)計(jì)一個(gè)學(xué)生類
4.6項(xiàng)目實(shí)訓(xùn)——設(shè)計(jì)一個(gè)盒子類
思考與練習(xí)
第5章構(gòu)建PHP互動(dòng)網(wǎng)頁
5.1PHP與表單
5.1.1獲取表單數(shù)據(jù)的方法
5.1.2實(shí)例——使用PHP腳本驗(yàn)證表單數(shù)據(jù)
5.2URL處理
5.2.1獲取URL參數(shù)值
5.2.2解析URL
5.2.3URL編碼和解碼
5.3頁面跳轉(zhuǎn)
5.3.1在PHP腳本中實(shí)現(xiàn)頁面跳轉(zhuǎn)
5.3.2在HTML標(biāo)記中實(shí)現(xiàn)頁面跳轉(zhuǎn)
5.3.3在JavaScript腳本中實(shí)現(xiàn)頁面跳轉(zhuǎn)
5.4在PHP中嵌入JavaScript
5.4.1JavaScript簡(jiǎn)介
5.4.2JavaScript語句
5.4.3JavaScript內(nèi)置對(duì)象
5.4.4window對(duì)象的方法
5.4.5window對(duì)象的子對(duì)象
5.4.6實(shí)例——使用JavaScript腳本驗(yàn)證表單數(shù)據(jù)
5.5會(huì)話管理
5.5.1會(huì)話的工作原理
5.5.2實(shí)現(xiàn)會(huì)話
5.5.3Session的應(yīng)用
5.6項(xiàng)目實(shí)訓(xùn)
實(shí)訓(xùn)1使用PHP腳本驗(yàn)證表單數(shù)據(jù)
實(shí)訓(xùn)2使用JavaScript腳本驗(yàn)證表單數(shù)據(jù)
實(shí)訓(xùn)3會(huì)話超時(shí)
思考與練習(xí)
第6章MySQL數(shù)據(jù)庫基礎(chǔ)
6.1MySQL基礎(chǔ)知識(shí)
6.1.1MySQL簡(jiǎn)介
6.1.2MySQL數(shù)據(jù)對(duì)象
6.1.3MySQL數(shù)據(jù)類型
6.2使用Navicat_Premium創(chuàng)建和管理數(shù)據(jù)庫
6.2.1數(shù)據(jù)庫的創(chuàng)建和刪除
6.2.2創(chuàng)建數(shù)據(jù)表
6.2.3數(shù)據(jù)庫的復(fù)制
6.3使用Navicat_Premium編輯TSQL語句
6.3.1編輯TSQL語句的步驟
6.3.2使用局部變量
6.3.3流程控制語句
6.4使用Navicat_Premium創(chuàng)建存儲(chǔ)過程
6.4.1使用查詢編輯器創(chuàng)建存儲(chǔ)過程
6.4.2使用函數(shù)向?qū)?chuàng)建存儲(chǔ)過程
6.5使用Navicat_Premium創(chuàng)建觸發(fā)器
6.5.1觸發(fā)器的分類
6.5.2創(chuàng)建和使用觸發(fā)器
6.6項(xiàng)目實(shí)訓(xùn)
實(shí)訓(xùn)1MySQL數(shù)據(jù)庫和表的創(chuàng)建
實(shí)訓(xùn)2使用MySQL編寫TSQL程序
實(shí)訓(xùn)3MySQL存儲(chǔ)過程的創(chuàng)建和調(diào)用
實(shí)訓(xùn)4MySQL觸發(fā)器的創(chuàng)建和應(yīng)用
思考與練習(xí)
第7章PHP訪問MySQL數(shù)據(jù)庫
7.1PHP訪問MySQL的基本流程
7.1.1連接MySQL服務(wù)器
7.1.2選擇數(shù)據(jù)庫
7.1.3執(zhí)行SQL語句
7.1.4關(guān)閉連接
7.2處理結(jié)果集
7.2.1從結(jié)果集中獲取記錄
7.2.2其他MySQL函數(shù)
7.3結(jié)果集的分頁
7.4項(xiàng)目實(shí)訓(xùn)
實(shí)訓(xùn)1對(duì)數(shù)據(jù)表進(jìn)行插入操作
實(shí)訓(xùn)2將指定的數(shù)據(jù)表以表格形式顯示在網(wǎng)頁中
實(shí)訓(xùn)3將任意一個(gè)數(shù)據(jù)表以表格形式顯示在網(wǎng)頁中
思考與練習(xí)
第8章PHP常用功能模塊
8.1目錄與文件操作
8.1.1目錄操作
8.1.2文件的打開與關(guān)閉
8.1.3文件的寫入
8.1.4文件的讀取
8.1.5文件的上傳與下載
8.1.6其他常用文件函數(shù)
8.1.7實(shí)例——投票統(tǒng)計(jì)
8.2日期和時(shí)間
8.2.1UNIX時(shí)間戳
8.2.2時(shí)間轉(zhuǎn)化為時(shí)間戳
8.2.3獲取日期和時(shí)間
8.2.4其他日期和時(shí)間函數(shù)
8.2.5實(shí)例——生成日歷
8.3圖形處理
8.3.1安裝PHP圖像庫
8.3.2創(chuàng)建圖形
8.3.3繪制圖形
8.3.4圖形的具體操作
8.3.5其他的圖形函數(shù)
8.3.6實(shí)例——自動(dòng)生成驗(yàn)證碼
8.4項(xiàng)目實(shí)訓(xùn)
實(shí)訓(xùn)1刪除指定路徑中的非空文件夾
實(shí)訓(xùn)2文件的上傳
實(shí)訓(xùn)3將服務(wù)器的日期、時(shí)間、星期幾信息顯示在網(wǎng)頁中
思考與練習(xí)
第9章PHP安全編程
9.1安全配置PHP
9.1.1安全模式的配置
9.1.2其他與安全有關(guān)的參數(shù)配置
9.1.3Apache的降權(quán)運(yùn)行
9.2SQL注入攻擊與防范
9.2.1SQL注入攻擊原理及特點(diǎn)
9.2.2SQL注入攻擊的方法
9.2.3SQL注入攻擊的檢測(cè)
9.2.4SQL注入攻擊的防范
9.3跨站腳本攻擊
9.3.1跨站腳本攻擊概述
9.3.2跨站腳本攻擊的實(shí)例
9.3.3防范跨站腳本攻擊的方法
9.4身份認(rèn)證系統(tǒng)的制作
9.4.1PHP的加密函數(shù)
9.4.2用戶注冊(cè)模塊的實(shí)現(xiàn)
9.4.3用戶登錄模塊的實(shí)現(xiàn)
9.5項(xiàng)目實(shí)訓(xùn)——修改密碼模塊的實(shí)現(xiàn)
思考與練習(xí)
第10章學(xué)生學(xué)籍成績(jī)管理系統(tǒng)開發(fā)實(shí)例
10.1系統(tǒng)需求分析
10.2數(shù)據(jù)庫設(shè)計(jì)
10.3系統(tǒng)配置和數(shù)據(jù)庫連接
10.4系統(tǒng)管理員子系統(tǒng)的實(shí)現(xiàn)
10.4.1教師管理
10.4.2班級(jí)管理
10.4.3學(xué)生學(xué)籍管理
10.4.4課程設(shè)置管理
10.4.5開課表管理
10.4.6學(xué)生成績(jī)統(tǒng)計(jì)
10.5任課教師子系統(tǒng)的實(shí)現(xiàn)
10.5.1學(xué)生學(xué)籍查詢
10.5.2學(xué)生成績(jī)管理
10.6學(xué)生子系統(tǒng)的實(shí)現(xiàn)
思考與練習(xí)
附錄思考與練習(xí)答案
參考文獻(xiàn)
第3章PHP數(shù)組與字符串
數(shù)組和字符串是PHP中最為重要的兩種數(shù)據(jù)類型,曾有人做過統(tǒng)計(jì),在PHP的項(xiàng)目開發(fā)中,至少有30%的代碼要處理數(shù)組,另有30%以上的代碼在操作字符串,兩者合計(jì)占PHP代碼比重高達(dá)60%以上,故本章專門講述這兩類數(shù)據(jù)的操作。
學(xué)習(xí)目標(biāo)
掌握PHP數(shù)組的定義與操作。
掌握PHP字符串的定義與操作。
了解正則表達(dá)式及其使用。
3.1數(shù)組及處理
數(shù)組把若干數(shù)據(jù)有序地組織在一起。本節(jié)介紹如何創(chuàng)建和初始化數(shù)組,以及對(duì)數(shù)組的各種處理。
3.1.1數(shù)組的創(chuàng)建和初始化
1.使用array()函數(shù)創(chuàng)建一維數(shù)組
使用array()函數(shù)的語法格式如下:
數(shù)組名=array([鍵名=>]值,...,[鍵名=>]值);
每個(gè)元素包括鍵名和值兩項(xiàng),鍵名可以是整數(shù)或字符串。如果全部值未指定鍵名,則鍵名默認(rèn)為從0開始的連續(xù)整數(shù)。如果只有某些值未指定鍵名,則該值的鍵名默認(rèn)為該值前面最大的整數(shù)鍵名加1后的整數(shù)。例如:
$arr1=array(1,2,9,10);//定義不帶鍵名的數(shù)組
$arr2=array("color"=>"blue","name"=>"pen");//定義帶鍵名的數(shù)組
$arr3=array(1=>5,2=>6,4=>1,9,10);//個(gè)別元素沒有鍵名
?>
說明:數(shù)組$arr1的鍵名為整數(shù)鍵名,分別為0、1、2、3。數(shù)組$arr2的鍵名為字符串鍵名,分別為"color"和"name"。數(shù)組$arr3的鍵名分別為1、2、4、5、6。
對(duì)于數(shù)組,在調(diào)試程序時(shí)可以用print_r函數(shù)來顯示數(shù)組各元素的鍵名和值,print_r函數(shù)的語法格式如下:
print_r(數(shù)組名)
例如:
$arr1=array("a"=>5,"b"=>10,20);
print_r($arr1);//輸出:Array([a]=>5[b]=>10[0]=>20)
echo"
";
$arr2=array(2=>4,"color"=>"red",5,3=>7);
print_r($arr2);//輸出:Array([2]=>4[color]=>red[3]=>7)
?>
注意:在數(shù)組$arr1中,第3個(gè)值20的鍵名為0;在數(shù)組$arr2中,第3個(gè)值5被系統(tǒng)自動(dòng)設(shè)置鍵名為3,但是由于后面又有3=>7自定義了一個(gè)鍵名3,因此后面的值7覆蓋了前面相同鍵名的值。
數(shù)組創(chuàng)建之后,可以使用“數(shù)組名[鍵名]”的形式來訪問一維數(shù)組元素,例如:
$arr1=array("a"=>5,"b"=>10,20);
echo$arr1["a"];//輸出:5
echo$arr1["b"];//輸出:10
echo$arr1[0];//輸出:20
?>
數(shù)組創(chuàng)建之后,可以使用count()和sizeof()函數(shù)獲得數(shù)組元素的個(gè)數(shù),例如:
$array=array(1,2,3,6=>7,8,9,5,10);
echocount($array);//輸出:8
echosizeof($array);//輸出:8
?>
2.使用array()函數(shù)創(chuàng)建二維數(shù)組
通過對(duì)array()函數(shù)的嵌套使用,可以創(chuàng)建二維數(shù)組,語法格式如下:
數(shù)組名=array([鍵名1=>]array(值1,...,值n),
[鍵名2=>]array(值1,...,值n)
);
說明:內(nèi)層的每個(gè)array()函數(shù)表示一行,鍵名表示行號(hào)。若省略鍵名,則默認(rèn)為從0開始的連續(xù)整數(shù)。
二維數(shù)組元素的表示形式如下:
數(shù)組名[鍵名1][鍵名2]
例如:
$arr1=array("color"=>array("紅色","綠色","藍(lán)色"),
"number"=>array(1,2,3,4,5)
);
echo$arr1["color"][0],$arr1["number"][4];//輸出:紅色5
print_r($arr1);
echo"
";
$arr2=array(array("紅色","綠色","藍(lán)色"),array(1,2,3,4,5));
echo$arr2[0][0],$arr2[1][4];//輸出:紅色5
print_r($arr2);
?>
程序解釋:print_r($arr1)語句的運(yùn)行結(jié)果為Array([color]=>Array([0]=>紅色[1]=>綠色[2]=>藍(lán)色)[number]=>Array([0]=>1[1]=>2[2]=>3[3]=>4[4]=>5))。
print_r($arr2)語句的運(yùn)行結(jié)果為Array([0]=>Array([0]=>紅色[1]=>綠色[2]=>藍(lán)色)[1]=>Array([0]=>1[1]=>2[2]=>3[3]=>4[4]=>5))。
3.使用變量名建立數(shù)組
通過使用compact()函數(shù),可以把多個(gè)變量,甚至數(shù)組緊湊成一個(gè)數(shù)組,其中,變量名成為數(shù)組元素的鍵名,變量值成為數(shù)組元素的值。語法格式如下:
數(shù)組名=compact("變量名",...["數(shù)組名"])
舉例如下:
$num=8;
$str="abc";
$arr=array(2,4,6);
$newarr=compact("num","str","arr");
print_r($newarr);
?>
運(yùn)行結(jié)果:
Array([num]=>8[str]=>abc[arr]=>Array([0]=>2[1]=>4[2]=>6))
即數(shù)組$newarr包含5個(gè)元素:$newarr["num"],$newarr["str"],$newarr["arr"][0],$newarr["arr"][1],$newarr["arr"][2]。
與compact()函數(shù)對(duì)應(yīng)的是extract()函數(shù),作用是將一個(gè)數(shù)組分離成多個(gè)變量,語法格式如下:
extract(數(shù)組名)
例如:
$a=array("key1"=>1,"key2"=>2,"key3"=>3);
extract($a);//數(shù)組$a被分離成$key1、$key2、$key3
echo"$key1$key2$key3";
?>
注意:在extract(數(shù)組名)中,數(shù)組的鍵名必須是字母開頭的字符串。
4.建立指定范圍的數(shù)組
使用range()函數(shù)可以建立一個(gè)值在指定范圍內(nèi)的數(shù)組,語法格式如下:
數(shù)組名=range(初值,終值[,步長(zhǎng)值])
注意:若初值<終值,則步長(zhǎng)值為正數(shù);若初值>終值,則步長(zhǎng)值為負(fù)數(shù)。若省略步長(zhǎng)值,則默認(rèn)為1。例如: