八戒一区二区三区-午夜A级伦理电影-91好吊色国产欧美日韩在线-欧美国产精品二区三区13p-国产操逼大毛片基地-亚洲第一性爱免费视频网

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

2020年最新的PHP面試題(附答案)

1. 什么是面向?qū)ο螅恐饕卣魇鞘裁矗?/strong>

面向?qū)ο笫浅绦虻囊环N設(shè)計(jì)方式,它利于提高程序的重用性,使程序結(jié)構(gòu)更加清晰。主要特征:封裝、繼承、多態(tài)。

2. SESSION 與 COOKIE的區(qū)別是什么,請(qǐng)從協(xié)議,產(chǎn)生的原因與作用說(shuō)明?

1、http無(wú)狀態(tài)協(xié)議,不能區(qū)分用戶(hù)是否是從同一個(gè)網(wǎng)站上來(lái)的,同一個(gè)用戶(hù)請(qǐng)求不同的頁(yè)面不能看做是同一個(gè)用戶(hù)。

2、SESSION存儲(chǔ)在服務(wù)器端,COOKIE保存在客戶(hù)端。Session比較安全,cookie用某些手段可以修改,不安全。Session依賴(lài)于cookie進(jìn)行傳遞。

禁用cookie后,session不能正常使用。Session的缺點(diǎn):保存在服務(wù)器端,每次讀取都從服務(wù)器進(jìn)行讀取,對(duì)服務(wù)器有資源消耗。Session保存在服務(wù)器端的文件或數(shù)據(jù)庫(kù)中,默認(rèn)保存在文件中,文件路徑由php配置文件的session.save_path指定。Session文件是公有的。

3. HTTP 狀態(tài)中302、403、 500代碼含義?

一二三四五原則: 一. 消息系列 二 成功系列 三. 重定向系列 四. 請(qǐng)求錯(cuò)誤系列 五. 服務(wù)器端錯(cuò)誤系列

302:臨時(shí)轉(zhuǎn)移成功,請(qǐng)求的內(nèi)容已轉(zhuǎn)移到新位置 403:禁止訪問(wèn) 500:服務(wù)器內(nèi)部錯(cuò)誤 401代表未授權(quán)。

4. Linux 下建立壓縮包,解壓縮包的命令

Tar.gz:

打包: tar czf file.tar.gz file.txt

解壓: tar xzf file.tar.gz

Bz2:

打包: bzip2 [-k] 文件

解壓: bunzip2 [-k] 文件

Gzip(只對(duì)文件,不保留原文件)

打包: gzip file1.txt

解壓: gunzip file1.txt.gz

Zip: -r 對(duì)目錄

打包: zip file1.zip file1.txt

解壓: unzip file1.zip

5. 請(qǐng)寫(xiě)出數(shù)據(jù)類(lèi)型(int char varchar datetime text)的意思;請(qǐng)問(wèn) varchar 和 char有什么區(qū)別?

Int 整數(shù) char 定長(zhǎng)字符 Varchar 變長(zhǎng)字符 Datetime 日期時(shí)間型 Text 文本型 Varchar 與char的區(qū)別 char是固定長(zhǎng)度的字符類(lèi)型,分配多少空間,就占用多長(zhǎng)空間。 Varchar是可變長(zhǎng)度的字符類(lèi)型,內(nèi)容有多大就占用多大的空間,能有效節(jié)省空間。 由于varchar類(lèi)型是可變的,所以在數(shù)據(jù)長(zhǎng)度改變的時(shí),服務(wù)器要進(jìn)行額外的操作,所以效率比char類(lèi)型低。

6. MyISAM 和 InnoDB 的基本區(qū)別?索引結(jié)構(gòu)如何實(shí)現(xiàn)?

MyISAM類(lèi)型不支持事務(wù),表鎖,易產(chǎn)生碎片,要經(jīng)常優(yōu)化,讀寫(xiě)速度較快,而InnoDB類(lèi)型支持事務(wù),行鎖,有崩潰恢復(fù)能力。讀寫(xiě)速度比MyISAM慢。

創(chuàng)建索引:alert table tablename add index (`字段名`)

7. 不使用cookie向客戶(hù)端發(fā)送一個(gè)cookie.

理解:session_start()開(kāi)啟時(shí),生成一個(gè)常量 SID,當(dāng)COOKIE開(kāi)啟時(shí),這個(gè)常量為空,當(dāng)COOKIE關(guān)閉時(shí),這個(gè)常量中存儲(chǔ)了PHPSESSID的值。通過(guò)在URL后加一個(gè)SID參數(shù)來(lái)傳遞SESSIONID的值,從而使客戶(hù)端頁(yè)面可以使用SESSION里面的值。 當(dāng)客戶(hù)端開(kāi)啟COOKIE和服務(wù)器端開(kāi)啟SESSION時(shí)。 瀏覽器第一次請(qǐng)求,服務(wù)器會(huì)向?yàn)g覽器端發(fā)送一個(gè)COOKIE里面存儲(chǔ)SESSIONID. 當(dāng)瀏覽器第二次請(qǐng)求時(shí),會(huì)把已存在

8. isset() 和 empty() 區(qū)別

Isset判斷變量是否存在,可以傳入多個(gè)變量,若其中一個(gè)變量不存在則返回假,empty判斷變量是否為空為假,只可傳一個(gè)變量,如果為空為假則返回真。

9. 如何在頁(yè)面之間傳遞變量(至少兩種方式) ? GET,POST,COOKIE,SESSION,隱藏表單

1. 寫(xiě)出匹配URL的正則表達(dá)式.

‘/^(https?|ftps?)://(www).([^./]+).(com|cn|org)(/[w-./?%&=]*)?/i’

2. 請(qǐng)寫(xiě)出常見(jiàn)的排序算法,并用PHP實(shí)現(xiàn)冒泡排序,將數(shù)組$a = array()按照從小到大的方式進(jìn)行排序。

常見(jiàn)的排序算法: 冒泡排序法、快速排序法、簡(jiǎn)單選擇排序法、堆排序法、直接插入排序法、希爾排序法、合并排序法。

冒泡排序法的基本思想是:對(duì)待排序記錄關(guān)鍵字從后往前(逆序)進(jìn)行多遍掃描,當(dāng)發(fā)現(xiàn)相鄰兩個(gè)關(guān)鍵字的次序與排序要求的規(guī)則不符時(shí),就將這兩個(gè)記錄進(jìn)行交換。這樣,關(guān)鍵字較小的記錄將逐漸從后面向前面移動(dòng),就象氣泡在水中向上浮一樣,所以該算法也稱(chēng)為氣泡排序法。

// 冒泡排序法 Function mysort($arr){  For($i=0; $i<count($arr); $i++){   For($j=0; $j<count($arr)-1-$i; $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));

3. 請(qǐng)說(shuō)明 PHP 中傳值與傳引用的區(qū)別。什么時(shí)候傳值什么時(shí)候傳引用?

按值傳遞:函數(shù)范圍內(nèi)對(duì)值的任何改變?cè)诤瘮?shù)外部都會(huì)被忽略

按引用傳遞:函數(shù)范圍內(nèi)對(duì)值的任何改變?cè)诤瘮?shù)外部也能反映出這些修改

優(yōu)缺點(diǎn):按值傳遞時(shí),php必須復(fù)制值。特別是對(duì)于大型的字符串和對(duì)象來(lái)說(shuō),這將會(huì)是一個(gè)代價(jià)很大的操作。按引用傳遞則不需要復(fù)制值,對(duì)于性能提高很有好處。

在PHP中error_reporting這個(gè)函數(shù)有什么作用?

設(shè)置 PHP 的報(bào)錯(cuò)級(jí)別并返回當(dāng)前級(jí)別。

請(qǐng)用正則表達(dá)式(Regular Expression)寫(xiě)一個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確。

if(isset($_POST['action']) && $_POST['action']==’submitted’){  $email=$_POST['email'];  if(!preg_match(“/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[0-9a-zA-Z-]+){1,3}$/”,$email)){   echo “電子郵件檢測(cè)失敗”;  }else{   echo “電子郵件檢測(cè)成功”;  } }

使用PHP描述快速排序算法,對(duì)象可以是一個(gè)數(shù)組?

原理:快速排序使用分治策略來(lái)把待排序數(shù)據(jù)序列分為兩個(gè)子序列,具體步驟為:

(1)從數(shù)列中挑出一個(gè)元素,稱(chēng)該元素為“基準(zhǔn)”。

(2)掃描一遍數(shù)列,將所有比“基準(zhǔn)”小的元素排在基準(zhǔn)前面,所有比“基準(zhǔn)”大的元素排在基準(zhǔn)后面。

(3)通過(guò)遞歸,將各子序列劃分為更小的序列,直到把小于基準(zhǔn)值元素的子數(shù)列和大于基準(zhǔn)值元素的子數(shù)列排序。

//快速排序(數(shù)組排序) function QuickSort($arr){  $num = count($arr);  $l=$r=0;  for($i=1;$i<$num;$i++){   if($arr[$i] < $arr[0]){    $left[] = $arr[$i];    $l++;   }else{    $right[] = $arr[$i];    $r++;   }  }  if($l > 1){   $left = QuickSort($left);  }  $new_arr = $left;  $new_arr[] = $arr[0];  if($r > 1){   $right = QuickSort($right);  }  for($i=0;$i<$r;$i++){   $new_arr[] = $right[$i];  }  return $new_arr; }

使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對(duì)象可以是一個(gè)有序數(shù)組

//二分查找(數(shù)組里查找某個(gè)元素) 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; } //順序查找(數(shù)組里查找某個(gè)元素) function seq_sch($array, $n, $k){  $array[$n] = $k;  for($i=0; $i<$n; $i++){   if($array[$i]==$k){    break;   }  }  if ($i<$n){   return $i;  }else{   return -1;  } }

寫(xiě)一個(gè)二維數(shù)組排序算法函數(shù),能夠具有通用性,可以調(diào)用php內(nèi)置函數(shù)(array_multisort())

//二維數(shù)組排序, $arr是數(shù)據(jù),$keys是排序的健值,$order是排序規(guī)則,1是升序,0是降序 function array_sort($arr, $keys, $order=0) {  if (!is_array($arr)) {   return false;  }  $keysvalue = array();  foreach($arr as $key => $val) {   $keysvalue[$key] = $val[$keys];  }  if($order == 0){   asort($keysvalue);  }else {   arsort($keysvalue);  }  reset($keysvalue);  foreach($keysvalue as $key => $vals) {   $keysort[$key] = $key;  }  $new_array = array();  foreach($keysort as $key => $val) {   $new_array[$key] = $arr[$val];  }  return $new_array; }

請(qǐng)以空格作為間隔,拆分字符串’Apple Orange Banana Strawberry’,組成數(shù)組$fruit,

* 數(shù)組中所有元素都用小寫(xiě)字母,并按照字母先后次序排序

class sort {   private $str;   public function __construct($str) {    $this->str=strtolower($str);   }   private function explodes() {    if(empty($this->str)) return array();    $arr=explode(" ",$this->str);    return is_array($arr)?$arr:array($arr);   }   public function sort() {    $explode=$this->explodes();    sort($explode);    return $explode;   }  }  $str='Apple Orange Banana Strawberry';  $sortob=new sort($str);  var_dump($sortob->sort());

對(duì)于用戶(hù)輸入一串字符串$string,要求$string中只能包含大于0的數(shù)字和英文逗號(hào),請(qǐng)用正則 表達(dá)式驗(yàn)證,對(duì)于不符合要求的$string返回出錯(cuò)信息

class regx {   public static function check($str) {   if(preg_match("/^([1-9,])+$/",$str)) {    return true;   }   return false;   }  }  $str="12345,6";  if(regx::check($str)) {  echo "suc";  } else {  echo "fail";  }

請(qǐng)寫(xiě)一段程序,在服務(wù)器創(chuàng)建一個(gè)文件fruit.dat,將試題3中得到的數(shù)組寫(xiě)入到改文件中,然后寫(xiě)一段程序從文件中讀取并還原數(shù)組@author zhuwenqiong

class sort {   private $str;   public function __construct($str) {    $this->str=strtolower($str);   }   private function explodes(){    if(empty($this->str)) return array();    $arr=explode(" ",$this->str);    return is_array($arr)?$arr:array($arr);   }   public function sort() {    $explode=$this->explodes();    sort($explode);    return $explode;   }  }  class file {   private $sort=null;   private $filepath;   public function __construct($arrobj,$path) {    $this->sort=$arrobj;    $this->filepath=$path;   }   private function getresource($filename,$mode) {    return fopen($this->filepath.$filename,$mode);   }   private function closeresource($resource) {    fclose($resource);   }   public function savefile($filename) {    $arr=$this->sort->sort();    $fopen=$this->getresource($filename,"a+");    if(!$fopen){     echo "文件打開(kāi)失敗!";    exit;    }    var_dump($arr);    foreach($arr as $key=>$value) {     fwrite($fopen,$value."n");    }    $this->closeresource($fopen);   }   public function readfile($filename) {    $this->savefile($filename);    $fopen=$this->getresource($filename,"r");    if(!$fopen){     echo "文件打開(kāi)失敗!";exit;    }    $arr=array();    while(!feof($fopen)) {     $get=fgets($fopen);     if(!empty($get))      $arr[]=str_replace("n","",$get);    }    $this->closeresource($fopen);   return $arr;   }  }  $file=new file(new sort('Apple Orange Banana Strawberry'),"E:\");  $arr=$file->readfile("fruit.dat");  var_dump($arr);

單例模式,創(chuàng)建mysqli數(shù)據(jù)庫(kù)鏈接的單例對(duì)象

class Db {   private static $instance;   public $handle;   Private function __construct($host,$username,$password,$dbname) {    $this->handle=NULL;    $this->getcon($host,$username,$password,$dbname);   }   public static function getBb() {    self::$instance=new Db();    return self::$instance;   }   private function getcon($host,$username,$password,$dbname) {    if($this->handle!=NULL){     return true;    }    $this->handle=mysqli_connect($host,$username,$password,$dbname);   }  }

windows平臺(tái), Apache Http Server啟動(dòng)失敗, 排錯(cuò)思路是什么?

檢查apache使用的80端口是否被占用,如果被占用,先停止占用80端口的服務(wù),然后啟動(dòng)apache服務(wù)器

PHP session擴(kuò)展默認(rèn)將session數(shù)據(jù)儲(chǔ)存在哪里? D

A) SQLite Database B) MySQL Database C) Shared Memory D) File System E) Session Server

如果你想要自動(dòng)加載類(lèi),下面哪種函數(shù)聲明是正確的 C

A) function autoload($class_name) B) function __autoload($class_name, $file) C) function __autoload($class_name) D) function _autoload($class_name) E) function autoload($class_name, $file)

PHP程序使用utf-8編碼, 以下程序輸出結(jié)果是什么? B

<?php $str = ’hello你好世界’; echo strlen($str); ?>
A) 9 B) 13(gbk)  C) 18  D) 17(utf8)

你所知道的php數(shù)組相關(guān)的函數(shù)?

array()----創(chuàng)建數(shù)組 array_combine()----通過(guò)合并兩個(gè)數(shù)組來(lái)創(chuàng)建一個(gè)新數(shù)組 range()----創(chuàng)建并返回一個(gè)包含指定范圍的元素的數(shù)組 compact()----建立一個(gè)數(shù)組 array_chunk()----將一個(gè)數(shù)組分割成多個(gè) array_merge()----把兩個(gè)或多個(gè)數(shù)組合并成一個(gè)數(shù)組 array_slice()----在數(shù)組中根據(jù)條件取出一段值 array_diff()----返回兩個(gè)數(shù)組的差集數(shù)組 array_intersect()----計(jì)算數(shù)組的交集 array_search()----在數(shù)組中搜索給定的值 array_splice()----移除數(shù)組的一部分且替代它 array_key_exists()----判斷某個(gè)數(shù)組中是否存在指定的key shuffle()----把數(shù)組中的元素按隨機(jī)順序重新排列 array_flip()----交換數(shù)組中的鍵和值 array_reverse()----將原數(shù)組中的元素順序翻轉(zhuǎn),創(chuàng)建新的數(shù)組并返回 array_unique()----移除數(shù)組中重復(fù)的值

php讀取文件內(nèi)容的幾種方法和函數(shù)?

打開(kāi)文件,然后讀取。Fopen() fread()

打開(kāi)讀取一次完成 file_get_contents()

以下程序,變量str什么值的情況下輸入111?

if( ! $str ) { echo 111; }

在$str值為:0,’0′,false,null,”"

你所知道的PHP的一些技術(shù)(smarty等)?

Smarty,jquery,ajax,memcache,div+css,js,mysqli,pdo,svn,thinkphp,brophp,yii

你所熟悉的PHP論壇系統(tǒng) 有哪些?

Discuz

你所熟悉的PHP商城系統(tǒng) 有哪些?

Ecshop

你所熟悉的PHP開(kāi)發(fā)框架 有哪些?

Brophp,thinkphp

說(shuō)說(shuō)你對(duì)緩存技術(shù)的了解?

1、緩存技術(shù)是將動(dòng)態(tài)內(nèi)容緩存到文件中,在一定時(shí)間內(nèi)訪問(wèn)動(dòng)態(tài)頁(yè)面直接調(diào)用緩存文件,而不必重新訪問(wèn)數(shù)據(jù)庫(kù)。

2、使用memcache可以做緩存。

你所知道的設(shè)計(jì)模式有哪些?

工廠模式、策略模式、單元素模式、觀察者模式、命令鏈模式

說(shuō)說(shuō)你對(duì)代碼管理的了解? 常使用那些代碼版本控制軟件?

通常一個(gè)項(xiàng)目是由一個(gè)團(tuán)隊(duì)去開(kāi)發(fā),每個(gè)人將自己寫(xiě)好的代碼提交到版本服務(wù)器,由項(xiàng)目負(fù)責(zé)人按照版本進(jìn)行管理,方便版本的控制,提高開(kāi)發(fā)效率,保證需要時(shí)可以回到舊版本。

常用的版本控制器:SVN

說(shuō)說(shuō)你對(duì)SVN的了解??jī)?yōu)缺點(diǎn)?

SVN是一種版本控制器,程序員開(kāi)發(fā)的代碼遞交到版本服務(wù)器進(jìn)行集中管理。

SVN的優(yōu)點(diǎn):代碼進(jìn)行集中管理,版本控制容易,操作比較簡(jiǎn)單,權(quán)限控制方便。

缺點(diǎn):不能隨意修改服務(wù)器項(xiàng)目文件夾。

怎么找到PHP.ini的路徑?

一般都在php的安裝目錄下,或者window系統(tǒng)的windows目錄下。

PHP加速模式/擴(kuò)展? PHP調(diào)試模式/工具?

Zend Optimizer加速擴(kuò)展

調(diào)試工具:xdebug

你常用到的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 ...

進(jìn)入mysql管理命令行的命令?

Mysql -uroot -p 回車(chē) 密碼

show databases; 這個(gè)命令的作用?

顯示當(dāng)前mysql服務(wù)器中有哪些數(shù)據(jù)庫(kù)

show create database mysql; 這個(gè)命令的作用?

顯示創(chuàng)建數(shù)據(jù)庫(kù)的sql語(yǔ)句

show create table user; 這個(gè)命令的作用?

顯示創(chuàng)建表的sql語(yǔ)句

desc user; 這個(gè)命令的作用?

查詢(xún)user表的結(jié)構(gòu)

explain select * from user; 這個(gè)命令的作用?

獲取select相關(guān)信息

show processlist; 這個(gè)命令的作用?

顯示哪些線程正在運(yùn)行

SHOW VARIABLES; 這個(gè)命令的作用?

顯示系統(tǒng)變量和值

SHOW VARIABLES like ’%conn%’; 這個(gè)命令的作用?

顯示系統(tǒng)變量名包含conn的值

LEFT JOIN 寫(xiě)一個(gè)SQL語(yǔ)句?

SELECT A.id,A.class FROM A LEFT JOIN B ON A.cid=B.id

in, not ni, exist, not exist的作用和區(qū)別?

in在什么中 Not in 不在什么中 Exists 存在 Not exists 不存在

怎么找到數(shù)據(jù)庫(kù)的配置文件路徑?

在數(shù)據(jù)庫(kù)安裝目錄下,my.ini

簡(jiǎn)述Linux下安裝PHP的過(guò)程?

安裝軟件之前先安裝編譯工具gcc、gcc-c++

拷貝源碼包,解包解壓縮

Cd /lamp/php進(jìn)入php目錄

./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc指定安裝目錄和配置文件目錄

Make 編譯

Make install安裝

簡(jiǎn)述Linux下安裝Mysql的過(guò)程?

Groupadd mysql 添加一個(gè)用戶(hù)組mysql

Useradd -g mysql mysql 添加一個(gè)mysql用戶(hù)指定分組為mysql

Cd /lamp/mysql 進(jìn)入mysql目錄

./configure –prefix=/usr/local/mysql/ –with-extra-charsets=all

Make

Make all

簡(jiǎn)述Linux下安裝apache的過(guò)程?

Cd /lamp/httpd 進(jìn)去apache軟件目錄

./configure –prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-apr

Make

Make all

HTML/CSS/DIV/Javascritp:

1. 設(shè)計(jì)一個(gè)頁(yè)面(4個(gè) div 第一個(gè)div 寬960px 居中;第2-4個(gè)div 3等分960px;)

<style> Body{ Text-align:center; Margin:0; Padding:0; } #box{ Width:960px; Margin:0 auto; } .small{ Width:320px; Float:left; } </style> <div id=’box’> <div class=’small’></div> <div class=’small’></div> <div class=’small’></div> </div>

用javascript取得一個(gè)input的值?取得一個(gè)input的屬性?

document.getElementById(‘name’).value; document.getElementById(‘name’).type;

用Jquery取得一個(gè)input的值?取得一個(gè)input的屬性?

$(“input[name='aa']“).val(); $(“input[name='aa']“).attr(‘type’);

請(qǐng)您寫(xiě)一段ajax提交的js代碼,或者寫(xiě)出ajax提交的過(guò)程邏輯。

var xmlhttp; if(window.XMLHttpRquest){ xmlhttp=new XMLHttpRequest(); }else if(window.ActiveXObject){ xmlhttp=new ActiveXObject(‘Microsoft.XMLHTTP’); } xmlhttp.open(‘GET’,’1.php?aa=name’,true); xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4){ if(xmlhttp.status==200){ var text=xmlhttp.responseText; } } } xmlhttp.send(null);

簡(jiǎn)述Cookie的設(shè)置及獲取過(guò)程

設(shè)置COOKIE的值:

Setcookie(名稱(chēng),值,保存時(shí)間,有效域);

獲取值:$_COOKIE['名稱(chēng)'];

面向?qū)ο笾薪涌诤统橄箢?lèi)的區(qū)別及應(yīng)用場(chǎng)景?

1、有抽象方法的類(lèi)叫做抽象類(lèi),抽象類(lèi)中不一定只有抽象方法,抽象方法必須使用abstract關(guān)鍵字定義。

2、接口中全部是抽象方法,方法不用使用abstract定義。

3、當(dāng)多個(gè)同類(lèi)的類(lèi)要設(shè)計(jì)一個(gè)上層,通常設(shè)計(jì)為抽象類(lèi),當(dāng)多個(gè)異構(gòu)的類(lèi)要設(shè)計(jì)一個(gè)上層,通常設(shè)計(jì)為接口。

用面向?qū)ο髞?lái)實(shí)現(xiàn)A對(duì)象繼承B和C對(duì)象

Interface B{ ... } Interface C{ ... } Class A implements B,C{ ... }

寫(xiě)出Smarty模板引擎中你最常用的關(guān)鍵詞

Assign Display Foreach Section Loop Item $smarty Now Const get

l 增加一個(gè)字段性別sex,寫(xiě)出修改語(yǔ)句

Alert table user add sex enum(’0′,’1′);

查詢(xún)出年齡介于20歲到30歲之間的用戶(hù)

Select * from user where age>20 and age<30

如果是一個(gè)Web頻繁訪問(wèn)的查詢(xún),上題的查詢(xún)?nèi)绾蝺?yōu)化?

可對(duì)where后面的字段 age 建立索引,也可對(duì)語(yǔ)句建立存儲(chǔ)過(guò)程。

echo(),print(),print_r()的區(qū)別?

Echo,print是PHP語(yǔ)句, print_r是函數(shù),

Print()只能打印出簡(jiǎn)單類(lèi)型變量的值(如int,string),有返回值。

print_r()可以打印出復(fù)雜類(lèi)型變量的值(如數(shù)組,對(duì)象)

echo 輸出一個(gè)或者多個(gè)字符串,無(wú)返回值

什么是模板技術(shù)、能夠使HTML和PHP分離開(kāi)使用的模板?

模板技術(shù)就是使程序的邏輯代碼和界面分開(kāi)的技術(shù)。

能夠使HTML和PHP分開(kāi)的模板有:Smarty、Template、PHPlib Template、FastTemplate

對(duì)于大流量的網(wǎng)站,您采用什么樣的方法來(lái)解決訪問(wèn)量問(wèn)題?

優(yōu)化程序,優(yōu)化數(shù)據(jù)庫(kù),如果程序和數(shù)據(jù)庫(kù)已經(jīng)最優(yōu)化,使用以下解決方法:

1、確定當(dāng)前服務(wù)器設(shè)備是否滿足流量需求。

2、使用Memcache緩存技術(shù),把動(dòng)態(tài)內(nèi)容緩存到文件中,動(dòng)態(tài)網(wǎng)頁(yè)直接調(diào)用這些文件,而不必再訪問(wèn)數(shù)據(jù)庫(kù)。

3、禁止外部盜鏈,圖片和文件外部盜鏈會(huì)給服務(wù)器帶來(lái)大量的負(fù)載壓力,可以通過(guò)refer來(lái)禁止外部盜鏈,或者使用apache來(lái)配置禁止盜鏈。

4、控制大文件的下載,大文件的下載對(duì)于非SCSI硬盤(pán)來(lái)說(shuō)會(huì)占用大量的資源,導(dǎo)致服務(wù)器的響應(yīng)能力下降。

5、使用不同的主機(jī)分流主要流量,使服務(wù)器均衡負(fù)載。

6、使用流量統(tǒng)計(jì)軟件統(tǒng)計(jì)分析網(wǎng)站流量,可以知道哪些地方耗費(fèi)了大量的流量,哪些頁(yè)面需要再進(jìn)行優(yōu)化。

mysql_fetch_row() 和mysql_fetch_array之間有什么區(qū)別?

Mysql_fetch_row()是從結(jié)果集中取出一行作為枚舉數(shù)組,mysql_fetch_array()是從結(jié)果集中取出一行作為索引數(shù)組或關(guān)聯(lián)數(shù)組或兩種方式都有。

實(shí)現(xiàn)中文字串截取無(wú)亂碼的方法

Mb_substr();

用PHP寫(xiě)出顯示客戶(hù)端IP與服務(wù)器IP的代碼

獲取客戶(hù)端IP:$_SERVER(“REMOTE_ADDR”);

獲取服務(wù)器端IP:$_SERVER["SERVER_ADDR"];

有一個(gè)網(wǎng)頁(yè)地址, 比如PHP開(kāi)發(fā)資源網(wǎng)主頁(yè): http://www.phpres.com/index.html,如何得到它的內(nèi)容?

獲取網(wǎng)頁(yè)內(nèi)容:

$url=”http://www.phpres.com/index.html“; $str=file_get_contents($url); 或 $ch=curl_init();  curl_setopt($ch,CURLOPT_URL,’’);  curl_setopt($ch,CURLOPT_HEADER,0);  curl_exec($ch);  curl_close($ch);

請(qǐng)寫(xiě)一個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確

function checkemail($email){ echo preg_match(‘/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+.[0-9a-zA-Z]+$/’,$email)?’email格式正確‘:’email格式不正確‘; }

簡(jiǎn)述如何得到當(dāng)前執(zhí)行腳本路徑,包括所得到參數(shù)

用$_SERVER['SCRIPT_FILENAME'].$_SERVER['REQUEST_URI'];取得當(dāng)前頁(yè)面的完整路徑和參數(shù)。

取得參數(shù):$_SERVER['QUERY_STRING'];

JS表單彈出對(duì)話框函數(shù)是?獲得輸入焦點(diǎn)函數(shù)是?

Alert(); focus();

寫(xiě)一個(gè)函數(shù),算出兩個(gè)文件的相對(duì)路徑

如 $a = ’/a/b/c/d/e.php’;

$b = ’/a/b/12/34/c.php’;

計(jì)算出 $b 相對(duì)于 $a 的相對(duì)路徑應(yīng)該是 http://www.cnblogs.com/c/d將()添上

$a=”http://www.cnblogs.com/a/b/c/d/e.php”; $b=”http://www.cnblogs.com/a/b/12/34/c.php”; $ainfo=parse_url($a); $binfo=parse_url($b);   $apath=ltrim($ainfo['path'],'/'); $bpath=ltrim($binfo['path'],'/');   $arr=explode('/',$apath); $brr=explode('/',$bpath); $flag=false; for($i=0;$i<count($arr);$i++){  if($arr[$i]!==$brr[$i]){   $ab[$i]='..';   if(!$flag){    for($j=$i;$j<count($brr);$j++){     $bb[]=$brr[$j];    }    $flag=true;   }  } } $cha=array_merge($ab,$bb); $cha=implode('/',$cha); print_r($cha);

寫(xiě)一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的所有文件和子文件夾。

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ù)據(jù)庫(kù)索引有幾類(lèi),分別是什么?什么時(shí)候該用索引?

普通索引、主鍵索引、唯一索引

并非所有的數(shù)據(jù)庫(kù)都以相同的方式使用索引,作為通用規(guī)則,只有當(dāng)經(jīng)常查詢(xún)列中的數(shù)據(jù)時(shí)才需要在表上創(chuàng)建索引。

寫(xiě)幾個(gè)魔術(shù)方法并說(shuō)明作用?

__call()當(dāng)調(diào)用不存在的方法時(shí)會(huì)自動(dòng)調(diào)用的方法 __autoload()在實(shí)例化一個(gè)尚未被定義的類(lèi)是會(huì)自動(dòng)調(diào)用次方法來(lái)加載類(lèi)文件 __set()當(dāng)給未定義的變量賦值時(shí)會(huì)自動(dòng)調(diào)用的方法 __get()當(dāng)獲取未定義變量的值時(shí)會(huì)自動(dòng)調(diào)用的方法 __construct()構(gòu)造方法,實(shí)例化類(lèi)時(shí)自動(dòng)調(diào)用的方法 __destroy()銷(xiāo)毀對(duì)象時(shí)自動(dòng)調(diào)用的方法 __unset()當(dāng)對(duì)一個(gè)未定義變量調(diào)用unset()時(shí)自動(dòng)調(diào)用的方法 __isset()當(dāng)對(duì)一個(gè)未定義變量調(diào)用isset()方法時(shí)自動(dòng)調(diào)用的方法 __clone()克隆一個(gè)對(duì)象 __tostring()當(dāng)輸出一個(gè)對(duì)象時(shí)自動(dòng)調(diào)用的方法

$_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILES的意思是什么?

它們都是PHP預(yù)定義變量 $_REQUEST用來(lái)獲取post或get方式提交的值 $_POST用來(lái)獲取post方式提交的值 $_GET用來(lái)獲取get方式提交的值 $_COOKIE用來(lái)獲取cookie存儲(chǔ)的值 $_SESSION用來(lái)獲取session存儲(chǔ)的值 $_FILES用來(lái)獲取上傳文件表單的值

數(shù)組中下標(biāo)最好是什么類(lèi)型的,為什么?

數(shù)組的下標(biāo)最好是數(shù)字類(lèi)型的,數(shù)字類(lèi)型的處理速度快。

++i和i++哪一個(gè)效率高,為什么?

++i效率比i++的效率更高,因?yàn)?+i少了一個(gè)返回i的過(guò)程。

magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?

Magic_quotes_gpc()是php配置文件中的,如果設(shè)置為on則會(huì)自動(dòng)POST,GET,COOKIE中的字符串進(jìn)行轉(zhuǎn)義,在‘之前加

Magic_quotes_runtime()是php中的函數(shù),如果參數(shù)為true則會(huì)數(shù)據(jù)庫(kù)中取出來(lái)的單引號(hào)、雙引號(hào)、反斜線自動(dòng)加上反斜杠進(jìn)行轉(zhuǎn)義。

框架中什么是單一入口和多入口,單一入口的優(yōu)缺點(diǎn)?

1、多入口就是通過(guò)訪問(wèn)不同的文件來(lái)完成用戶(hù)請(qǐng)求。

單一入口指web程序所有的請(qǐng)求都指向一個(gè)腳本文件的。

2、單一入口更容易控制權(quán)限,方便對(duì)http請(qǐng)求可以進(jìn)行安全性檢查。

缺點(diǎn):URL看起來(lái)不那么美觀,特別是對(duì)搜索引擎來(lái)說(shuō)不友好。

你對(duì)Memcach的理解,優(yōu)點(diǎn)有哪些?

Memcache是一種緩存技術(shù),在一定的時(shí)間內(nèi)將動(dòng)態(tài)網(wǎng)頁(yè)經(jīng)過(guò)解析之后保存到文件,下次訪問(wèn)時(shí)動(dòng)態(tài)網(wǎng)頁(yè)就直接調(diào)用這個(gè)文件,而不必在重新訪問(wèn)數(shù)據(jù)庫(kù)。使用memcache做緩存的好處是:提高網(wǎng)站的訪問(wèn)速度,減輕高并發(fā)時(shí)服務(wù)器的壓力。

Memcache的優(yōu)點(diǎn):穩(wěn)定、配置簡(jiǎn)單、多機(jī)分布式存儲(chǔ)、速度快。

對(duì)關(guān)系型數(shù)據(jù)庫(kù)而言,索引是相當(dāng)重要的概念,請(qǐng)回答有關(guān)索引幾個(gè)問(wèn)題:

a) 索引的目的是什么?

1、快速訪問(wèn)數(shù)據(jù)表中的特定信息,提高檢索速度

2、創(chuàng)建唯一性索引,保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性

3、加速表和表之間的連接

4、使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),可以顯著減少查詢(xún)中分組和排序的時(shí)間

b) 索引對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的負(fù)面影響是什么?

負(fù)面影響:創(chuàng)建索引和維護(hù)索引需要耗費(fèi)時(shí)間,這個(gè)時(shí)間隨著數(shù)據(jù)量的增加而增加;索引需要占用物理空間,不光是表需要占用數(shù)據(jù)空間,每個(gè)索引也需要占用物理空間;當(dāng)對(duì)表進(jìn)行增、刪、改的時(shí)候索引也要?jiǎng)討B(tài)維護(hù),這樣就降低了數(shù)據(jù)的維護(hù)速度。

c) 為數(shù)據(jù)表建立索引的原則有哪些?

1、在最頻繁使用的、用以縮小查詢(xún)范圍的字段上建立索引

2、在平頻繁使用的、需要排序的字段上建立索引

d) 什么情況下不宜建立索引?

1、對(duì)于查詢(xún)中很少涉及的列或者重復(fù)值比較多的列,不宜建立索引

2、對(duì)于一些特殊的數(shù)據(jù)類(lèi)型,不宜建立索引,比如文本字段(text),值范圍較少的知道等。

web應(yīng)用中,數(shù)據(jù)庫(kù)的讀取頻率遠(yuǎn)高于寫(xiě)入頻率, 如何優(yōu)化MySQL而應(yīng)對(duì)此種情景?

使用memcache緩存技術(shù),將動(dòng)態(tài)數(shù)據(jù)緩存到文件,訪問(wèn)動(dòng)態(tài)頁(yè)面時(shí)直接調(diào)用緩存文件,而不必重新訪問(wèn)數(shù)據(jù)庫(kù),這樣就減少了查詢(xún)數(shù)據(jù)庫(kù)的次數(shù)。

如果網(wǎng)站的訪問(wèn)量很大,可以把數(shù)據(jù)庫(kù)讀寫(xiě)服務(wù)器分開(kāi),使用多臺(tái)服務(wù)器去處理數(shù)據(jù)庫(kù)查詢(xún),使用較少的服務(wù)器去處理數(shù)據(jù)庫(kù)的寫(xiě)入和修改。

include與require的區(qū)別?

1.include()在執(zhí)行文件時(shí)每次都要進(jìn)行讀取和評(píng)估

require()文件只處理一次(實(shí)際上文件內(nèi)容替換了require()語(yǔ)句)

2.require()通常放在PHP腳本程序的最前面

include()的使用和require()一樣,一般放在流程控制的處理區(qū)段中,PHP腳本文件讀到include()語(yǔ)句時(shí),才將它包含的文件讀進(jìn)來(lái),這種方式,可以把程序執(zhí)行時(shí)的流程簡(jiǎn)單化

3,require()和include()語(yǔ)句是語(yǔ)言結(jié)構(gòu),不是真正的函數(shù),可以像PHP的其他語(yǔ)言結(jié)構(gòu)一樣

4,include_once()和require_once()語(yǔ)句也是在腳本執(zhí)行期間包括并運(yùn)行指定文件,與include()require()唯一的區(qū)別是如果文件中的代碼已經(jīng)被包括了,則不會(huì)再次包括.

5,require()包含文件失敗,停止執(zhí)行,給出錯(cuò)誤(致命的)

include()常用于動(dòng)態(tài)包含.

通常是自動(dòng)加載的文件,即使加載出錯(cuò),整個(gè)程序還是繼續(xù)執(zhí)行

一個(gè)頁(yè)面聲明,另一個(gè)頁(yè)面調(diào)用

包函文件失敗,繼續(xù)向下執(zhí)行,返回一條警告

PHP字符串中單引號(hào)與雙引號(hào)的區(qū)別?

單引號(hào)不能解釋變量,而雙引號(hào)可以解釋變量。

單引號(hào)不能轉(zhuǎn)義字符,在雙引號(hào)中可以轉(zhuǎn)義字符。

php中,模板引擎的目的是什么? 你用過(guò)哪些模板引擎?

使用模板引擎的目的是使程序的邏輯代碼和html界面代碼分離開(kāi),是程序的結(jié)構(gòu)更清晰。

使用過(guò)的模板引擎:Smarty、ThinkPHP的ThinkTemplate

指出以下代碼片段中的SQL注入漏洞以及解決方法(magic_quotes_gpc = off)

mysql_query(“select id,title from content where catid=’{$_GET[catid]}’ and title like ’%$_GET[keywords]%’”, $link);

注入漏洞主要存在用戶(hù)提交的數(shù)據(jù)上,這里的注入漏洞主要是$_GET[catid]和$_GET[keyword]

解決注入漏洞:

$_GET[catid]=intval($_GET[catid]); $sql=”select id,title from content where catid=’{$_GET[catid]}’ and title like ’%$_GET[keywords]%”; $sql=addslashes($sql); Mysql_query($sql);

分別指出php.ini中 magic_quotes_gpc, magic_quotes_runtime兩項(xiàng)參數(shù)的作用.

Magic_quotes_gpc的作用是在POST、GET、COOKIE數(shù)據(jù)上使用addslashes()自動(dòng)轉(zhuǎn)義。

Magic_quotes_runtime參數(shù)的作用是設(shè)置狀態(tài),當(dāng)狀態(tài)為0時(shí)則關(guān)閉自動(dòng)轉(zhuǎn)義,設(shè)置為1則自動(dòng)轉(zhuǎn)義,將數(shù)據(jù)庫(kù)中取出來(lái)的單引號(hào)、雙引號(hào)、反斜線這些字符加上反斜杠轉(zhuǎn)義。

寫(xiě)出以下php代碼的運(yùn)行結(jié)果:

<?php function foo($i) { $i++; echo $i ; } function bar(&$i) { } $i = 10 ; echo $i++ , ++$i; 輸出:10,12 foo($i); 輸出:13 bar($i); 輸出:無(wú)輸出

如何快速下載一個(gè)遠(yuǎn)程http服務(wù)器上的圖片文件到本地?

$file=”"; $fp=fopen($file,’rb’); $img=fread($fp,10000); $dir=”./”; $local=fopen($dir.’/’.basename($file),’w'); Fwrite($local,$img);

什么是時(shí)間戳? 如何取得當(dāng)前時(shí)間戳?

時(shí)間戳是從1970年1月1日 00:00:00到指定日期的秒數(shù)。

獲取當(dāng)前時(shí)間戳:time()

了解XSS攻擊嗎? 如何防止 ?

XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個(gè)特權(quán)模式去執(zhí)行攻擊者構(gòu)造的腳本,然后利用不安全的Activex控件執(zhí)行惡意的行為。

使用htmlspecialchars()函數(shù)對(duì)提交的內(nèi)容進(jìn)行過(guò)濾,使字符串里面的特殊符號(hào)實(shí)體化。

SQL注入漏洞產(chǎn)生的原因 ? 如何防止?

SQL注入產(chǎn)生的原因:程序開(kāi)發(fā)過(guò)程中不注意規(guī)范書(shū)寫(xiě)sql語(yǔ)句和對(duì)特殊字符進(jìn)行過(guò)濾,導(dǎo)致客戶(hù)端可以通過(guò)全局變量POST和GET提交一些sql語(yǔ)句正常執(zhí)行。

防止SQL注入:

1、開(kāi)啟配置文件中的magic_quotes_gpc和magic_quotes_runtime設(shè)置

2、執(zhí)行sql語(yǔ)句時(shí)使用addslashes進(jìn)行sql語(yǔ)句轉(zhuǎn)換

3、Sql語(yǔ)句書(shū)寫(xiě)盡量不要省略小引號(hào)和單引號(hào)

4、過(guò)濾掉sql語(yǔ)句中的一些關(guān)鍵字:update、insert、delete、select、*

5、提高數(shù)據(jù)庫(kù)表和字段的命名技巧,對(duì)一些重要的字段根據(jù)程序的特點(diǎn)命名,取不易被猜到的。

6、Php配置文件中設(shè)置register_globals為off,關(guān)閉全局變量注冊(cè)

7、控制錯(cuò)誤信息,不要再瀏覽器上輸出錯(cuò)誤信息,將錯(cuò)誤信息寫(xiě)到日志文件中。

一個(gè)字節(jié)占多少bit ? 一個(gè)IPv4地址占幾個(gè)字節(jié)? 一個(gè)IPv6地址呢?

一個(gè)字節(jié)占8bit,一個(gè)IPV4占用4字節(jié),一個(gè)IPV6占用16字節(jié)。

142.M ADSL寬帶連接, 理想情況下, 最大下載速度是多少KB/s ?

256KB/s

143.請(qǐng)寫(xiě)出一個(gè)正則表達(dá)式,用于匹配一個(gè)HTML文件中<img />標(biāo)記中的圖片地址

$url=”<img src=’11.jpg’/>”; /<img[s]*src=['|"](.*)['|"][s]*/>/

145.Fatal error: Call to undefined method ge_user() in /website/index.php on line 39

調(diào)用了未定義的方法ge_user(),檢查程序中有沒(méi)有定義此方法

146.Fatal error: Class ’client’ not found in /website/index.php on line 173

類(lèi)client沒(méi)有找到,檢查文件中有沒(méi)有client類(lèi),或者有沒(méi)有包含client類(lèi)文件

Warning: Cannot modify header information - headers already sent by (output started at /website/index.php:1) in /website/index.php on line 3

提示文件前面有輸出,檢查是否有輸出,或者編碼

148.Warning:session_start(): open(/website/tmp/sess_47e067121facf033785f9a1cb16d243b, O_RDWR) failed: No such file or directory (2) in /website/index.php on line 10

沒(méi)有找到文件或目錄,檢查文件是否存在

149.Parse error: syntax error, unexpected T_STRING in /website/index.php on line 18

18行語(yǔ)法錯(cuò)誤,檢查語(yǔ)法

150.Warning:fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in /website/index.php on line 2

沒(méi)有找到welcome.txt文件,檢查文件是否存在

1、抓取遠(yuǎn)程圖片到本地,你會(huì)用什么函數(shù)?

fsockopen, A

3、用PHP打印出前一天的時(shí)間,打印格式是2007年5月10日22:21:21

Echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’));

4、javascript能否定義二維數(shù)組,如果不能你如何解決?

javascript不支持二維數(shù)組定義,可以用arr[0] = new array()來(lái)解決

5、假設(shè)a.html和b.html在同一個(gè)文件夾下面,用javascript實(shí)現(xiàn)當(dāng)打開(kāi)a.html五秒鐘后,自動(dòng)跳轉(zhuǎn)到b.html。

<script> function go2b(){  window.location = “b.html”;  window.close(); } setTimeout( “go2b()”,5000 ); //5秒鐘后自動(dòng)執(zhí)行g(shù)o2b() </script>   //正在瀏覽當(dāng)前頁(yè)面用戶(hù)的 IP 地址:127.0.0.1 echo $_SERVER["REMOTE_ADDR"].”<br />”; //查詢(xún)(query)的字符串(URL 中第一個(gè)問(wèn)號(hào) ? 之后的內(nèi)容):id=1&bi=2 echo $_SERVER["QUERY_STRING"].”<br />”; //當(dāng)前運(yùn)行腳本所在的文檔根目錄:d:inetpubwwwroot echo $_SERVER["DOCUMENT_ROOT"].”<br />”;

7、在HTTP 1.0中,狀態(tài)碼 401 的含義是未授權(quán)____;如果返回“找不到文件”的提示,則可用 header 函數(shù),其語(yǔ)句為header(“HTTP/1.0 404 Not Found”);

401表示未授權(quán);header(“HTTP/1.0 404 Not Found”);

9、把 John 新增到 users 陣列?

$users[] = ‘john’; array_push($users,‘john’);

在PHP中error_reporting這個(gè)函數(shù)有什么作用?

error_reporting() 設(shè)置 PHP 的報(bào)錯(cuò)級(jí)別并返回當(dāng)前級(jí)別。

13、如何修改SESSION的生存時(shí)間(1分).

方法1:將php.ini中的session.gc_maxlifetime設(shè)置為9999重啟apache

方法2:$savePath = “./session_save_dir/”;

$lifeTime = 小時(shí) * 秒;

session_save_path($savePath); session_set_cookie_params($lifeTime); session_start();

方法3:

setcookie() and session_set_cookie_params($lifeTime);

14、有一個(gè)網(wǎng)頁(yè)地址, 比如PHP開(kāi)發(fā)資源網(wǎng)主頁(yè): http://www.phpres.com/index.html,如何得到它的內(nèi)容?($1分)

方法1(對(duì)于PHP5及更高版本):

$readcontents = fopen(“http://www.phpres.com/index.html”, “rb”); $contents = stream_get_contents($readcontents); fclose($readcontents); echo $contents;

方法2:

echo file_get_contents(“http://www.phpres.com/index.html”);

16、寫(xiě)一個(gè)函數(shù),盡可能高效的,從一個(gè)標(biāo)準(zhǔn) url 里取出文件的擴(kuò)展名

例如: 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); } }

使用五種以上方式獲取一個(gè)文件的擴(kuò)展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,

必須使用PHP自帶的處理函數(shù)進(jìn)行處理,方法不能明顯重復(fù),可以封裝成函數(shù) get_ext1($file_name), get_ext2($file_name)

function get_ext1($file_name){ return strrchr($file_name, ‘.’); } function get_ext2($file_name){ return substr($file_name,strrpos($file_name, ‘.’)); } function get_ext3($file_name){ return array_pop(explode(‘.’, $file_name)); } function get_ext4($file_name){ $p = pathinfo($file_name); return $p['extension']; } function get_ext5($file_name){ return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’))); } 18、<?php $str1 = null; $str2 = false; echo $str1==$str2 ? ‘相等’ : ‘不相等’; $str3 = ”; $str4 = 0; echo $str3==$str4 ? ‘相等’ : ‘不相等’; $str5 = 0; $str6 = ’0′; echo $str5===$str6 ? ‘相等’ : ‘不相等’; ?>

相等 相等 不相等

MySQL數(shù)據(jù)庫(kù)中的字段類(lèi)型varchar和char的主要區(qū)別是什么?那種字段的查找效率要高,為什么?

Varchar是變長(zhǎng),節(jié)省存儲(chǔ)空間,char是固定長(zhǎng)度。查找效率要varchar型快,因?yàn)関archar是非定長(zhǎng),必須先查找長(zhǎng)度,然后進(jìn)行數(shù)據(jù)的提取,比char定長(zhǎng)類(lèi)型多了一個(gè)步驟,所以效率低一些

請(qǐng)使用JavaScript寫(xiě)出三種產(chǎn)生一個(gè)Image 標(biāo)簽的方法(提示:從方法、對(duì)象、HTML角度考慮)

(1)var img = new Image(); (2)var img = document.createElement(“image”) (3)img.innerHTML = “<img src=”xxx.jpg” />”

請(qǐng)描述出兩點(diǎn)以上XHTML和HTML最顯著的區(qū)別

(1)XHTML必須強(qiáng)制指定文檔類(lèi)型DocType,HTML不需要

(2)XHTML所有標(biāo)簽必須閉合,HTML比較隨意

寫(xiě)出三種以上MySQL數(shù)據(jù)庫(kù)存儲(chǔ)引擎的名稱(chēng)(提示:不區(qū)分大小寫(xiě))

MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十幾個(gè)引擎

求兩個(gè)日期的差數(shù),例如2007-2-5 ~ 2007-3-6 的日期差數(shù)

方法一:

<?php class Dtime{  function get_days($date1, $date2){   $time1 = strtotime($date1);   $time2 = strtotime($date2);   return ($time2-$time1)/86400;  } } $Dtime = new Dtime; echo $Dtime->get_days(’2007-2-5′, ’2007-3-6′); ?>

方法二:

<?php $temp = explode(‘-’, ’2007-2-5′); $time1 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]); $temp = explode(‘-’, ’2007-3-6′); $time2 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]); echo ($time2-$time1)/86400;

方法三:echo abs(strtotime(“2007-2-1″)-strtotime(“2007-3-1″))/60/60/24 計(jì)算時(shí)間差

請(qǐng)寫(xiě)一個(gè)函數(shù),實(shí)現(xiàn)以下功能:

字符串“open_door” 轉(zhuǎn)換成 “OpenDoor”、”make_by_id” 轉(zhuǎn)換成 ”MakeById”。

方法:

function str_explode($str){ $str_arr=explode(“_”,$str);$str_implode=implode(” “,$str_arr); $str_implode=implode (“”,explode(” “,ucwords($str_implode))); return $str_implode; } $strexplode=str_explode(“make_by_id”);print_r($strexplode);

方法二:

$str=”make_by_id!”; $expStr=explode(“_”,$str); for($i=0;$i<count($expStr);$i++){ echo ucwords($expStr[$i]); }

方法三:echo str_replace(‘ ‘,”,ucwords(str_replace(‘_’,’ ‘,’open_door’)));

一個(gè)表中的Id有多個(gè)記錄,把所有這個(gè)id的記錄查出來(lái),并顯示共有多少條記錄數(shù),用SQL語(yǔ)句及視圖、存儲(chǔ)過(guò)程分別實(shí)現(xiàn)。

DELIMITER // create procedure proc_countNum(in columnId int,out rowsNo int) begin select count(*) into rowsNo from member where member_id=columnId; end call proc_countNum(1,@no); select @no;

方法:視圖:

create view v_countNum as select member_id,count(*) as countNum from member group by member_id select countNum from v_countNum where member_id=1

js中網(wǎng)頁(yè)前進(jìn)和后退的代碼

前進(jìn): history.forward();=history.go(1);

后退: history.back();=history.go(-1);

echo count(“abc”); 輸出什么?

答案:1

count — 計(jì)算數(shù)組中的單元數(shù)目或?qū)ο笾械膶傩詡€(gè)數(shù)

int count ( mixed$var [, int $mode ] ), 如果 var 不是數(shù)組類(lèi)型或者實(shí)現(xiàn)了 Countable 接口的對(duì)象,將返回1,有一個(gè)例外,如果 var 是 NULL 則結(jié)果是 0。

對(duì)于對(duì)象,如果安裝了 SPL,可以通過(guò)實(shí)現(xiàn) Countable 接口來(lái)調(diào)用 count()。該接口只有一個(gè)方法 count(),此方法返回 count() 函數(shù)的返回值。

有一個(gè)一維數(shù)組,里面存儲(chǔ)整形數(shù)據(jù),請(qǐng)寫(xiě)一個(gè)函數(shù),將他們按從大到小的順序排列。要求執(zhí)行效率高。并說(shuō)明如何改善執(zhí)行效率。(該函數(shù)必須自己實(shí)現(xiàn),不能使用php函數(shù))

<?php function BubbleSort(&$arr){  $cnt=count($arr);  $flag=1;  for($i=0;$i<$cnt;$i++){  if($flag==0){   return;  }  $flag=0;  for($j=0;$j<$cnt-$i-1;$j++){   if($arr[$j]>$arr[$j+1]){    $tmp=$arr[$j];    $arr[$j]=$arr[$j+1];    $arr[$j+1]=$tmp;    $flag=1;   }  }  } } $test=array(1,3,6,8,2,7); BubbleSort($test); var_dump($test);

30、請(qǐng)舉例說(shuō)明在你的開(kāi)發(fā)過(guò)程中用什么方法來(lái)加快頁(yè)面的加載速度

要用到服務(wù)器資源時(shí)才打開(kāi),及時(shí)關(guān)閉服務(wù)器資源,數(shù)據(jù)庫(kù)添加索引,頁(yè)面可生成靜態(tài),圖片等大文件單獨(dú)服務(wù)器。使用代碼優(yōu)化工具。

31、.以下的代碼會(huì)產(chǎn)生什么?為什么?

$num =10; function multiply(){ $num =$num *10; } multiply(); echo $num;

由于函式 multiply() 沒(méi)有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。

HTTP協(xié)議中GET、POST和HEAD的區(qū)別?

HEAD: 只請(qǐng)求頁(yè)面的首部。

GET: 請(qǐng)求指定的頁(yè)面信息,并返回實(shí)體主體。

POST: 請(qǐng)求服務(wù)器接受所指定的文檔作為對(duì)所標(biāo)識(shí)的URI的新的從屬實(shí)體。

(1)HTTP 定義了與服務(wù)器交互的不同方法,最基本的方法是 GET 和 POST。事實(shí)上 GET 適用于多數(shù)請(qǐng)求,而保留 POST 僅用于更新站點(diǎn)。

(2)在FORM提交的時(shí)候,如果不指定Method,則默認(rèn)為GET請(qǐng) 求,F(xiàn)orm中提交的數(shù)據(jù)將會(huì)附加在url之后,以?分開(kāi)與url分開(kāi)。字母數(shù)字字符原樣發(fā)送,但空格轉(zhuǎn)換為“+“號(hào),其它符號(hào)轉(zhuǎn)換為%XX,其中XX為 該符號(hào)以16進(jìn)制表示的ASCII(或ISO Latin-1)值。GET請(qǐng)求請(qǐng)?zhí)峤坏臄?shù)據(jù)放置在HTTP請(qǐng)求協(xié)議頭中,而POST提交的數(shù)據(jù)則放在實(shí)體數(shù)據(jù)中;

GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST則沒(méi)有此限制。

(3)GET 這個(gè)是瀏覽器用語(yǔ)向服務(wù)器請(qǐng)求最常用的方法。POST這個(gè)方法也是用來(lái)傳送數(shù)據(jù)的,但是與GET不同的是,使用POST的時(shí)候,數(shù)據(jù)不是附在URI后面?zhèn)鬟f的,而是要做為獨(dú)立的行來(lái)傳遞,此時(shí)還必須要發(fā)送一個(gè)Content_length標(biāo)題,以標(biāo)明數(shù)據(jù)長(zhǎng)度,隨后一個(gè)空白行,然后就是實(shí)際傳送的數(shù)據(jù)。網(wǎng)頁(yè)的表單通常是用POST來(lái)傳送的。

推薦PHP視頻教程:https://www.php.cn/course/list/29/type/2.html

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
色欲麻豆国产福利精品| 人妻无码人妻有码中文字幕在线 | 国产人成精品香港三级在线| 午夜福利理论片在线观看| 人妻人人澡人人添人人爽冫 一| 久久久一本精品99久久精品 | 无码人妻精品一区二区三区9厂| 人妻精品久久无码专区涩涩| 日本中文字幕一区二区有码在线 | 99在线精品国自产拍| 野花香视频免费观看| 亚洲国产成人BT天堂| 性色A码一区二区三区天美传媒| 少妇风流AAAAA毛片| 亲孑伦视频一区二区三区一| 年轻漂亮的人妻被公侵犯BD免费版 | 番茄TODO社区免费看片| www.XXXXx.com日本| 18禁肉肉无遮挡无码网站| 岳女二人名器共侍一夫的出处| 亚洲色大成网站WWW在线观看| 西西人体大胆4444WWW| 色狠狠色噜噜AV一区| 日韩AV一卡2卡3卡4卡新区乱| 欧美一区视频在线| 欧洲亚洲日韩性无码专区| 四虎AV永久在线精品免费观看| 少妇高潮流白浆在线观看| 亚洲AV无码一区二区一二区| 亚洲AV综合色区无码二区爱AV| 亚洲444KKKK在线观看无码| 亚洲AV成人精品日韩一区| 影音先锋成人无码影院| 宅男噜噜噜66网站在线观看| 一二三四视频中文字幕| 幼儿稀缺区超清幼儿做的网站| 亚洲综合日韩AV无码毛片| 亚洲综合天堂AV网站在线观看| А天堂中文地址在线| 差差差软件大全APP推荐免费| 被群CAO的合不拢腿H纯肉视频| 波多野AV一区二区无码| 国精品无码一区二区三区左线| 狠狠亚洲婷婷综合色香五月加勒比| 韩国三级大全久久网站| 精品国产成人亚洲午夜福利| 精品无人区一区二区三区 | 亚洲日韩中文第一精品| 亚洲午夜性猛春交XXXX| 一边摸一边做爽的视频17国产| 成人免费A级毛片无码片2022| 乖宝真紧H嘶爽老子H| 国产精品一线二线三线精华液| 国产亚洲成AⅤ人片在线观看蜜桃| 狠狠色噜噜狠狠狠777米奇| 欧美成人免费一区| 日韩AV一中美AV一中文字慕| 亚洲乱码无人区卡1卡2卡3| 一区二区三区无码免费看| 夫妻互换呻吟抽插小说| 国产午夜精品一区二区三区极品 | 拧花蒂尿用力按凸起喷水尿视频| 午夜无码视频在线观看网站| AV一本大道香蕉大在线| 豆国产93在线 | 亚洲| 久久香蕉国产线看观看怡红院妓院 | 成人午夜性A级毛片免费| 国产成人精品无码青草| 饥渴人妻被快递员玩弄视频 | 夜夜夜高潮夜夜爽夜夜爰爰| 国产AVXXXX无套内射| 国产精品亚洲LV粉色| 欧美黑人一级二级巨大久久天堂| 日韩中文人妻无码不卡| 性色AV.网站免费| 亚洲中文字幕日本无线码| 99国产精品自在自在久久| 处破女轻点疼丨8分钟| 国产偷国产偷亚洲清高孕妇| 久久蜜桃86人妻arvi| 人人人澡人人人妻人人人精品| 儿子第一次送妈妈母亲节礼物| 亚洲乱码中文字幕久久孕妇黑人 | 亚洲久热无码中文字幕人妖| 俄罗斯VIDEODESEXO极| 欧美丰满少妇人妻精品| 亚洲午夜无码久久久久| 国产精品自在线拍国产手青青机版 | 黑人疯狂巨大XXⅩ0O0| 天堂资源在线WWW在线观看| 无码少妇一区二区| 一二三四影视在线观看免费视频| 国产精品永久免费视频| 色噜噜亚洲男人的天堂| AV大片在线无码免费| 两个领导在车里吃我奶| 四虎国产精品永久入口| 亚洲老熟女XXXXHDWAA| 国产精品久久久久久无码| 久久伊人精品青青草原APP| 亚洲AV无码专区青青草原| 国产成人精品午夜视频| 日韩人妻无码免费视频一区二区三区| 亚洲V欧美V国产V在线观看 | 私はあなたを爱しています怎么读 | 女狠狠噜天天噜日日噜| 天天爽夜夜爽人人爽| 巴西大屁股妓女BBW| 国精产品一区二区三区有限| 天美传媒在线观看果冻传媒视频| 草莓视频APP下载| 青青人亚洲AV永久无码精品无| 亚洲AV成人无码www在线观看| 国产精品99久久久久久人| 噜噜噜噜噜18禁私人影视| 天天爱天天做天天添天天欢| 被三个男人躁一夜好爽小说| 欧美激情精品久久久久久| 97SE狠狠狠狠狼亚洲综合网| 国产亚洲AV浪潮A∨尹人Av| 婷婷色香五月综合激激情| 18禁H漫免费漫画无码网站| 久久伊人精品一区二区三区| 伊人久久大香线蕉AV最新午夜| 久久久无码精品亚洲日韩按摩| 亚洲色噜噜噜噜噜噜国产| 久久国产免费直播| 脱色摇床THERMO网站| 国产成人无码VA在线观看| 男女无遮挡XX00动态图120| 亚洲AV无码精品色午夜果冻不卡 | 又大又粗又爽A级毛片免费看| 久久精品国产色蜜蜜麻豆| 玩丰满少妇XXXXXⅩ性麻| 国产JIZZJIZZ全部免费看| 天天摸天天做天天爽水多| 国产精品V欧美精品∨日韩| 无码日韩精品一区二区三区免费| 国产欧美亚洲日韩图片| 亚洲AV成人综合网伊人| 成人区人妻精品一区二区不卡网站 | 中文字幕人妻中文AV不卡专区| 国产在沙发上午睡被强| 日韩人妻无码精品二专区| 堕落的人妻1―10雨柔| 熟妇人妻精品一区二区视频免费的| 国产97在线 | 亚洲| 午夜.DJ高清免费观看视频| 狠狠色噜噜狠狠狠狠色综合久AV| 亚洲欧美精品午睡沙发| 国产强奷糟蹋漂亮邻居在线观看| 亚洲AV高清在线观看一区二区三 | 熟妇高潮一区二区精| 国产三级在线观看播放视频| 亚洲国产欧美在线人成| 国产精品无码素人福利| 色欲人妻综合AAAAAAAA网| 国产精品美女久久久久久久| 亚洲AV中文无码字幕色| 久久人人爽人人爽人人片DVD| 3D动漫同人精品无码专区| 久久天堂AV综合合色蜜桃网| 1区1区3区4区产品乱码芒果| 日本极品白嫩ASSPICS| 99亚洲乱人伦AⅤ精品| 日产无人区一线二线三线| 国产精品亚洲精品日韩已方| 亚洲国产精品无码久久一线| 噜噜久久噜噜久久鬼88| 成年无码AV片在线免缓冲| 无码人妻精品一区二区三区免费 | 久久人妻蜜桃一区二区三区| 99无人区卡一卡二卡三乱码| 色综合天天无码网站| 韩国亚洲精品A在线无码| 中文成人无码精品久久久不卡| 久久精品无码一区二区WWW| 亚洲旡码AV中文字幕| 麻豆亚洲AV熟女国产一区二| 一二三四免费观看高清在线| 欧洲美女与动交ZOZ0Z| 国产精品久久香蕉免费播放| 亚洲熟妇无码AV在线少妇| 人妻18毛片A级毛片免费看| 国产免费久久久久久无码| 无码网站天天爽免费看视频| 久久九九日本韩国精品| YY6090新视觉影院| 日本少妇毛茸茸高潮| 国产日产欧产美韩系列国| 野花社区日本免费图片| 日本乱人伦AⅤ精品| 韩国青草自慰喷水无码直播间| 综合在线视频精品专区| 欧美丰满大乳高跟鞋| 国产精品麻豆欧美日韩WW| 在公车被灌满JING液| 天堂中文АⅤ在线| 麻豆人妻无码性色AV专区| 国产白嫩护士被弄高潮|