Time of Update: 2017-01-19
使用系統命令是一項危險的操作,尤其在你試圖使用遠端資料來構造要執行的命令時更是如此。如果使用了被汙染資料,命令注入漏洞就產生了。exec()是用於執行shell命令的函數。它返回執行並返回命令輸出的最後一行,但你可以指定一個數組作為第二個參數,這樣輸出的每一行都會作為一個元素存入數組。使用方式如下:複製代碼 代碼如下:<?php$last = exec('ls', $output, $return);print_r($output);echo "Return
Time of Update: 2017-01-19
SPL,PHP 標準庫(Standard PHP Library) ,此從 PHP 5.0 起內建的組件和介面,並且從 PHP5.3 已逐漸的成熟。SPL 其實在所有的 PHP5 開發環境中被內建,同時無需任何設定。似乎眾多的 PHP 開發人員基本沒有使用它,甚至聞所未聞。究其原因,可以追述到它那陽春白雪般的說明文檔,使你忽略了「它的存在」。SPL 這塊寶石猶如鐵達尼的「海洋之心」般,被沉入海底。而現在它應該被我們撈起,並將它穿戴在應有的位置 ,而這也是這篇文章所要表述的觀點。那麼,SPL
Time of Update: 2017-01-19
用PHP的ob_start();控制您的瀏覽器cacheOutput Control 函數可以讓你自由控制指令碼中資料的輸出。它非常地有用,特別是對於:當你想在資料已經輸出後,再輸出檔案頭的情況。輸出控制函數不對使用 header() 或 setcookie(), 發送的檔案頭資訊產生影響,只對那些類似於 echo() 和 PHP 代碼的資料區塊有作用。我們先舉一個簡單的例子,讓大家對Output Control有一個大致的印象:Example 1.程式碼複製代碼
Time of Update: 2017-01-19
從學習PHP基礎知識到使用ZendSudio工具開發有半年多了,這過程中,學習斷斷續續,遇到的問題也是N多,學習PHP還真是不讓人省心。最不省心的還是算調試過程。學習編程,一定要懂得調試,否則就如同盲人摸象,理不清這裡面的運行機制。也許是因為自己非科班出來,或是領悟力不足,又或本身xdebug工具本身設定較為複雜,導致我對Zendstudio的調試過程充滿了步步驚心。我使用的是XAMPP的整合開發平台環境。裡面已經預設了Xdebug的調試工具,只需要自己改下配置的就可以了。我的開發模式是,在虛擬
Time of Update: 2017-01-19
PHP中提供了Autoload來協助我們方便的進行檔案的包含,但是autoload並非想象的那樣能夠處理所有的情況,今天就來記錄一下前幾天遇到的autoload存在的一些問題。為什麼要使用 Autoload在PHP中使用類時,我們必須在使用前載入進來,不管是通過 require 的方式還是 include
Time of Update: 2017-01-19
1、如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。2、$row['id'] 的速度是$row[id]的7倍。3、echo 比 print 快,並且使用echo的多重參數(譯註:指用逗號而不是句點)代替字串串連,比如echo $str1,$str2。4、在執行for迴圈之前確定最大迴圈數,不要每迴圈一次都計算最大值,最好運用foreach代替。5、登出那些不用的變數尤其是大數組,以便釋放記憶體。6、盡量避免使用__get,__set,__autoload。7
Time of Update: 2017-01-19
PHP setcookie() 函數向用戶端發送一個 HTTP cookie。cookie 是由伺服器發送到瀏覽器的變數。cookie 通常是伺服器嵌入到使用者電腦中的小文字檔。每當電腦通過瀏覽器請求一個頁面,就會發送這個 cookie。cookie 的名稱指定為相同名稱的變數。例如,如果被發送的 cookie 名為 "name",會自動建立名為 $user 的變數,包含 cookie 的值。必須在任何其他輸出發送前對 cookie 進行賦值。如果成功,則該函數返回 true,否則返回
Time of Update: 2017-01-19
我們首先討論password_hash()函數。這將用作建立一個新的密碼的雜湊值。它包含三個參數:密碼、雜湊演算法、選項。前兩項為必須的。你可以根據下面的例子來使用這個函數:複製代碼 代碼如下:$password = 'foo';$hash =
Time of Update: 2017-01-19
spl_autoload_register(PHP 5 >= 5.1.2)spl_autoload_register — 註冊__autoload()函數說明bool spl_autoload_register ([ callback $autoload_function ] )將函數註冊到SPL
Time of Update: 2017-01-19
一般的方案會是:複製代碼 代碼如下:$fp = fopen("/tmp/lock.txt", "w+");if (flock($fp, LOCK_EX)) { fwrite($fp, "Write something heren"); flock($fp, LOCK_UN);} else { echo "Couldn't lock the file !";}fclose($fp);
Time of Update: 2017-01-19
看代碼,再做解釋複製代碼 代碼如下:<?php $array=array('a','b','c','d'); foreach($array as $key=>$val){ //do something } echo $val;//輸出d echo $kay;//輸出3 $val='e'; print_r($array);//輸出Array ( [0] => a [1] => b [2] => c [3] => d ) ?&
Time of Update: 2017-01-19
引用是什麼在 PHP 中引用意味著用不同的名字訪問同一個變數內容。這並不像 C 的指標,替代的是,引用是符號表別名。注意在 PHP 中,變數名和變數內容是不一樣的,因此同樣的內容可以有不同的名字。最接近的比喻是 Unix 的檔案名稱和檔案本身——變數名是目錄條目,而變數內容則是檔案本身。引用可以被看作是 Unix 檔案系統中的 hardlink。一:變數的引用複製代碼 代碼如下:<?php$a =100;$b = &$a;echo $b; //這裡輸出1
Time of Update: 2017-01-19
在Mac OS上安裝redis首先是安裝,它會預設安裝到/usr/local/bin下複製代碼 代碼如下:cd /tmpwget http://redis.googlecode.com/files/redis-2.6.9.tar.gztar -zxf redis-2.6.9.tar.gzcd redis-2.6.9makesudo make install然後下載一些設定檔(主要就是把deamon開啟之類的,沒對比與預設配置的區別)複製代碼 代碼如下:wget
Time of Update: 2017-01-19
複製代碼 代碼如下:mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )是執行一個Regex的搜尋和替換的用函數,平時我們用它時多是一次替換結束,今天又看php手冊發現了一個較為難理解(自認為)的例子分享給大家。複製代碼 代碼如下:<?php $subject = array('1', 'a', '2',
Time of Update: 2017-01-19
看手冊說define定義的常量只允許:僅允許標量和 null。標量的類型是 integer, float,string 或者 boolean。 也能夠定義常量值的類型為 resource ,但並不推薦這麼做,可能會導致未知狀況的發生。今天閱讀php源碼,發現define的第二個參數其實也可以是一個對象。先貼一段樣本:複製代碼 代碼如下:class A { public function __toString()
Time of Update: 2017-01-19
伺服器環境:CentOS – 5.4php升級:5.4.14 - 5.5.0升級心得:比較順利,但是有一點需要說明:eaccelerator無法相容php5.5.0,好在php在5.5.0預設提供了Zend OPcache,所以一直習慣eaccelerator的朋友如果要升級到php5.5.0的話,可能要暫時和eaccelerator說bye
Time of Update: 2017-01-19
文法:複製代碼 代碼如下:Void header(string $string[,bool $replace=true [, int
Time of Update: 2017-01-19
約定幾個目錄/usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini一,php-fpm的啟動參數複製代碼 代碼如下:#測試php-fpm配置/usr/local/php/sbin/php-fpm -t/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -
Time of Update: 2017-01-19
如何在PHP上顯示JFreechart?可能大部分都遇到這種情況,在JSP上的servlet能完全的顯示出JFreechart畫的統計圖,但是和其他語言混合運用就不能顯示了 我現在也遇到這個問題,想了半個小時終於弄明白了,實現的過程還是很簡單的。(個人經驗總結而已) 解決的思路: 1.先將JFreechart產生的圖片儲存在網頁伺服器上。 2.然後在JSP上用<img>標籤顯示 3.通過JS將JSP匯入PHP頁面 這樣就實現了。 部分getColumnChart.jsp源碼:
Time of Update: 2017-01-19
負載瓶頸 一般主要在以下四個方面:1 資料庫2 伺服器CPU3 硬碟 I/O4 網路頻寬除了這四個。還有什麼值得我們最佳化的呢。php真很強。今天就說下在PHP的 指令碼級上來調整PHP的效能。如果你想在單台伺服器 上提高PHP的效能。我們可以使用“編譯緩衝”。 編譯cache 不單能提高效能而且會隨著PHP程式的容量和代碼複雜性的增加 伺服器的效能也增加。什麼是編譯cache呢。等下告訴你。我們先說下PHP編譯指令檔所要做的兩步吧:1