Time of Update: 2017-01-19
1、單引號爆路徑 說明: 直接在URL後面加單引號,要求單引號沒有被過濾(gpc=off)且伺服器預設返回錯誤資訊。 Eg: www.xxx.com/news.php?id=149′ 2、錯誤參數值爆路徑 說明: 將要提交的參數值改成錯誤值,比如-1。單引號被過濾時不妨試試。 Eg: www.xxx.com/researcharchive.php?id=-1 3、Google爆路徑 說明: 結合關鍵字和site文法搜尋出錯頁面的網頁快照,常見關鍵字有warning和fatal error。注意,
Time of Update: 2017-01-19
include效能 複製代碼 代碼如下: include('include.php'); 當然這種方式並沒有錯誤,只不過在效率上它比下面的方式要稍稍差些: 複製代碼 代碼如下: include(realpath(dirname(_FILE_)).DIRECTORY_SEPARATOR.'include.php'); 這種方式我們可能需要輸入更多一些,但相對於前面那種需要PHP引擎去include_path 中迭代尋找所有名稱為'include.php'才能尋找到相應對象來說,dirname(
Time of Update: 2017-01-19
作者Jani Hartikainen發表了一篇博文,文中將兩者進行對比,列舉了PHP優於Node.js的五大理由。一起來看下。 1. 容易託管 大多數Web託管伺服器供應商能為PHP提供託管,而對於Node,你需要找一個更專業的託管服務提供者。通常情況下,需要通過shell訪問來設定應用程式,並且大部分託管供應商不包含這些,即便是包含此功能的,其他的包要相對的廉價些。 2. PHP在伺服器上安裝更方便、簡易
Time of Update: 2017-01-19
一、autoload機制概述 在使用PHP的OO模式開發系統時,通常大家習慣上將每個類的實現都存放在一個單獨的檔案裡,這樣會很容易實現對類進行複用,同時將來維護時也很便利。這也是OO設計的基本思想之一。在PHP5之前,如果需要使用一個類,只需要直接使用include/require將其包含進來即可。 下面是一個實際的例子: 複製代碼 代碼如下: /* Person.class.php */ <?php class Person { var $name, $age; function
Time of Update: 2017-01-19
PHP數組合并兩種方法及區別 如果是關聯陣列,如下: 複製代碼 代碼如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果兩個數組存在相同的key,後面的一個會覆蓋前面的 複製代碼 代碼如下: <?php $c = array_merge($a, $b);
Time of Update: 2017-01-19
特別是+運算子,他的意思是,將右邊的數組單元(去重複)追加到左邊數組的後面。 複製代碼 代碼如下: <?php echo "\r\n第一種情況\r\n"; $a=array(1,2,3,4,5,6); $b=array(7,8,9); $c=array_merge ($a,$b); print_r($c); $c=$a+$b; print_r($c); $c=$b+$a; print_r($c); echo "\r\n第二種情況\r\n"; $a=array('a','b','c','d'
Time of Update: 2017-01-19
主要功能是根據貝貝的出生日期來顯示貝貝現在多大了,即時顯示貝貝的成長。 用目前時間減去出生的日期,但是可以顯示出來幾歲,幾個月,和幾天。 天的演算法有點問題,沒有考慮到大小月和2月份。 複製代碼 代碼如下: function getDays() { putenv("TZ=Asia/Chongqing"); $by = 2006; $bm = 7; $bd = 7; $rday=""; $today = getdate(); $by = $today[year] - $by; $bm =
Time of Update: 2017-01-19
SESSION與COOKIE區別: Session 將資訊儲存在伺服器上.伺服器在接受到唯一的SESSION_ID後,根據這個ID擷取相關資料,然後將資訊傳遞到用戶端(瀏覽器). Cookie 是將所有資訊以文本的形式存在本地檔案,並由用戶端(瀏覽器)進行管理與維護. 因為Session 資料存放區在server端,所以遠程client無法對資料進行修改;而Cookie儲存在client本地,容易被擷取和篡改.所以Session安全性較高. SESSION 介紹: PHP5
Time of Update: 2017-01-19
對象的主要三個特性 對象的行為:可以對 對象施加那些操作,開燈,關燈就是行為。 對象的形態:當施加那些方法是對象如何響應,顏色,尺寸,外型。 對象的表示:對象的表示就相當於身份證,具體區分在相同的行為與狀態下有什麼不同。 物件導向模型 物件導向的概念: oop(物件導向的編程)它能是其代碼更加簡潔易於維護並且具有更強的可重性 什麼是類:
Time of Update: 2017-01-19
複製代碼 代碼如下: class Foo { private $name = 'hdj'; public function getName(){ return $this->name; } } class Bar extends Foo { public $name = 'deeka'; } $bar = new Bar; var_dump($bar->name); var_dump($bar->getName()); 存取控制
Time of Update: 2017-01-19
複製代碼 代碼如下: <?php $a=3; $b=6; if($a=5||$b=7){ $a++; $b++; } var_dump($a, $b); 陷阱一 把$a=5、$b=7看成了$a==5、$b==7 錯誤結果:3,6 陷阱二 運算子的優先順序,認為$a=5賦值成功$b=7沒執行 錯誤結果:6,7 正確理解 陷阱是運算子的優先,賦值運算子(=)的優先順序是最低的,所以正確理解應該是 $a=(5||$b=7) 正確結果:true,7 升級一下 變形一 複製代碼 代碼如下: $a=
Time of Update: 2017-01-19
看了這篇PHP中file_exists與is_file,is_dir的區別的說法基本明白,PHP的 file_exists = is_dir + is_file。 寫程式驗證一下: 分別執行1000次,記錄所需時間。 檔案存在(目前的目錄) is_file:0.4570ms file_exists:2.0640ms 檔案存在(絕對路徑3層/www/hx/a/) is_file:0.4909ms file_exists:3.3500ms 檔案存在(絕對路徑5層/www/hx/a/b/c/) is_
Time of Update: 2017-01-19
很顯然file_exists是受了asp的影響,因為asp不但有fileExists還有folderExists,driverExists,那麼PHP中file_exists是什麼意思呢? PHP的 file_exists = is_dir + is_file 它既可以判斷檔案是否存在,又可以判斷目錄是否存在。但這樣一個全面的函數執行效率非常低,就像asp中request不指定是form,還是get,cookies,所以結論是: ◦如果要判斷目錄是否存在,請用獨立函數 is_dir(
Time of Update: 2017-01-19
在PHP開發中工作裡非常多使用到逾時處理到逾時的場合,我說幾個情境: 1. 非同步擷取資料如果某個後端資料來源擷取不成功則跳過,不影響整個頁面展現 2. 為了保證Web伺服器不會因為當個頁面處理效能差而導致無法訪問其他頁面,則會對某些頁面操作設定 3. 對於某些上傳或者不確定處理時間的場合,則需要對整個流程中所有逾時設定為無限,否則任何一個環節設定不當,都會導致莫名執行中斷 4. 多個後端模組(MySQL、Memcached、HTTP介面),為了防止單個介面效能太差,導致整個前面擷取資料太緩慢,
Time of Update: 2017-01-19
php中英文混合字元截斷不亂碼函數(utf8)複製代碼 代碼如下://utf8格式下的中文字元截斷//$sourcestr 是要處理的字串//$cutlength 為截取的長度(即字數)//$addstr 超過長度時在尾處加上的字元function cut_str($sourcestr, $cutlength, $addstr='...'){ $returnstr=''; $i=0; $n=0; $str_length=strlen($sourcestr)
Time of Update: 2017-01-19
先看一個js函數 複製代碼 代碼如下: function jsontest() { var json = [{'username':'crystal','userage':'20'},{'username':'candy','userage':'24'}]; alert(json[1].username); var json2 = [['crystal','20'],['candy','24']]; alert(json2[0][0]); }
Time of Update: 2017-01-19
從5.2版本開始,PHP原生提供json_encode()和json_decode()函數,前者用於編碼,後者用於解碼。 一、json_encode() 該函數主要用來將數組和對象,轉換為json格式。先看一個數群組轉換的例子: $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); 結果為 {"a":1,"b":2,"c":3,"d":4,"e":5}
Time of Update: 2017-01-19
php的內建函數exec,system都可以調用系統命令(shell命令),當然還有passthru,escapeshellcmd等函數。 在很多時候利用php的exec,system等函數調用系統命令可以協助我們更好更快的完成工作。比如前二天筆者在批量處理.rar檔案時exec就幫我了大忙了。 今天整理一下常用的調用系統函數發出來和大家分享經驗。 注意:要想使用這二個函數php.ini中的安全模式必須關閉,要不然為了安全起見php是不讓調用系統命令的。 先看一下php手冊對這二個函數的解釋:
Time of Update: 2017-01-19
其實我們可以利用array_filter函數輕鬆去掉多維空值,而數組的下標沒有改變,下面是舉例用法: <?php $array = array( 0 => '滔哥', 1 => false, 2 => 1, 3 => null, 4 => '', 5 => 'http://www.jb51.net', 6 => '0' ); print_r(array_filter($array)); ?> 上面代碼輸出結果為: Array ( [0] =&
Time of Update: 2017-01-19
環境:PHP 5.2.14 CentOS 5.5 第一步:建立擴充骨架 cd php-5.2.14/ext ./ext_skel –extname=laiwenhui 第二步:修改編譯參數 cd php-5.2.14/ext/laiwenhui vi config.m4 去掉 PHP_ARG_ENABLE(laiwenhui, whether to enable laiwenhui support, [ --enable-laiwenhui Enable laiwenhui support])