本書內(nèi)容包括PHP開發(fā)環(huán)境、PHP語言基礎、PHP數(shù)組與字符串、PHP面向?qū)ο蟪绦蛟O計、構(gòu)建PHP互動頁面、MySQL數(shù)據(jù)庫基礎、PHP訪問MySQL數(shù)據(jù)庫、PHP常用功能模塊、PHP安全編程、學生學籍成績管理系統(tǒng)開發(fā)實例等。學生學籍成績管理系統(tǒng)開發(fā)實例通過開發(fā)一個實用系統(tǒng)來闡述PHP的開發(fā)技術和技巧。按照軟件產(chǎn)品開發(fā)的規(guī)范與流程, 對系統(tǒng)進行需求分析、數(shù)據(jù)庫設計以及功能模塊的劃分, 有利于讀者了解一個實際項目的開發(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)頁設計技術
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項目實訓
實訓1在Dreamweaver中創(chuàng)建PHP站點
實訓2創(chuàng)建一個PHP網(wǎng)頁
思考與練習
第2章PHP語言基礎
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預定義變量
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項目實訓
實訓1條件控制語句的應用
實訓2循環(huán)控制語句的應用
思考與練習
第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基礎知識
3.3.2正則表達式在JavaScript中的應用
3.3.3正則表達式在PHP中的應用
3.4項目實訓
實訓1數(shù)組和循環(huán)嵌套
實訓2正則表達式的應用
思考與練習
第4章PHP面向?qū)ο蟪绦蛟O計
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實例——設計一個學生類
4.6項目實訓——設計一個盒子類
思考與練習
第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標記中實現(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的應用
5.6項目實訓
實訓1使用PHP腳本驗證表單數(shù)據(jù)
實訓2使用JavaScript腳本驗證表單數(shù)據(jù)
實訓3會話超時
思考與練習
第6章MySQL數(shù)據(jù)庫基礎
6.1MySQL基礎知識
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ù)庫的復制
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項目實訓
實訓1MySQL數(shù)據(jù)庫和表的創(chuàng)建
實訓2使用MySQL編寫TSQL程序
實訓3MySQL存儲過程的創(chuàng)建和調(diào)用
實訓4MySQL觸發(fā)器的創(chuàng)建和應用
思考與練習
第7章PHP訪問MySQL數(shù)據(jù)庫
7.1PHP訪問MySQL的基本流程
7.1.1連接MySQL服務器
7.1.2選擇數(shù)據(jù)庫
7.1.3執(zhí)行SQL語句
7.1.4關閉連接
7.2處理結(jié)果集
7.2.1從結(jié)果集中獲取記錄
7.2.2其他MySQL函數(shù)
7.3結(jié)果集的分頁
7.4項目實訓
實訓1對數(shù)據(jù)表進行插入操作
實訓2將指定的數(shù)據(jù)表以表格形式顯示在網(wǎng)頁中
實訓3將任意一個數(shù)據(jù)表以表格形式顯示在網(wǎng)頁中
思考與練習
第8章PHP常用功能模塊
8.1目錄與文件操作
8.1.1目錄操作
8.1.2文件的打開與關閉
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項目實訓
實訓1刪除指定路徑中的非空文件夾
實訓2文件的上傳
實訓3將服務器的日期、時間、星期幾信息顯示在網(wǎng)頁中
思考與練習
第9章PHP安全編程
9.1安全配置PHP
9.1.1安全模式的配置
9.1.2其他與安全有關的參數(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項目實訓——修改密碼模塊的實現(xiàn)
思考與練習
第10章學生學籍成績管理系統(tǒng)開發(fā)實例
10.1系統(tǒng)需求分析
10.2數(shù)據(jù)庫設計
10.3系統(tǒng)配置和數(shù)據(jù)庫連接
10.4系統(tǒng)管理員子系統(tǒng)的實現(xiàn)
10.4.1教師管理
10.4.2班級管理
10.4.3學生學籍管理
10.4.4課程設置管理
10.4.5開課表管理
10.4.6學生成績統(tǒng)計
10.5任課教師子系統(tǒng)的實現(xiàn)
10.5.1學生學籍查詢
10.5.2學生成績管理
10.6學生子系統(tǒng)的實現(xiàn)
思考與練習
附錄思考與練習答案
參考文獻
第3章PHP數(shù)組與字符串
數(shù)組和字符串是PHP中最為重要的兩種數(shù)據(jù)類型,曾有人做過統(tǒng)計,在PHP的項目開發(fā)中,至少有30%的代碼要處理數(shù)組,另有30%以上的代碼在操作字符串,兩者合計占PHP代碼比重高達60%以上,故本章專門講述這兩類數(shù)據(jù)的操作。
學習目標
掌握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)自動設置鍵名為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ù)對應的是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。例如: