1.表單中g(shù)et與post提交方法的區(qū)別?
答:get是發(fā)送請求HTTP協(xié)議通過url參數(shù)傳遞進行接收,而post是實體數(shù)據(jù),可以通過表單提交大量信息.
2.session與cookie的區(qū)別?
①cookie數(shù)據(jù)存放在客戶的瀏覽器上另玖,session數(shù)據(jù)放在服務(wù)器上
②cookie不是很安全厕妖,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙
考慮到安全應(yīng)當使用session
③session會在一定時間內(nèi)保存在服務(wù)器上。當訪問增多序六,會比較占用你服務(wù)器的性能
考慮到減輕服務(wù)器性能方面挡逼,應(yīng)當使用COOKIE
④單個cookie保存的數(shù)據(jù)不能超過4K部念,很多瀏覽器都限制一個站點最多保存20個cookie
3.數(shù)據(jù)庫中的事務(wù)是什么?
答:事務(wù)(transaction)是作為一個單元的一組有序的數(shù)據(jù)庫操作穴翩。如果組中的所有操作都成功邀窃,則認為事務(wù)成功荸哟,即使只有一個操作失敗假哎,事務(wù)也不成功。如果所有操作 完成鞍历,事務(wù)則提交舵抹,其修改將作用于所有其他數(shù)據(jù)庫進程。如果一個操作失敗劣砍,則事務(wù)將回滾惧蛹,該事務(wù)所有操作的影響都將取消。
4.用PHP打印出前一天的時間格式是2006-5-10 22:21:21(2分)
//strtotime成功則返回時間戳刑枝,否則返回FALSE
echo date("Y-m-d H:i:s",strtotime("now")), "\n";
echo date("Y-m-d H:i:s",strtotime("10 September 2000")), "\n";
echo date("Y-m-d H:i:s",strtotime("+1 day")), "\n";
echo date("Y-m-d H:i:s",strtotime("+1 week")), "\n";
echo date("Y-m-d H:i:s",strtotime("+1 week 2 days 4 hours 2 seconds")), "\n";
echo date("Y-m-d H:i:s",strtotime("next Thursday")), "\n";
echo date("Y-m-d H:i:s",strtotime("last Monday")), "\n";
echo date("Y-m-d H:i:s",strtotime("-1 day")), "\n";
2016-09-21 21:42:40
2000-09-10 00:00:00
2016-09-22 21:42:40
2016-09-28 21:42:40
2016-10-01 01:42:42
2016-09-22 00:00:00
2016-09-19 00:00:00
2016-09-20 21:42:40
5.能夠使HTML和PHP分離開使用的模板(1分)
答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate
6.使用哪些工具進行版本控制?
Git香嗓、svn、vss装畅、cvs
7.反轉(zhuǎn)字符串靠娱,如何實現(xiàn)字符串翻轉(zhuǎn)?(3分) revease ?strrev
strrev("hello world!")
8.優(yōu)化MYSQL數(shù)據(jù)庫的方法。
①掠兄、選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設(shè)置NOT NULL,例如’省份,性別’,最好設(shè)置為ENUM
②像云、使用連接(JOIN)來代替子查詢:
a.刪除沒有任何訂單客戶:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
b.提取所有沒有訂單客戶:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
c.提高b的速度優(yōu)化:
SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid
WHERE orderinfo.customerid IS NULL
③、使用聯(lián)合(UNION)來代替手動創(chuàng)建的臨時表
a.創(chuàng)建臨時表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`
④蚂夕、事務(wù)處理:
a.保證數(shù)據(jù)完整性,例如添加和修改同時,兩者成立則都執(zhí)行,一者失敗都失敗
mysql_query(“BEGIN”);
mysql_query(“INSERT INTO customerinfo (name) 8i VALUES (‘$name1′)”;
mysql_query(“SELECT * FROM `orderinfo` where customerid=”.$id”);
mysql_query(“COMMIT”);
⑤迅诬、鎖定表,優(yōu)化事務(wù)處理:
a.我們用一個SELECT語句取出初始數(shù)據(jù),通過一些計算婿牍,用UPDATE語句將新值更新到表中侈贷。
包含有WRITE(write)關(guān)鍵字的LOCK TABLE語句可以保證在UNLOCK TABLES命令被執(zhí)行之前,
不會有其它的訪問來對inventory進行插入等脂、更新或者刪除的操作
mysql_query(“LOCK TABLE customerinfo READ, orderinfo WRITE”);
mysql_query(“SELECT customerid FROM `customerinfo` where id=”.$id);
mysql_query(“UPDATE `orderinfo` SET ordertitle=’$title’where customerid=”.$id);
mysql_query(“UNLOCK TABLES”);
⑥铐维、使用外鍵,優(yōu)化鎖定表
a.把customerinfo里的customerid映射到orderinfo里的customerid,
任何一條沒有合法的customerid的記錄不會寫到orderinfo里
CREATE TABLE customerinfo
(
customerid INT NOT NULL,
PRIMARY KEY(customerid)
)TYPE = INNODB;
CREATE TABLE orderinfo
(
orderid INT NOT NULL,
customerid INT NOT NULL,
PRIMARY KEY(customerid,orderid),
FOREIGN KEY (customerid) REFERENCES customerinfo
(customerid) ON DELETE CASCADE
)TYPE = INNODB;
注意:’ON DELETE CASCADE’,該參數(shù)保證當customerinfo表中的一條記錄刪除的話同時也會刪除order
表中的該用戶的所有記錄,注意使用外鍵要定義事務(wù)安全類型為INNODB;
⑦、建立索引:
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[索引字段])
⑧慎菲、優(yōu)化查詢語句
a.最好在相同字段進行比較操作,在建立好的索引字段上盡量減少函數(shù)操作
例子1:
SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)
SELECT * FROM order WHERE orderDate<"2008-01-01";(快)
例子2:
SELECT * FROM order WHERE addtime/7<24;(慢)
SELECT * FROM order WHERE addtime<24*7;(快)
例子3:
SELECT * FROM order WHERE title like "%good%";
SELECT * FROM order WHERE title>=”good”and name<"good";
9.對于大流量的網(wǎng)站,您采用什么樣的方法來解決訪問量問題?(4分)
答:確認服務(wù)器硬件是否足夠支持當前的流量,數(shù)據(jù)庫讀寫分離,優(yōu)化數(shù)據(jù)表,程序功能規(guī)則,禁止外部的盜鏈,控制大文件的下載,使用不同主機分流主要流量嫁蛇。
10.用PHP寫出顯示客戶端IP與服務(wù)器IP的代碼
echo "客戶端::".getenv('REMOTE_ADDR')." or ".$_SERVER['REMOTE_ADDR'];
echo "服務(wù)端::".gethostbyname("www.baidu.com");
11.如何用最簡單的方法打印$str =“abcde”每個字母;可以用substr()
答:for($i=0;$i
Echo substr($str,$i,1);//或$string{$i}或$string[$i]
}
備注:都是向前的,第三個參數(shù)若為空則說明第二個參數(shù)指定下標后剩余的都要完
echosubstr('abcdef',1);// bcdef
echosubstr('abcdef',1,3);// bcd
echosubstr('abcdef',0,4);// abcd
echosubstr('abcdef',0,8);// abcdef
echosubstr('abcdef', -1,1);// f
// Accessing single characters in a string
// can also be achived using "curly braces"
$string='abcdef';
echo$string{0};// a
echo$string{3};// d
echo$string{strlen($string)-1};// f
$rest=substr("abcdef", -1);// returns "f"
$rest=substr("abcdef", -2);// returns "ef"
$rest=substr("abcdef", -3,1);// returns "d"
12.語句include和require的區(qū)別是什么?為避免多次包含同一文件露该,可用(?)語句代替它們? (2分)
Require是無條件包含睬棚、無返回值(快的原因?)解幼,無論條件成立與否都會先執(zhí)行require抑党,但若其文件不存在或有語法錯誤則會報出fatal error致命性錯誤。
Include是有條件包含撵摆、有返回值底靠,若文件不存在或語法錯誤會給出warning警告,但腳本仍繼續(xù)執(zhí)行
13.如何修改SESSION的生存時間(1分).
答:方法1:將php.ini中的session.gc_maxlifetime設(shè)置為9999重啟apache
14.如何修改SESSION的生存時間特铝?
方法1:將php.ini中的session.gc_maxlifetime設(shè)置為9999重啟apache
方法2:$savePath =“./session_save_dir/”;
$lifeTime =小時*秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
方法3:setcookie() and session_set_cookie_params($lifeTime);
15.有一個網(wǎng)頁地址,比如PHP開發(fā)資源網(wǎng)主頁:http://www.phpres.com/index.html,如何得到它的內(nèi)容?
$readcontents = fopen("http://www.phpres.com/index.html", "rb");
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;
16.在HTTP 1.0中暑中,狀態(tài)碼401的含義是(?);如果返回“找不到文件”的提示壹瘟,則可用header函數(shù),其語句為(?);(2分)
答:狀態(tài)401代表未被授權(quán),header(“Location:www.xxx.php”);
17.在PHP中error_reporting這個函數(shù)有什么作用? (1分)
設(shè)置錯誤級別與錯誤信息回報
18.PECL和PEAR是什么鳄逾?
PEAR: PHP Extension and Application Repository(PHP擴展和應(yīng)用倉庫)補充的是上層功能
將PHP程序開發(fā)過程中常用的功能編寫成類庫稻轨,涵蓋了頁面呈現(xiàn)、數(shù)據(jù)庫訪問雕凹、文件操作殴俱、數(shù)據(jù)結(jié)構(gòu)、緩存操作枚抵、網(wǎng)絡(luò)協(xié)議线欲、WebService等許多方面,用戶可以通過下載這些類庫并適當?shù)淖饕恍┒ㄖ埔詫崿F(xiàn)自己需要的功能
PECL: PHP Extension Community Language(PHP擴展庫)補充的是底層功能
PECL可以看作PEAR的一個組成部分汽摹,提供了與PEAR類似的功能李丰。不同的是PEAR的所有擴展都是用純粹的PHP代碼編寫的,用戶在下載到PEAR擴展以后可以直接使用將擴展的代碼包含到自己的PHP文件中使用竖慧。而PECL是使用C語言開發(fā)的嫌套,通常用于補充一些用PHP難以完成的底層功能逆屡,往往需要重新編譯或者在配置文件中設(shè)置后才能在用戶自己的代碼中使用
19.簡述如何得到當前執(zhí)行腳本路徑圾旨,包括所得到參數(shù)。(2分)
答:$script_name = basename(__file__); print_r($script_name);
20.foo()和@foo()之間有什么區(qū)別?(1分)
答:@foo()控制錯誤輸出
21.mysql_fetch_row()和mysql_fetch_array之間有什么區(qū)別? (1分)
mysql_fetch_row是從結(jié)果集取出1行數(shù)組,作為枚舉
mysql_fetch_array是從結(jié)果集取出一行數(shù)組作為關(guān)聯(lián)數(shù)組,或數(shù)字數(shù)組,兩者兼得
22.寫出發(fā)貼數(shù)最多的十個人名字的SQL魏蔗,利用下表:members(id,username,posts,pass,email)
DESC是descend降序意思asc是ascend升序砍的。
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;
注:MySQL數(shù)據(jù)庫limit分頁、排序-SQL語句示例
select?*?from?persons?limit??A,??B;
解釋:A莺治,查詢起點 廓鞠,若為limit B則默認A為0
B,你需要的行數(shù)
23.請說明php中傳值與傳引用的區(qū)別谣旁。什么時候傳值什么時候傳引用?
24.請說明php中傳值與傳引用的區(qū)別床佳。什么時候傳值什么時候傳引用?(2分)
答:按值傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部都會被忽略
按引用傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外部也能反映出這些修改
優(yōu)缺點:按值傳遞時,php必須復(fù)制值榄审。特別是對于大型的字符串和對象來說砌们,這將會是一個代價很大的操作。
按引用傳遞則不需要復(fù)制值搁进,對于性能提高很有好處浪感。
25.在PHP中error_reporting這個函數(shù)有什么作用?
設(shè)置錯誤級別與錯誤信息回報
26.請寫一個函數(shù)驗證電子郵件的格式是否正確(2分)
dy@sina.com
8047@qq.com
yahu@.com.cn
dy@163.com
dy_35
答:function checkEmail($email)
{
$pregEmail = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";
return preg_match($pregEmail,$email);
}
27.
28、如何使用下面的類,并解釋下面什么意思?(3)
class test{
function Get_test($num){
$num=md5(md5($num)."En");
return $num;
}
}
答:$testnum = "123";
$object = new test();
$encrypt = $object->Get_test($testnum);
echo $encrypt;
類test里面包含Get_test方法,實例化類調(diào)用方法多字符串加密
29饼问、寫出SQL語句的格式:插入 影兽,更新 ,刪除(4分)
表名User
Name Tel Content Date
張三13333663366大專畢業(yè)2006-10-11
張三13612312331本科畢業(yè)2006-10-15
張四021-55665566中專畢業(yè)2006-10-15
(a)有一新記錄(小王13254748547高中畢業(yè)2007-05-06)請用SQL語句新增至表中
mysql_query("INSERT INTO `user` (name,tel,content,date) VALUES
('小王','13254748547','高中畢業(yè)','2007-05-06')")
(b)請用sql語句把張三的時間更新成為當前系統(tǒng)時間
$nowDate = date("Ymd");
mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='張山'");
(c)請寫出刪除名為張四的全部記錄
mysql_query("DELETE FROM `user` WHERE name='張四'");
30莱革、請寫出數(shù)據(jù)類型(int char varchar datetime text)的意思;請問varchar和char有什么區(qū)別(2分)
答:int是數(shù)字類型,char固定長度字符串,varchar實際長度字符串,datetime日期時間型,text文本字符串
char的場地固定為創(chuàng)建表設(shè)置的長度,varchar為可變長度的字符
31峻堰、寫出以下程序的輸出結(jié)果(1分)
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
?>
答:4
32.不使用第三個變量交換兩個變量的值:讹开?
33.GD庫是做什么用的? (1分)
答:gd庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片茧妒,或者生成圖片萧吠。
在網(wǎng)站上GD庫通常用來生成縮略圖或者用來對圖片加水印或者對網(wǎng)站數(shù)據(jù)生成報表。
34.下面哪個選項沒有將john添加到users數(shù)組中? (1分)
(a) $users[] = 'john’;
(b) array_add($users,’john’);
(c) array_push($users,'john’);
(d) $users ||= 'john’; [ a , c ]
注:array_push()將array當成一個棧桐筏,并將傳入的變量壓入array的末尾纸型。array的長度將根據(jù)入棧變量的數(shù)目增加。
35.寫一個函數(shù)梅忌,盡可能高效的狰腌,從一個標準url里取出文件的擴展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1需要取出php或.php
36.