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