第一篇:四川商會(huì)php技能培訓(xùn)中心學(xué)習(xí)總結(jié)(二)
四川商會(huì)php技能培訓(xùn)中心學(xué)習(xí)總結(jié)
(二)問(wèn)題5:NTFS權(quán)限問(wèn)題。
這個(gè)問(wèn)題ASP上也出現(xiàn)過(guò),不過(guò)換在PHP環(huán)境就沒(méi)多一份心往這方面想,所以足足憋了我一上午,發(fā)現(xiàn)這個(gè)問(wèn)題是在朋友的服務(wù)器上,前一天喝酒正好認(rèn)識(shí)一個(gè)哥們兒遇到php建站的問(wèn)題了,接著酒勁我就裝了一把,說(shuō)我php多牛多牛啊,知道的我才學(xué)2星期,哈哈哈,第二天就給人家解決問(wèn)題吧,牛都吹出去了也不能不管人家,連上服務(wù)器一看原來(lái)是安裝phpcms的時(shí)候遇到了MySQL問(wèn)題安裝無(wú)法繼續(xù)進(jìn)行了,百度上一頓神搜找到問(wèn)題關(guān)鍵了是NTFS權(quán)限問(wèn)題,這就好解決了,加個(gè)Internet來(lái)賓用戶就解決了,估計(jì)自己以后也會(huì)遇到這問(wèn)題,所以早遇到比晚遇到強(qiáng),關(guān)鍵時(shí)候知道怎么回事兒!
問(wèn)題6:Cookies讀寫問(wèn)題。
這個(gè)問(wèn)題應(yīng)該不是很大的問(wèn)題,只不過(guò)當(dāng)天馬上下班了,沒(méi)有來(lái)得及解決,第二天很輕易的就搞定了,剛開(kāi)始學(xué)習(xí)肯定語(yǔ)句掌握的不多,以為$_COOKIE[“xxx”]既可以讀也可以寫呢,用到這兒的時(shí)候才發(fā)現(xiàn)部對(duì)路子,上網(wǎng)隨便一搜“php cookies 寫入”答案就來(lái)了,setcookie即可,真簡(jiǎn)單啊。
問(wèn)題7:php分頁(yè)。
用ASP的時(shí)候SQL語(yǔ)句也沒(méi)深入研究,根本就不知道limit這回事兒,我說(shuō)以前看淘寶、百度的分頁(yè)上有0 20、20 20這樣的參數(shù)傳遞呢,都是干分頁(yè)用的,稍補(bǔ)了一堂SQL課程問(wèn)題迎刃而解,頁(yè)數(shù)判斷那里原理都一樣就沒(méi)當(dāng)成問(wèn)題,一路綠燈解決戰(zhàn)斗!
問(wèn)題8:創(chuàng)建utf-8文件寫入中文亂碼問(wèn)題,問(wèn)題2的后續(xù)問(wèn)題。
一開(kāi)始就把這個(gè)功能做好了,只不過(guò)沒(méi)用中文測(cè)試,后來(lái)做到有中文的地方發(fā)現(xiàn)這里不靈了,哎呀那個(gè)頭疼啊,這個(gè)問(wèn)題收拾了我好幾天,一直沒(méi)解決,為了不被這個(gè)問(wèn)題困擾,所以就先用英文寫入把這里條過(guò)去了,昨天必須得解決這里了,所以就硬下頭皮整吧,還是BOM的簽名問(wèn)題,以下均為我自己理解,不知道對(duì)不對(duì),Windows環(huán)境識(shí)別UTF-8與ANSI文件靠的是UTF-8文件前的一個(gè)叫做BOM簽名的東西,這個(gè)東西普通的文本編輯器是看不到的 xEF xBF xEE好像是這三個(gè)16進(jìn)制字符,反正是三個(gè)東西,問(wèn)題2里毛病也是他們?nèi)齻€(gè)整出來(lái)的,UTF-8在Windows下雖然要用這三個(gè)家伙區(qū)分,在php下確實(shí)沒(méi)有用的東西,要不問(wèn)題2里面為啥要去掉BOM簽名呢,怪就怪我在做ASP的時(shí)候遇到過(guò)同樣的UTF-8文件寫入中文亂碼問(wèn)題,所以就留了個(gè)心眼,先在網(wǎng)上艘了一個(gè)UTF-8文件在php寫入的函數(shù),里面就把那三個(gè)討厭的東西加進(jìn)去了,哎呀我去,這就是聰明反被聰明誤,這頓調(diào)試就是不行啊,后來(lái)我也是恍然大悟,把這三個(gè)家伙去掉了,問(wèn)題解決了,那個(gè)暢快啊。
還有很多小問(wèn)題就不細(xì)說(shuō)了,比如$的轉(zhuǎn)義符是chr(36)啊,SQL中的關(guān)鍵詞from啊(在asp中不是關(guān)鍵詞),時(shí)間函數(shù)的使用(巨方便,比ASP的用著舒服)。
第二篇:四川商會(huì)php技能培訓(xùn)中心學(xué)習(xí)總結(jié)(一)
四川商會(huì)php技能培訓(xùn)中心學(xué)習(xí)總結(jié)
(一)在四川商會(huì)培訓(xùn)php學(xué)習(xí)到今天也是快一個(gè)月時(shí)間了,然而到今天為止第一個(gè)php寫的網(wǎng)站已經(jīng)快要見(jiàn)亮了,中午后臺(tái)部分全部功能完成意味著以后做別的站可以拿來(lái)就用,不用再費(fèi)太多精力編寫了,現(xiàn)在就簡(jiǎn)單寫寫學(xué)習(xí)php的這一個(gè)月我遇到的主要問(wèn)題。問(wèn)題1:環(huán)境搭配
php最經(jīng)典的組合當(dāng)然是LAMP(Linux+Apache+MySQL+PHP)了,不過(guò)我沒(méi)有條件和精力弄Linux所以用Windows 2003代替Linux了,自己調(diào)試用,又不是做服務(wù)器,所以不要求性能足夠用了。
本身我的機(jī)器是Win2003+IIS+Framework環(huán)境能跑起來(lái)ASP和.net,并且裝有jdk+tomcat+oracle還能跑起來(lái)jsp,本打算不破壞這些環(huán)境再安裝apache和mysql,不過(guò)困難重重啊。
于是放棄jsp環(huán)境,并且用ghost備份了asp環(huán)境,刪掉IIS后重新安裝PHP環(huán)境,環(huán)境還是很好搭的,在百度上輕易的找到教程照著安裝就可以Apache+PHP+MySQL+PHPMyAdmin,沒(méi)有安裝Zend,以后深入學(xué)習(xí)的時(shí)候再說(shuō)吧,沒(méi)有研究明白多個(gè)網(wǎng)站的時(shí)候怎么存在不同的路徑運(yùn)行在不同端口,也先不管了,現(xiàn)在80端口跑吧,環(huán)境調(diào)試好了以后備份了一個(gè)ghost,算是php環(huán)境成功搭起來(lái)了。
問(wèn)題2:對(duì)utf-8編碼文件的標(biāo)記BOM導(dǎo)致的頁(yè)面空行
這個(gè)問(wèn)題以前在學(xué)習(xí)xhtml+css的時(shí)候遇到過(guò),那時(shí)候是因?yàn)槲臋n聲明類型前面加別的代碼了或者沒(méi)有寫文檔聲明類型xhtml1.0卻用w3c的標(biāo)準(zhǔn)做頁(yè)面導(dǎo)致的,起初我以為也是把require寫在文檔聲明前面出的問(wèn)題呢,后來(lái)反復(fù)調(diào)試發(fā)現(xiàn)不是這么簡(jiǎn)單,后來(lái)上百度搜索了很多關(guān)于require引起空行的問(wèn)題,有一個(gè)牛人提到了要在dreamweaver里面ctrl+j把utf-8編碼的BOM去掉,當(dāng)時(shí)也不懂BOM是啥,說(shuō)去掉就去掉吧,確實(shí)解決問(wèn)題了,這算是把這一關(guān)過(guò)去了,不過(guò)后面還有utf-8的問(wèn)題呢,也是跟這個(gè)有關(guān)系。
問(wèn)題3:php下checkbox的取值問(wèn)題
這是我發(fā)現(xiàn)php唯一一個(gè)不方便的地方,不像asp那樣,所有同名的checkbox的值存成一個(gè)集合,php只能取同名里最后一個(gè)checkbox的值,在做多數(shù)據(jù)where in(aa,bb,cc,dd)查詢的時(shí)候很不方便,只能用js+一個(gè)hidden input的方法實(shí)現(xiàn),雖然有點(diǎn)小麻煩,不過(guò)不是大問(wèn)題,很容易就解決了,上網(wǎng)查了一下也確實(shí)只有這么才能解決!
問(wèn)題4:Access庫(kù)轉(zhuǎn)到MySQL的問(wèn)題
畢竟數(shù)據(jù)庫(kù)已經(jīng)設(shè)計(jì)好了,再在PHPMyAdmin中建一次表也很麻煩,索性找個(gè)軟件來(lái)直接轉(zhuǎn)庫(kù),還不錯(cuò)讓我找到各爆好用的軟件,不過(guò)全英文界面,名字沒(méi)記住,明天去公司看看再發(fā)上來(lái),庫(kù)很輕松的轉(zhuǎn)過(guò)來(lái)了,但是我手很賤,看到MySQL里面的data文件夾下有和我建的數(shù)據(jù)庫(kù)一樣名字的文件夾,我以為有這個(gè)文件夾就不用建庫(kù)倒庫(kù)了,一時(shí)興起把沒(méi)用的都刪掉了,問(wèn)題來(lái)了PHPMyAdmin連不上庫(kù)了,這個(gè)倒是好解決,重裝了一次MySQL解決問(wèn)題,可是我沒(méi)備份就換回ASP環(huán)境,再換回來(lái)的時(shí)候MySQL出大問(wèn)題了,重裝都不管用了,上百度一頓神搜,最終csdn的牛人給了答案“把libmysql.dll和php5ts.dll考到system32下”,解決問(wèn)題。
第三篇:php學(xué)習(xí)總結(jié)
調(diào)試/*………*/ //…….#..........插入時(shí)考慮清楚字段類型避免插入后出現(xiàn)缺值,亂碼
@ 屏蔽錯(cuò)誤or die 條件顯示
以前學(xué)習(xí)php類的總結(jié):
1.php中不能重載,但是能用子類覆蓋父類的方法名稱來(lái)實(shí)現(xiàn)新的重載
1.1 在子類中調(diào)用父類的覆蓋部分可以使用 父類名稱::方法名稱();
2.final 只能定義類和方法,不能使用final定義成員屬性,因?yàn)閒inal是常量的意思,在php里定義常量使用的是define函數(shù)
2.1 final關(guān)鍵字標(biāo)記的類不能被繼承
2.2 final關(guān)鍵字標(biāo)記的方法不能被子類重寫
3.const是一個(gè)定義常量的關(guān)鍵字,在php中定義常量使用的是define()函數(shù),但是在類里定義常量使用的是“const” 這個(gè)關(guān)鍵字
3.1在程序中不能修改它的值。
3.2 訪問(wèn)const 修飾的成員屬性要使用類名,在本類的方法里使用“self”關(guān)鍵字,但不使用“$”符號(hào),也不能使用對(duì)象來(lái)訪問(wèn)。
4.static關(guān)鍵字可以描述類中的成員屬性和成員方法
4.1 static 的成員屬于類,而不屬于任何對(duì)象,4.2 static的成員是在類第一次被加載的時(shí)候分配的空間,其他類無(wú)法訪問(wèn)的,只對(duì)類的實(shí)例共享,能一定程度對(duì)類該成員形成保護(hù)
4.3 靜態(tài)成員放到了“初始化靜態(tài)段”,在類第一次加載的時(shí)候放入的,可以讓堆內(nèi)存里的每個(gè)對(duì)象共享。所以在靜態(tài)方法里,可以使用這個(gè)方法所在的類的“類名”,也可以使用“self”來(lái)訪問(wèn)其他靜態(tài)成員?!皊elf”代表這個(gè)靜態(tài)方法所在的類。
4.3.1 在類里的靜態(tài)方法是不能訪問(wèn)類的非靜態(tài)成員的。
4.3.2 在類的非靜態(tài)方法里可以訪問(wèn)靜態(tài)成員:”self:成員屬性“;
4.4類的靜態(tài)變量,非常類似全局變量,能夠被所有類的實(shí)例共享,類的靜態(tài)方法也是一樣,類似于全局函數(shù)。
4.5 在類內(nèi)函數(shù)訪問(wèn)靜態(tài)變量時(shí)前面加self::靜態(tài)函數(shù)
4.6 靜態(tài)變量可以在類外直接訪問(wèn),訪問(wèn)方法是類名::靜態(tài)變量
4.7 靜態(tài)函數(shù)可以在類外直接訪問(wèn),訪問(wèn)方式是類名::靜態(tài)函數(shù)
4.8 在類內(nèi)靜態(tài)函數(shù)訪問(wèn)另一個(gè)靜態(tài)函數(shù)時(shí)使用 類名::靜態(tài)函數(shù)名
4.8.1 靜態(tài)函數(shù)在類內(nèi)訪問(wèn)靜態(tài)變量時(shí),訪問(wèn)方式是類名::靜態(tài)變量
4.8.2 靜態(tài)函數(shù)在類內(nèi)訪問(wèn)靜態(tài)變量時(shí),訪問(wèn)方式除了是類名::靜態(tài)變量外,還可以使用self::靜態(tài)變量
4.9 在類內(nèi)靜態(tài)函數(shù)訪問(wèn)另一個(gè)靜態(tài)函數(shù)時(shí)除了使用 類名::靜態(tài)函數(shù)名外,還可以使用self::靜態(tài)函數(shù)名,也可以直接調(diào)用靜態(tài)函數(shù)
4.10 靜態(tài)函數(shù)內(nèi)不能訪問(wèn)非靜態(tài)變量
4.11 在類內(nèi)靜態(tài)函數(shù)不能使用$this->非靜態(tài)函數(shù)名訪問(wèn)非靜態(tài)函數(shù),可以使用self::非靜態(tài)函數(shù)名
4.12
5.類里的”$this“,在php里面提供了一個(gè)本對(duì)象的引用$this,每個(gè)對(duì)象里面都有一個(gè)對(duì)象的引用$this來(lái)代表這個(gè)對(duì)象,完成對(duì)象內(nèi)部成員的調(diào)用。
5.1 $this 就是對(duì)象內(nèi)部代表這個(gè)對(duì)象的引用。
6.類里“self”,self 和$this相似,只不過(guò)self是代表這個(gè)靜態(tài)方法所在的類,所以在靜態(tài)方法里,可以使用這個(gè)方法所在的類的”類名“,也可以使用“self”來(lái)訪問(wèn)其他的靜態(tài)成員,通常使用后者”self::成員屬性“。
7.類里”__“開(kāi)頭的函數(shù)名
7.1類里”__“開(kāi)頭的函數(shù)名都是在某一時(shí)刻不同情況下自動(dòng)調(diào)用執(zhí)行的方法。
7.2__toString()方法也是自動(dòng)被調(diào)用,是直接輸出對(duì)象引用時(shí)自動(dòng)調(diào)用的。比如“$p = new Person()”,直接用echo輸出$p會(huì)產(chǎn)生錯(cuò)誤,如果在類里定義了__toString()方法,再用echo直接輸出對(duì)象引用的時(shí)候就不會(huì)產(chǎn)生錯(cuò)誤了
8.對(duì)象串行化
8.1 __sleep()方法,在對(duì)象串行化的時(shí)候,會(huì)調(diào)用一個(gè)__sleep()方法來(lái)完成一些睡前的事情,__sleep()函數(shù)不接受任何參數(shù),但返回一個(gè)數(shù)組,其中包含需要串行化的屬性。未被包含的屬性降在串行化時(shí)被忽略,如果沒(méi)有__sleep()方法,php將保存所以屬性.8.2 __wakeup()方法,在重新醒來(lái)時(shí),即由二進(jìn)制串重新組成一個(gè)對(duì)象的時(shí)候,則會(huì)自動(dòng)調(diào)用__wakeup(),做一些對(duì)象醒來(lái)就要做的動(dòng)作。
8.3 有時(shí)你可能需要一個(gè)對(duì)象在反串行化后立即執(zhí)行.為了這樣的目的,PHP會(huì)自動(dòng)尋找__sleep和__wakeup方法.9.protected 成員能被同個(gè)類中的所有方法和繼承出的類的中所有方法訪問(wèn)到,不能被父類的實(shí)例直接訪問(wèn)。protected and public 可以動(dòng)態(tài)綁定
10.private 大部分private屬性仍然可以被外部代碼共享.解決方法是用一對(duì)public方法,一個(gè)是get(獲取屬性的值),另一個(gè)是set(設(shè)置屬性的值).10.1private 不可以動(dòng)態(tài)綁定。Private成員只存在于它們所在的類內(nèi)部.不像public和protected成員那樣,PHP模擬靜態(tài)綁定.10.2 什么時(shí)候用到private?private成員只有當(dāng)你不想讓子類繼承改變或特殊化父類的行為時(shí)才用到,這種情況比你想像的要少,通常來(lái)說(shuō),一個(gè)好的對(duì)象分層結(jié)構(gòu)應(yīng)當(dāng)允許絕大多數(shù)功能被子類特殊化,改進(jìn),或改變—這是面向?qū)ο缶幊痰幕A(chǔ)之一。一定的情況下需要private方法或變量,例如當(dāng)你確信你不想允許子類改變父類中的某個(gè)特定的部份。
11.抽象類:抽象方法是就像子類中一般的方法的占位符(占個(gè)地方但不起作用),它與一般方法不同—沒(méi)有任何代碼.如果類中存在一個(gè)或更多抽象方法, 那么這個(gè)類就成了抽象類.你不能實(shí)例化抽象類.你必須繼承它們,然后實(shí)例化子類.你也可以把抽象類看成是子類的一個(gè)模板.如果你覆寫所有的抽象方法, 子類就變成一個(gè)普通的類.如果沒(méi)有覆寫所有方法, 子類仍是抽象的.如果一個(gè)類中中包含有抽象方法(哪怕只有一個(gè)), 你必須聲明這個(gè)類是抽象的, 在class關(guān)鍵字前加上abstract.聲明抽象方法的語(yǔ)法與聲明一般方法不同.抽象方法的沒(méi)有像一般方法那樣包含在大括號(hào){}中的主體部份,并用分號(hào);來(lái)結(jié)束.12.接口:如果你建立了一個(gè)只有抽象方法的類,你就定義了一個(gè)接口(interface).為了說(shuō)明這種情況, PHP中有interface 和implements關(guān)鍵字.你可以用interface來(lái)代替抽象類, 用implements來(lái)代替extends來(lái)說(shuō)明你的類定義或使用一個(gè)接口.例如, 你可以寫一個(gè)myClass implements myIterface.這兩種方法可以依個(gè)人偏愛(ài)來(lái)選擇.12.1 如果接口中出現(xiàn)非抽象方法.會(huì)報(bào)錯(cuò)
12.2 接口中的方法默認(rèn)是public 型的.其它類型的修飾符,不能修飾接口中的抽象方法.12.3 即使接口中所有的方法都是抽象方法,也不能使用 abstract 修飾.也不能用final
12.4 即使接口中所有的方法都是抽象方法,在接口中,可以聲明靜態(tài)方法.12.5 在接口中可以有常量,e.g.:
interfaceUser{
const MAX_GRADE = 99;
function getName();
function setName($_name);
}
?>
13.Namespace關(guān)鍵字給一塊代碼命名.在這個(gè)代碼塊外部,腳本必須用操作符::加上命名空間的名稱來(lái)引用這個(gè)代碼塊.引用靜態(tài)的類成員也是用相同的方法.在命名空間內(nèi)代碼不需要聲明命名空間, 它本身就是默認(rèn)的.這種方法比添加前綴的方法好.你的代碼可由此變得更加緊湊和可讀.你可能想知道是否可以建立分層的(嵌套的)命名空間.答案是不可以.但你可以在命名空間名稱后加上冒號(hào), 你可以再次調(diào)用在名稱中不包含冒號(hào)的變量,函數(shù)和類.命名空間允許存在冒號(hào),只要不是第一個(gè)字符和最后一個(gè)字符或接著另一個(gè)冒號(hào).命名空間的名稱中的冒號(hào)對(duì)于PHP來(lái)說(shuō)沒(méi)有任何意義, 但如果你用他們來(lái)區(qū)分邏輯上的區(qū)塊, 他們可以很好地說(shuō)明你的代碼中的父子(parent-child)關(guān)系.14.__toString()打印對(duì)象會(huì)調(diào)用它的__toString方法.15.不能實(shí)例化的類
//
//當(dāng)__construct()為public時(shí)可以實(shí)例化
class A{
private function __construct(){}
}
$a = new A();//fail
?>
15.1
//static的方法留給外部訪問(wèn).
class A{
private function __construct(){}
static function getClassA(){
return “這里是后門,可以通過(guò)這里進(jìn)入類內(nèi)部..”;
}
}
echo A::getClassA();
?>
15.2
//不能用new實(shí)例化的類.
//static的方法留給外部訪問(wèn).
//在方法內(nèi)部返回實(shí)例.
class A{
private function __construct(){
echo “this is construction
n”;
}
static function getClassA(){
$a = new A();
return $a;
}
}
// 看到這里確實(shí)返回的是 A 的實(shí)例.但不是同一個(gè)對(duì)象.$a1 = A::getClassA();
$a2 = A::getClassA();
echo “$a1 的類是 ”.get_class($a1).“ , $a2 是 ”.get_class($a1);if($a1 === $a2){
echo “
$a1 $a2 指向同一對(duì)象.”;
}else{
echo “
$a1 $a2 不是一個(gè)對(duì)象.”;
}
//this is construction
//this is construction
//$a1 的類是 A , $a2 是 A
//$a1 $a2 不是一個(gè)對(duì)象.?>
15.3
//不能用new實(shí)例化的類.
//static的方法留給外部訪問(wèn).
//在方法內(nèi)部返回實(shí)例.
//定義靜態(tài)屬性保證這個(gè)實(shí)例能被靜態(tài)方法調(diào)用.
//增加判斷部分.
class A{
private static $a = null;
private function __construct(){}
static function getClassA(){
if(null == self::$a){
self::$a = new A();
}
return self::$a;
}
}
// 看到這里確實(shí)返回的是 A 的實(shí)例.但不是同一個(gè)對(duì)象.$a1 = A::getClassA();
$a2 = A::getClassA();
echo “$a1 的類是 ”.get_class($a1).“ , $a2 是 ”.get_class($a1);if($a1 === $a2){
echo “
$a1 $a2 指向同一對(duì)象.”;
}else{
echo “
$a1 $a2 不是一個(gè)對(duì)象.”;
}
//$a1 的類是 A , $a2 是 A
//$a1 $a2 指向同一對(duì)象.?>
第四篇:PHP 學(xué)習(xí)筆記(二):表單:表單處理,表單驗(yàn)證,表單實(shí)例總結(jié)
PHP 學(xué)習(xí)筆記
(二):表單:表單處理,表單驗(yàn)證,表單實(shí)例
PHP 表單
PHP 超全局變量 $_GET 和 $_POST 用于收集表單數(shù)據(jù)(form-data)。1 GET vs.POST
GET 和 POST 都創(chuàng)建數(shù)組(例如,array(key => value, key2 => value2, key3 => value3, …))。此數(shù)組包含鍵/值對(duì),其中的鍵是表單控件的名稱,而值是來(lái)自用戶的輸入數(shù)據(jù)。
GET 和 POST 被視作 GET和_POST。它們是超全局變量,這意味著對(duì)它們的訪問(wèn)無(wú)需考慮作用域并且應(yīng)該對(duì)其進(jìn)行驗(yàn)證。如果未提交,則跳過(guò)驗(yàn)證并顯示一個(gè)空白表單。
PHP 表單驗(yàn)證輸入字段
從上一節(jié)中的驗(yàn)證規(guī)則中,我們看到 “Name”, “E-mail” 以及 “Gender” 字段是必需的。這些字段不能為空且必須在 HTML 表單中填寫。
在上一節(jié)中,所有輸入字段都是可選的。在下面的代碼中我們?cè)黾恿艘恍┬伦兞浚?nameErr、$emailErr、$genderErr 以及 $websiteErr。這些錯(cuò)誤變量會(huì)保存被請(qǐng)求字段的錯(cuò)誤消息。我們還為每個(gè) $_POST 變量添加了一個(gè) if else 語(yǔ)句。這條語(yǔ)句檢查 $_POST 變量是否為空(通過(guò) PHP empty()函數(shù))。如果為空,則錯(cuò)誤消息會(huì)存儲(chǔ)于不同的錯(cuò)誤變量中。如果不為空,則通過(guò) test_input()函數(shù)發(fā)送用戶輸入數(shù)據(jù):
$nameErr = $emailErr = $genderErr = $websiteErr = “";$name = $email = $gender = $comment = $website = ”“;
if($_SERVER[”REQUEST_METHOD“] == ”POST“){
if(empty($_POST[”name“])){
$nameErr = ”Name is req004km.cnment“])){
$comment = ”“;
} else {
$comment = test_input($_POST[”comment“]);
}
if(empty($_POST[”gender“])){
$genderErr = ”Gender is required“;
} else {
$gender = test_input($_POST[”gender“]);
} } ?> PHP驗(yàn)證 E-mail 和 URL
本節(jié)展示如何驗(yàn)證名字、電郵和 URL。
PHP驗(yàn)證 E-mail
以下代碼展示的簡(jiǎn)單方法檢查 e-mail 地址語(yǔ)法是否有效。如果無(wú)效則存儲(chǔ)一條錯(cuò)誤消息:
$email = test_input($_POST[”email“]);if(!preg_match(”/([w-]+@[w-]+.[w-]+)/“,$email)){
$emailErr = ”無(wú)效的 email 格式!“;}
PHP驗(yàn)證 Name、E-mail、以及 URL
現(xiàn)在,腳本是這樣的:
$nameErr = $emailErr = $genderErr = $websiteErr = ”“;$name = $email = $gender = $comment = $website = ”“;
if($_SERVER[”REQUEST_METHOD“] == ”POST“){
if(empty($_POST[”name“])){
$nameErr = ”Name is required“;
} else {
$name = test_input($_POST[”name“]);
// 檢查名字是否包含字母和空格
if(!preg_match(”/^[a-zA-Z ]*$/“,$name)){
$nameErr = ”O(jiān)nly letters and white space allowed“;
}
}
if(empty($_POST[”email“])){
$emailErr = ”Email is required“;
} else {
$email = test_input($_POST[”email“]);
// 檢查電郵地址語(yǔ)法是否有效
if(!preg_match(”/([w-]+@[w-]+.[w-]+)/“,$email)){
$emailErr = ”Invalid email format“;
}
}
if(empty($_POST[”website“])){
$website = ”“;
} else {
$website = test_input($_POST[”website“]);
// 檢查 URL 地址語(yǔ)言是否有效(此正則表達(dá)式同樣允許 URL 中的下劃線)
if(!preg_match(”/b(?:(?:https?|ftp)://|004km.cnment“])){
$comment = ”“;
} else {
$comment = test_input($_POST[”comment“]);
}
if(empty($_POST[”gender“])){
$genderErr = ”Gender is required“;
} else {
$gender = test_input($_POST[”gender“]);
} } ?>
接下來(lái)向您講解如何防止表單在用戶提交表單后保留輸入字段中的值。
PHP-保留表單中的值
如需在用戶點(diǎn)擊提交按鈕后在輸入字段中顯示值,我們?cè)谝韵螺斎胱侄蔚?value 屬性中增加了一小段 PHP 腳本:name、email 以及 website。在 comment 文本框字段中,我們把腳本放到了 之間。這些腳本輸出 $name、$email、$website 和 $comment 變量的值。
然后,我們還需要顯示選中了哪個(gè)單選按鈕。對(duì)此,我們必須操作 checked 屬性(而非單選按鈕的 value 屬性):
Name: “>
E-mail: “>
Website: “>
Comment:
Gender:
value=”female“>Female value=”male">Male
echo
第五篇:php mysql學(xué)習(xí)總結(jié)剖析
php 字符串
反引號(hào)里面的字符必須是命令 如`pwd` 是查看當(dāng)前目錄
轉(zhuǎn)移字符:
符號(hào)
含義
”
雙引號(hào)
反斜線
n
換行
t
跳位(Tab)
常量和變量 _FILE_ 這個(gè)默認(rèn)常量是php程序文件名 _LINE_ 這個(gè)默認(rèn)常量是php程序行數(shù) E_ERROR 這個(gè)常量指到最近的錯(cuò)誤處 E_WARNING 這個(gè)常量指到最近的警告處 E_PARSE 本常量為解析語(yǔ)法有何潛在問(wèn)題處 自定義常量define(“
“,”
“);第一空格為常量,第二個(gè)為定義 或
define(‘
‘,);同上
有$為變量,無(wú)為常量 object為類變量,如 class foo{ function do-foo(){ echo”Doing foo”;} } $bar=new foo;
//建立變量,其他語(yǔ)言有(),php語(yǔ)言沒(méi)有。// $bar->do-foo();
//調(diào)用變量的方式。//->為調(diào)用類函數(shù)用的符號(hào)
變量區(qū)分大小寫
Php變量可以不用定義直接使用。局部變量和全局變量的區(qū)別見(jiàn)第二章,第21分鐘處圖。
全局變量必須用$GLOBALS數(shù)組和global聲明。配置文件的globals函數(shù)須打開(kāi)
是什么????
$PHP_SELF
//php文件名,全局變量 echo $GLOBALS[“PHP_SELF”];或 globals $PHP_SELF;不能echo $PHP_SELF;
函數(shù)不區(qū)分大小寫
靜態(tài)變量static variable
老語(yǔ)法$foo直接用
新語(yǔ)法$_GET[‘foo’]
$_POST[‘foo’]
$_SESSION[‘foo’]
位運(yùn)算符:
&與
|或
~非
^異或
<< 向左移位乘法
>> 向右移位除法 邏輯運(yùn)算:
&& 而且AND
||或者OR
Xor異或
!不Not
符號(hào)
意義 $
變量
&
變量的地址(加在變量前)->
類的方法或?qū)傩?=>
數(shù)組的元素值
? :
三元運(yùn)算符
數(shù)組
數(shù)組的下標(biāo)可以是整數(shù),也可以是字符串
如$user[0]=”張三”;
$user[‘zs’]=”張三”;
$user[“zs”]=”張三”;或$user=array(“張三”,//下標(biāo)0
echo $user[0];‘is’=>”李四”,//下標(biāo)is
echo $user[is];或echo $user[‘is’];“ww”=>”王五”
//下標(biāo)ww);
echo sizeof($user);
//記錄數(shù)
多維數(shù)組 $user=array(array(‘張三’,88), array(‘李四’,95), array(‘王五’,99));函數(shù)
函數(shù)不區(qū)分大小寫 函數(shù)原型:
返回類型 函數(shù)名稱(類型 參數(shù)1, 類型 參數(shù)2…..);
數(shù)學(xué)函數(shù)
number abs(number)取絕對(duì)值|x| float sin(float)
正弦計(jì)算sin(x)float cos(float)
余弦計(jì)算cos(x)float sqrt(float)
開(kāi)平方根計(jì)算 float log(float)
自然對(duì)數(shù)計(jì)算lnx float log10(float)
lgx float exp(float)
e的x次方
float pow(float x,float y)
x的y次方
double pi()
圓周率
void srand(int)
配置隨機(jī)種子
int rand([int min],[int max])
取得隨機(jī)數(shù)
string strtolower(string str)
字符串全轉(zhuǎn)為小寫 string strtoupper(string str)
字符串全轉(zhuǎn)換為大寫 string trim(string str)
截去字符串首尾的空格 string substr(stringstring,int start,int[length])
取子串
下標(biāo)從0開(kāi)始。從第start位取出length個(gè)字符,start為負(fù)數(shù),從尾端算起,length為負(fù)數(shù)表示取倒數(shù)length個(gè)字符。第三章第七分鐘 int strlen(string str)取得字符串長(zhǎng)度
int strpos(string母串,string待查字符,int[offset])
尋找字符串中的某個(gè)字符最先出處 int strcmp(string str1,string str2)字符串比較
string md5(string str)計(jì)算字符串的MD5哈希值 fopen(“C: mpa.txt”,”r”);fopen(http://004km.cnmit
//提交,缺省自動(dòng)提交 set autocommit=0
//取消自動(dòng)提交 rollback
//回滾
事物可以用start transaction定義
有些語(yǔ)句自動(dòng)提交,無(wú)法回滾,如DDL語(yǔ)句 save point //回滾點(diǎn) 鎖
lock tables 表名[read][write], 表名[read][write],… 解鎖
unlock tables
fulltext(title,body)
//在標(biāo)題和主體上建立全文索引
select * from articles where match(title,match)against(‘database’);
select * from articles where match(title,match)
against(‘+mysql-yoursql’ in boolean mode);
包含mysql不包含yoursql 邏輯全文索引 against:匹配串:
apple banana
//找至少包含上面詞中的一個(gè)的記錄行 +apple+juice
//兩個(gè)詞均被包含在內(nèi)
+apple macintosh
//包含詞”apple”,但是如果同時(shí)包含”macintosh”,它的排列將更高一點(diǎn) + apple-macintosh
//包含”apple”但不包含” macintosh”
“some words”
//可以包含”some words of wisdom”但不是”some noice words”
grant
//授權(quán)
grant select,insert,update,delete on *.* to ‘test_user’@’%’ identified by ‘123’;%
//任何主機(jī)
*.*
//任何數(shù)據(jù)庫(kù)上的任何對(duì)象,*表示任何 123
//密碼
test_user
//用戶名
grant all privileges on *.* to admin@localhost identified by ‘123’ with grant option;
//創(chuàng)建本地的完全超級(jí)用戶”admin,口令’123’” all privileges //完全的權(quán)限
with grant option
//授權(quán)給其他用戶
刪除用戶
revoke all on *.* from ‘test_user’@ localhost;revoke all
//收回所有權(quán)限 flush privileges
//刷新內(nèi)存授權(quán)表
delete from user where user=’test_user’;
// 刪除用戶
delete from user where host=’localhost’ and user=’’;
//刪除匿名用戶
mysqladmin-uroot password 123
//添加密碼123 mysqladmin –uroot-p123 password 456
或
set password for root=password(“456”);
或
update user set password=password(‘456’)where user=’root’;
//再改密碼為456 mysqladmin –uroot –p456 password’’
optimize table 表1,表2…;
//mysql優(yōu)化
load data infile ‘路徑’ into table teacher;
或 mysqlimport school 路徑(如C:/a/b.txt)
//導(dǎo)入
mysqldump –opt school > school_2004_9.sql
//將數(shù)據(jù)庫(kù)school中的表全備份到school_2004_9.sql文本文件
mysqldump –opt school teacher student > school_2004_9.sql //僅備份表teacher和student mysqldump –databases school test > school_2004_9.sql
//備份多個(gè)數(shù)據(jù)庫(kù)
source school_2004_9.sql;
//從備份文件恢復(fù)數(shù)據(jù)
select * from emp limit(2,5);
//查第3到第7號(hào)員工的信息
select * from emp order by sal limit 0,5;= select * from emp order by sal limit 5;
mysql_data_seek(resource,int row_number)將指定的結(jié)果標(biāo)識(shí)所關(guān)聯(lián)的mysql結(jié)果內(nèi)部的行指針移動(dòng)到指定的行號(hào)。接著用 mysql_fetch_row()將返回那一行,row_num從0開(kāi)始
if(!($supername==$supervisor)||!($superpass==$superpsw))//如果用戶名和密碼有一個(gè)錯(cuò)
action='$php_self’
//自身執(zhí)行
相對(duì)路徑是:../(表示當(dāng)前文件的上一級(jí)目錄);../../(表示當(dāng)前文件的上一級(jí)目錄的再上一級(jí)目錄);./(表是當(dāng)前目錄);/(表示根目錄)
$result=mysql_query(“update vote set $select_result='{$number}',total='{$total}' where id=$id”,$db);//當(dāng)用$select_result表示某個(gè)字段(如result1到result9)傳遞$number,值等可用此表示法(當(dāng)字段為變量)
路徑:
$tempdir = str_replace(“",”/“,substr(dirname(__FILE__),0,-6));//這樣做可以避免在虛擬空間站找不到路徑的問(wèn)題,require $tempdir.”/include/config.inc.php";
解決亂碼
1選定代碼片段
2選定修改----頁(yè)面屬性----標(biāo)題/編碼 3選擇編碼類型
4重新載入(這步不能?。?/p>
不懂 可直接用教程中文件名直接在百度提問(wèn),肯定有人和我學(xué)一樣的東西