什么事面向?qū)ο螅恐饕卣魇鞘裁矗?/b>
面向?qū)ο笫浅绦虻囊环N設(shè)計方式,它利于提高程序的重用性,使程序結(jié)構(gòu)更加清晰。主要特征:封裝、繼承、多態(tài)。
isset() 和 empty() 區(qū)別
?Isset判斷變量是否存在,如果存在則返回真,empty判斷變量是否為空為假,如果為空為假則返回真。
SESSION 與 COOKIE的區(qū)別是什么,請從協(xié)議,產(chǎn)生的原因與作用說明??
1、http無狀態(tài)協(xié)議,不能區(qū)分用戶是否是從同一個網(wǎng)站上來的,同一個用戶請求不同的頁面不能看做是同一個用戶。
2、SESSION存儲在服務(wù)器端,COOKIE保存在客戶端。Session比較安全,cookie用某些手段可以修改,不安全。Session依賴于cookie進行傳遞。
禁用cookie后,session不能正常使用。Session的缺點:保存在服務(wù)器端,每次讀取都從服務(wù)器進行讀取,對服務(wù)器有資源消耗。Session保存在服務(wù)器端的文件或數(shù)據(jù)庫中,默認保存在文件中,文件路徑由php配置文件的session.save_path指定。Session文件是公有的。
?
include與require的區(qū)別?
1.include()在執(zhí)行文件時每次都要進行讀取和評估
??require()文件只處理一次(實際上文件內(nèi)容替換了require()語句)
2.require()通常放在PHP腳本程序的最前面
??include()的使用和require()一樣,一般放在流程控制的處理區(qū)段中,PHP腳本文件讀到include()語句時,才將它包含的文件讀進來,這種方式,可以把程序執(zhí)行時的流程簡單化
3,require()和include()語句是語言結(jié)構(gòu),不是真正的函數(shù),可以像PHP的其他語言結(jié)構(gòu)一樣
4,include_once()和require_once()語句也是在腳本執(zhí)行期間包括并運行指定文件,與include()require()唯一的區(qū)別是如果文件中的代碼已經(jīng)被包括了,則不會再次包括.
5,require()包含文件失敗,停止執(zhí)行,給出錯誤(致命的)
include()常用于動態(tài)包含.
通常是自動加載的文件,即使加載出錯,整個程序還是繼續(xù)執(zhí)行
一個頁面聲明,另一個頁面調(diào)用
包函文件失敗,繼續(xù)向下執(zhí)行,返回一條警告
HTTP 狀態(tài)中302、403、 500、200、404、502代碼含義?
一二三四五原則: 一. 消息系列 二. 成功系列 ??三. 重定向系列 四. 請求錯誤系列 五. 服務(wù)器端錯誤系列??302:臨時轉(zhuǎn)移成功,請求的內(nèi)容已轉(zhuǎn)移到新位置 403:禁止訪問 500:服務(wù)器內(nèi)部錯誤 401代表未授權(quán)。200是請求成功,404是文件未找到,502是服務(wù)器內(nèi)部錯誤。
PHP字符串中單引號與雙引號的區(qū)別?
單引號不能解釋變量,而雙引號可以解釋變量。
單引號不能轉(zhuǎn)義字符,在雙引號中可以轉(zhuǎn)義字符。
請說明PHP 中傳值與傳引用的區(qū)別。什么時候傳值什么時候傳引用?
按值傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部都會被忽略
??? 按引用傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部也能反映出這些修改
??? 優(yōu)缺點:按值傳遞時,php必須復(fù)制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。按引用傳遞則不需要復(fù)制值,對于性能提高很有好處。
請寫出數(shù)據(jù)類型(int char varchar datetime text)的意思;請問 varchar 和 char有什么區(qū)別?
[if !supportLists]19、[endif]Int 整數(shù) char 定長字符 Varchar 變長字符 Datetime 日期時間型 Text 文本型 Varchar 與char的區(qū)別?char是固定長度的字符類型,分配多少空間,就占用多長空間。 Varchar是可變長度的字符類型,內(nèi)容有多大就占用多大的空間,能有效節(jié)省空間。 Varchar是變長,節(jié)省存儲空間,char是固定長度。查找效率要char型快,因為varchar是非定長,必須先查找長度,然后進行數(shù)據(jù)的提取,比char定長類型多了一個步驟,所以效率低一些
in, not ni, exist, not exist的作用和區(qū)別?
in在什么中
Not in 不在什么中
Exists 存在
Not exists 不存在
面向?qū)ο笾薪涌诤统橄箢惖膮^(qū)別及應(yīng)用場景?
1、有抽象方法的類叫做抽象類,抽象類中不一定有抽象方法,抽象方法必須使用abstract關(guān)鍵字定義。
2、接口中全部是抽象方法,方法不用使用abstract定義。
3、當多個同類的類要設(shè)計一個上層,通常設(shè)計為抽象類,當多個異構(gòu)的類要設(shè)計一個上層,通常設(shè)計為接口。
echo(),print(),print_r()的區(qū)別?
echo是PHP語句, print和print_r是函數(shù),語句沒有返回值,函數(shù)可以有返回值(即便沒有用) ?
???Print()只能打印出簡單類型變量的值(如int,string) ?
???print_r()可以打印出復(fù)雜類型變量的值(如數(shù)組,對象) ?
???echo ?輸出一個或者多個字符串
?
MyISAM 和 InnoDB 的基本區(qū)別?索引結(jié)構(gòu)如何實現(xiàn)?
MyISAM類型不支持事務(wù)處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調(diào)的是性能,其執(zhí)行速度比InnoDB類型更快,但是不提供事務(wù)支持,而InnoDB提供事務(wù)支持以及外部鍵等高級數(shù)據(jù)庫功能。
創(chuàng)建索引:alert table tablename add index (`字段名`)
什么是數(shù)據(jù)庫索引,主鍵索引,唯一索引的區(qū)別,索引的缺點是什么?
索引用來快速地尋找那些具有特定值的記錄。
主鍵索引和唯一索引的區(qū)別:主鍵是一種唯一性索引,但它必須指定為“PRIMARY?KEY”,每個表只能有一個主鍵。唯一索引索引列的所有值都只能出現(xiàn)一次,即必須唯一。
索引的缺點:
1、創(chuàng)建索引和維護索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加。
2、索引需要占用物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,需要的空間就會更大。
3、當對表中的數(shù)據(jù)進行增加、刪除、修改的時候,索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的維護速度。
數(shù)據(jù)庫中的事務(wù)是什么? ?事務(wù)(transaction)是作為一個單元的一組有序的數(shù)據(jù)庫操作。如果組中的所有操作都成功,則認為事務(wù)成功,即使只有一個操作失敗,事務(wù)也不成功。如果所有操作 完成,事務(wù)則提交,其修改將作用于所有其他數(shù)據(jù)庫進程。如果一個操作失敗,則事務(wù)將回滾,該事務(wù)所有操作的影響都將取消。
表單中g(shù)et與post提交方法的區(qū)別? 1. get是把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個字段一一對應(yīng),在URL中可以看到。post是通過HTTP post機制,將表單內(nèi)各個字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
2. 對于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。
3. get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
get安全性非常低,post安全性較高。
簡述0000000中無限分類的實現(xiàn)原理。
1、數(shù)據(jù)庫分類表的設(shè)計:id字段、父id字段、類名稱字段、path字段
2、Path字段存當前分類的路徑,格式:0,父類id,本身id
3、查詢分類:select * from 分類表order by path asc;
4、這樣就查出來每個分類及其對應(yīng)的子類。
foo()和@foo()之間有什么區(qū)別?(1分) @foo()控制錯誤輸出
線性表和順序表的區(qū)別?
1、線性表包括順序表和鏈表。
2、順序表中的元素的地址是連續(xù)的,鏈表里面節(jié)點的地址不是連續(xù)的,是通過指針連起來的。
使用那些工具進行版本控制?
Clear case、CVS、SVN、PVCS、Perforce、CCC、StarTeam、RCS
寫出三種以上MySQL數(shù)據(jù)庫存儲引擎的名稱(提示:不區(qū)分大小寫)MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十幾個引擎
你對Memcach的理解,優(yōu)點有哪些?
Memcache是一種緩存技術(shù),在一定的時間內(nèi)將動態(tài)網(wǎng)頁經(jīng)過解析之后保存到文件,下次訪問時動態(tài)網(wǎng)頁就直接調(diào)用這個文件,而不必在重新訪問數(shù)據(jù)庫。使用memcache做緩存的好處是:提高網(wǎng)站的訪問速度,減輕高并發(fā)時服務(wù)器的壓力。
Memcache的優(yōu)點:穩(wěn)定、配置簡單、多機分布式存儲、速度快。
實現(xiàn)中文字串截取無亂碼的方法
Mb_substr();
用PHP寫出顯示客戶端IP與服務(wù)器IP的代碼
獲取客戶端IP:get_env(“REMOTE_ADDR”);
獲取服務(wù)器端IP:$_SERVER["SERVER_ADDR"];
數(shù)據(jù)庫索引有幾類,分別是什么?什么時候該用索引?
普通索引、主鍵索引、唯一索引
并非所有的數(shù)據(jù)庫都以相同的方式使用索引,作為通用規(guī)則,只有當經(jīng)常查詢列中的數(shù)據(jù)時才需要在表上創(chuàng)建索引。
寫幾個魔術(shù)方法并說明作用?
__call()當調(diào)用不存在的方法時會自動調(diào)用的方法
__autoload()在實例化一個尚未被定義的類是會自動調(diào)用次方法來加載類文件
__set()當給未定義的變量賦值時會自動調(diào)用的方法
__get()當獲取未定義變量的值時會自動調(diào)用的方法
__construct()構(gòu)造方法,實例化類時自動調(diào)用的方法
__destroy()銷毀對象時自動調(diào)用的方法
__unset()當對一個未定義變量調(diào)用unset()時自動調(diào)用的方法
__isset()當對一個未定義變量調(diào)用isset()方法時自動調(diào)用的方法
__clone()克隆一個對象
__tostring()當輸出一個對象時自動調(diào)用的方法
$_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么?
它們都是PHP預(yù)定義變量
$_REQUEST用來獲取post或get方式提交的值
$_POST用來獲取post方式提交的值
$_GET用來獲取get方式提交的值
$_COOKIE用來獲取cookie存儲的值
$_SESSION用來獲取session存儲的值
$_FILE用來獲取上傳文件表單的值
數(shù)據(jù)庫設(shè)計時,常遇到的性能瓶頸有哪些,常有的解決方案?
瓶頸主要有:
1、磁盤搜索?優(yōu)化方法是:將數(shù)據(jù)分布在多個磁盤上
2、磁盤讀/寫?優(yōu)化方法是:從多個磁盤并行讀寫。
3、CPU周期?優(yōu)化方法:擴充內(nèi)存
4、內(nèi)存帶寬?
了解XSS攻擊嗎? 如何防止 ?
XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權(quán)模式去執(zhí)行攻擊者構(gòu)造的腳本,然后利用不安全的Activex控件執(zhí)行惡意的行為。
使用htmlspecialchars()函數(shù)對提交的內(nèi)容進行過濾,使字符串里面的特殊符號實體化。
SQL注入漏洞產(chǎn)生的原因 ? 如何防止?
SQL注入產(chǎn)生的原因:程序開發(fā)過程中不注意規(guī)范書寫sql語句和對特殊字符進行過濾,導(dǎo)致客戶端可以通過全局變量POST和GET提交一些sql語句正常執(zhí)行。
描述一下大流量高并發(fā)量網(wǎng)站的解決方案
???1、確認服務(wù)器硬件是否足夠支持當前的流量。
???2、使用memcache緩存技術(shù),將動態(tài)數(shù)據(jù)緩存到內(nèi)存中,動態(tài)網(wǎng)頁直接調(diào)用這些文件,而不必在訪問數(shù)據(jù)庫。
???3、禁止外部的盜鏈。
???4、外部網(wǎng)站的圖片或者文件盜鏈往往會帶來大量的負載壓力,因此應(yīng)該嚴格限制外部對自身圖片或者文件盜鏈,目前可以簡單的通過refer來控制盜鏈,apache自己就可以通過配置來禁止盜鏈。
???5、控制大文件的下載。
大文件的下載會占用很大的流量,對于非SCSI硬盤來說會消耗,使得網(wǎng)站響應(yīng)能力下降。
???6、使用不同的主機分流主要流量
???7、使用流量統(tǒng)計軟件。
在網(wǎng)站上安裝一個流量統(tǒng)計軟件,可以即時知道哪些地方耗費了大量流量,哪些頁面需要再進行優(yōu)化。
???8、分庫分表。
???9、Sphinx全文索引引擎。
對于大流量的網(wǎng)站,您采用什么樣的方法來解決訪問量問題?
優(yōu)化程序,優(yōu)化數(shù)據(jù)庫,如果程序和數(shù)據(jù)庫已經(jīng)最優(yōu)化,使用以下解決方法:
1、確定當前服務(wù)器設(shè)備是否滿足流量需求。
2、使用Memcache緩存技術(shù),把動態(tài)內(nèi)容緩存到文件中,動態(tài)網(wǎng)頁直接調(diào)用這些文件,而不必再訪問數(shù)據(jù)庫。
3、禁止外部盜鏈,圖片和文件外部盜鏈會給服務(wù)器帶來大量的負載壓力,可以通過refer來禁止外部盜鏈,或者使用apache來配置禁止盜鏈。
4、控制大文件的下載,大文件的下載對于非SCSI硬盤來說會占用大量的資源,導(dǎo)致服務(wù)器的響應(yīng)能力下降。
5、使用不同的主機分流主要流量,使服務(wù)器均衡負載。
6、使用流量統(tǒng)計軟件統(tǒng)計分析網(wǎng)站流量,可以知道哪些地方耗費了大量的流量,哪些頁面需要再進行優(yōu)化。
如何設(shè)計或配置Mysql,才能達到高效使用的目的。
???1、數(shù)據(jù)庫設(shè)計方面,設(shè)計結(jié)構(gòu)良好的數(shù)據(jù)庫,允許部分數(shù)據(jù)冗余。
選取最適用的字段屬性,盡可能把字段設(shè)置為NOTNULL,這樣在查詢的時候,數(shù)據(jù)庫不用去比較NULL值。
???2、系統(tǒng)架構(gòu)設(shè)計方面,表散列,把海量數(shù)據(jù)散列到幾個不同的表里面,集群,數(shù)據(jù)庫查詢和寫入分開。
寫高效sql語句,以提高效率。
使用連接(join)來代替子查詢
使用聯(lián)合(union)來代替手動創(chuàng)建的臨時表
所得皆必須,只從數(shù)據(jù)庫取必須的數(shù)據(jù)。
必要的時候用不同的存儲引擎,比如Innodb可以減少死鎖,HEAP可以提高一個數(shù)量級的查詢速度。
使用事務(wù)
使用外鍵
使用索引
如何進行防SQL注入?
???1、過濾掉一些常見的數(shù)據(jù)庫操作關(guān)鍵字:select,insert,update,delete,and,*等
或者通過系統(tǒng)函數(shù):addslashes(需要被過濾的內(nèi)容)來進行過濾。
???2、在PHP配置文件中
Register_globals=off;設(shè)置為關(guān)閉狀態(tài) //作用將注冊全局變量關(guān)閉。
比如:接收POST表單的值使用$_POST['user'],如果將register_globals=on;直接使用$user可以接收表單的值。
???3、SQL語句書寫的時候盡量不要省略小引號(tab鍵上面那個)和單引號
???4、提高數(shù)據(jù)庫命名技巧,對于一些重要的字段根據(jù)程序的特點命名,取不易被猜到的
???5、對于常用的方法加以封裝,避免直接暴漏SQL語句
???6、開啟PHP安全模式
Safe_mode=on;
???7、打開magic_quotes_gpc來防止SQL注入
???Magic_quotes_gpc=off;默認是關(guān)閉的,它打開后將自動把用戶提交的sql語句的查詢進行轉(zhuǎn)換,把'轉(zhuǎn)為\',這對防止sql注入有重大作用。
因此開啟:magic_quotes_gpc=on;
???8、控制錯誤信息
關(guān)閉錯誤提示信息,將錯誤信息寫到系統(tǒng)日志。
???9、使用mysqli或pdo預(yù)處理。
用PHP寫出一個安全的用戶登錄系統(tǒng)需要注意哪些方面。
1、密碼要使用MD5(密碼+字符串)進行加密。
2、登錄表單的名稱不要跟數(shù)據(jù)庫字段一樣,以免暴漏表字段。
3、用戶表的表名、字段名、密碼盡量用不容易被猜到的。
4、要使用驗證碼驗證登陸,以防止暴力破解。
5、驗證提交的數(shù)據(jù)是不是來自本網(wǎng)站。
6、登錄后臺處理代碼數(shù)據(jù)庫部分使用預(yù)處理,做好過濾,防止sql注入。
字符串轉(zhuǎn)數(shù)組,數(shù)組轉(zhuǎn)字符串,字符串截取,字符串替換,字符串查找的函數(shù)分別是什么?
???Implode()、explode()、substr()、str_replace()、strpos、strrpos、strstr
談?wù)剬vc的認識?
由模型(model),視圖(view),控制器(controller)完成的應(yīng)用程序 由模型發(fā)出要實現(xiàn)的功能到控制器,控制器接收組織功能傳遞給視圖;
MVC是一個設(shè)計模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。
視圖是用戶看到并與之交互的界面。
模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。
控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。
MVC的優(yōu)點:低耦合性、高重用性和可適用性、較低的生命周期成本、快速的部署、可維護性、可擴展性,有利于軟件工程化管理
MVC的缺點:沒有明確的定義,完全理解MVC并不容易。不適合小型規(guī)模的應(yīng)用程序。
PHP如何拋出和接收錯誤?
使用try...catch,異常的代碼放在try代碼塊內(nèi),如果沒有觸發(fā)異常,則代碼繼續(xù)執(zhí)行,如果異常被觸發(fā),就會拋出一個異常。Catch代碼塊捕獲異常,并創(chuàng)建一個包含異常信息的對象。$e->getMessage(),輸出異常的錯誤信息。
你常用到的mysql命令?
Show databases
Show tables
Insert into 表名() values()
Update 表名 set 字段=值 where ...
Delete from 表名 where ...
Select * from 表名 where 條件 order by ... Desc/asc limit ... Group by ... Having ...
你所知道的php數(shù)組相關(guān)的函數(shù)?
array()----創(chuàng)建數(shù)組
array_combine()----通過合并兩個數(shù)組來創(chuàng)建一個新數(shù)組
range()----創(chuàng)建并返回一個包含指定范圍的元素的數(shù)組
compact()----建立一個數(shù)組
array_chunk()----將一個數(shù)組分割成多個
array_merge()----把兩個或多個數(shù)組合并成一個數(shù)組
array_slice()----在數(shù)組中根據(jù)條件取出一段值
array_diff()----返回兩個數(shù)組的差集數(shù)組
array_intersect()----計算數(shù)組的交集
array_search()----在數(shù)組中搜索給定的值
array_splice()----移除數(shù)組的一部分且替代它
array_key_exists()----判斷某個數(shù)組中是否存在指定的key
shuffle()----把數(shù)組中的元素按隨機順序重新排列
array_flip()----交換數(shù)組中的鍵和值
array_reverse()----將原數(shù)組中的元素順序翻轉(zhuǎn),創(chuàng)建新的數(shù)組并返回
array_unique()----移除數(shù)組中重復(fù)的值
請寫出5個常用的unix操作命令。
1、Ls?-l
2、tar?-zxvf
3、Touch
4、Cat
5、Mkdir
6、rm
你所知道的設(shè)計模式有哪些?
工廠模式、策略模式、單元素模式、觀察者模式、命令鏈模式
請寫出5個常用的SQL操作關(guān)鍵字。
Select?,update,?delete,?insert?into,?
create?,group?by?,order?by
有一個網(wǎng)頁地址, 比如PHP開發(fā)資源網(wǎng)主頁:http://www.phpres.com/index.html,如何得到它的內(nèi)容?
獲取網(wǎng)頁內(nèi)容:
$url=”http://www.phpres.com/index.html“;
$str=file_get_contents($url);
MYSQL取得當前時間的函數(shù)是?,格式化日期的函數(shù)是(2分) now(),date()
優(yōu)化MYSQL數(shù)據(jù)庫的方法。(4分,多寫多得)1、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設(shè)置NOT NULL,例如’省份,性別’,最好設(shè)置為ENUM2、使用連接(JOIN)來代替子查詢:3、使用聯(lián)合(UNION)來代替手動創(chuàng)建的臨時表4、事務(wù)處理:5、鎖定表,優(yōu)化事務(wù)處理:6、使用外鍵,優(yōu)化鎖定表7、建立索引: a.格式: (普通索引)-> 創(chuàng)建:CREATE INDEX <索引名> ON tablename (索引字段) 修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段) 創(chuàng)表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段)) (唯一索引)-> 創(chuàng)建:CREATE UNIQUE <索引名> ON tablename (索引字段) 修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段) 創(chuàng)表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段)) (主鍵)-> 它是唯一索引,一般在創(chuàng)建表是建立,格式為:CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])8、優(yōu)化查詢語句
求兩個日期的差數(shù),例如2007-2-5 ~ 2007-3-6 的日期差數(shù)
$begin=strtotime(“2007-2-5″);$end=strtotime(“2007-3-6″);echo ($end-$begin)/(24*3600);
用PHP打印出前一天的時間,打印格式是2007年5月10日22:21:21
Echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’));
在PHP中error_reporting這個函數(shù)有什么作用?設(shè)置PHP 的報錯級別并返回當前級別。
請寫出常見的排序算法,并用PHP實現(xiàn)冒泡排序,將數(shù)組$a = array()按照從小到大的方式進行排序。
常見的排序算法: 冒泡排序法、快速排序法、簡單選擇排序法、堆排序法、直接插入排序法、希爾排序法、合并排序法。
冒泡排序法的基本思想是:對待排序記錄關(guān)鍵字從后往前(逆序)進行多遍掃描,當發(fā)現(xiàn)相鄰兩個關(guān)鍵字的次序與排序要求的規(guī)則不符時,就將這兩個記錄進行交換。這樣,關(guān)鍵字較小的記錄將逐漸從后面向前面移動,就象氣泡在水中向上浮一樣,所以該算法也稱為氣泡排序法。
// 冒泡排序法
Function mysort($arr){
For($i=0; $i<count($arr); $i++){
For($j=0; $j<count($arr)-1; $j++){
If($arr[$j] > $arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
????????????}
????????}
????}
Return $arr;
}
$arr=array(3,2,1);
print_r(mysort($arr));
寫出匹配URL的正則表達式.
/^[a-zA-z]+:\/\/(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?/
請用正則表達式(Regular Expression)寫一個函數(shù)驗證電子郵件的格式是否正確。if(isset($_POST['action']) && $_POST['action']==’submitted’){ $email=$_POST['email']; if(!preg_match(“/^(?:w+.?)*w+@(?:w+.?)*w+$/”,$email)){ echo “電子郵件檢測失敗”; }else{ echo “電子郵件檢測成功”; }}
請寫一個函數(shù)驗證電子郵件的格式是否正確
function checkemail($email){
echo preg_match(‘/^[\w]+@[\w]+[\.]([\w]+)$/’,$email)?’email格式正確‘:’email格式不正確‘;
}
使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個有序數(shù)組
//二分查找(數(shù)組里查找某個元素)
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}
JS表單彈出對話框函數(shù)是?獲得輸入焦點函數(shù)是? (2分)彈出對話框: alert(),prompt(),confirm()獲得輸入焦點focus()
JS的轉(zhuǎn)向函數(shù)是?怎么引入一個外部JS文件?(2分) window.location.href,
<script type="text/javascript" src="hello.js"></script>
查詢出年齡介于20歲到30歲之間的用戶
Select * from user where age>20 and age<30
寫一個函數(shù),能夠遍歷一個文件夾下的所有文件和子文件夾。
function my_scandir($dir){
?????$files = array();
?????if ( $handle = opendir($dir) ){
?????????while ( ($file = readdir($handle)) !== false ) {
?????????????if ( $file != ".." && $file != "." ) {
?????????????????if ( is_dir($dir . "/" . $file) ) {
?????????????????????$files[$file] = scandir($dir . "/" . $file);
?????????????????}else {
?????????????????????$files[] = $file;
?????????????????}
?????????????}
?????????}
?????????closedir($handle);
?????????return $files;
?????}
寫一個函數(shù),盡可能高效的,從一個標準url 里取出文件的擴展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
答案1:
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(“.”,$file);
return $ext[1];
}
答案2:
function getExt($url) {
$url = basename($url);
$pos1 = strpos($url,”.”);
$pos2 = strpos($url,”?”);
if(strstr($url,”?”)){
Return substr($url,$pos1 + 1,$pos2 – $pos1 – 1);
} else {
return substr($url,$pos1);
}
}
把John 新增到 users 陣列?
$users[] = ‘john’; ??array_push($users,‘john’);
從表login中選出name字段包含admin的前10條結(jié)果所有信息的sql語句
Select *from login where name like?'%admin%' limit 0,10;
寫出發(fā)貼數(shù)最多的十個人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分) SELECT * FROM `members` ORDER BY posts DESC limit 0,10;
使用php寫一段簡單查詢,查出所有姓名為“張三”的內(nèi)容并打印出來 (2分) 表名User Name Tel Content Date 張三13333663366 大專畢業(yè) 2006-10-11 張三13612312331 本科畢業(yè) 2006-10-15 張四021-55665566 中專畢業(yè) 2006-10-15 請根據(jù)上面的題目完成代碼: $mysql_db=mysql_connect("local","root","pass");
@mysql_select_db("DB",$mysql_db);
????$result = mysql_query("SELECT * FROM `user` WHERE name='張三'");
????while($rs = mysql_fetch_array($result)){
??????echo $rs["tel"].$rs["content"].$rs["date"];
}
Pdo
Try{
$dsn = "mysql:host=localhost;dbname=user";
$pdo = new PDO($dsn,'root','123456');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$pdo->query('set names utf8');
$sql = "SELECT * FROM user WHERE name='張三'";
$result = $pdo->query($sql);
Foreach($result as $v){
Echo $v['tel'].$v['content'].$v['date'];
}
}catch(PDOException $e){
Echo $e->getCode().':'.$e->getMessage();
}
Mysqli寫法:
$mysqli = new mysqli('localhost','root','123456','user');
If(mysqli_connect_errno()){
Die('連接數(shù)據(jù)庫失敗,'.mysqli_connect_error());
}
$mysqli->set_charset('utf8');
$result = $mysqli->query("SELECT * FROM user WHERE name='張三'");
If($result && $result->affected_row()){
While($row = $result->fetch_object()){
Echo $row->tel.$row->content.$row->date;
}
}
寫出以下程序的輸出結(jié)果(1分) <?php
$b=201; $c=40; $a=$b>$c?4:5; echo $a; ?>答:4
檢測一個變量是否有設(shè)置的函數(shù)是否?是否為空的函數(shù)是?(2分) isset($str),empty($str);
編寫一個在線留言本,實現(xiàn)用戶的在線留言功能,留言信息存儲到數(shù)據(jù)庫?
假設(shè)現(xiàn)在有數(shù)據(jù)庫:test表:mess字段:id,name,message
[if !supportLists]1、[endif]html頁面,填寫留言:
<form ?method="post" action="post.php">
留言者:<input type="text" name="name" />
留言內(nèi)容:<input type="text" name="message" />
<input type="submit" value="提交" />
</form>
[if !supportLists]2、[endif]post.php頁面,處理留言:
$name = $_POST['name'];
$message = $_POST['message'];
Try{
$dsn = ''mysql:host=localhost;dbname=test;
$pdo = new PDO($dsn,'root','112233');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$pdo->query('set names utf8');
$sql = "insert into test(name,message) values('$name','$message')";
$result = $pdo->exec($sql);
If($result){
Echo ‘留言成功’;
}else{
Echo '留言失敗';
}
}catch(PDOException $e){
Echo $e->getCode().' : '.$e->getMessage();
}
請列出3個PHP中的預(yù)定義全局變量
1、$_SESSION
2、$_COOKIE
3、$_SERVER
4、$_GET
5、$_POST
寫一個函數(shù)實現(xiàn)字符串翻轉(zhuǎn)
1、Strrev()
2、自己寫:
Function?str($a){
$len=strlen($a);
$b=”";
For($i=$len-1;$i>=0;$i–){
$b.=$a[$i];
}
Return?$b;
}
$sum=0;????????for($i=0;$i<=1000;$i++){??????????if($i%3==0){??????????????$sum+=$i;??????????} ?????????}????????echo $sum;