php 抽獎機率演算法/* * 不同機率的抽獎原理就是把0到*(比重總數)的區間分塊 * 分塊的依據是物品占整個的比重,再根據隨機數種子來產生0-* 中的某個數 * 判斷這個數是落在哪個區間上,區間對應的就是抽到的那個物品。 * 隨機數理論上是機率均等的,那麼相應的區間所含數的多少就體現了抽獎物品機率的不同。 */ function get_rand($proArr) { $result = array(); foreach ($proArr as $key => $
PHP 的 HTTP 認證機制僅在 PHP 以 Apache 模組方式運行時才有效,因此該功能不適用於 CGI 版本。在 Apache 模組的 PHP 指令碼中,可以用 header() 函數來向用戶端瀏覽器發送“Authentication Required”資訊,使其彈出一個使用者名稱/密碼輸入視窗。當使用者輸入使用者名稱和密碼後,包含有 URL 的 PHP 指令碼將會加上預定義變數PHP_AUTH_USER,PHP_AUTH_PW 和 AUTH_TYPE
/** * 計算字串的長度(漢字按照兩個字元計算) * * @param string $str 字串 * * @return int */function myStrLen($str){ $length = strlen(preg_replace('/[\x00-\x7F]/', '', $str)); if ($length){ return strlen($str) - $length +
本文(解說見代碼注釋)一、substr() && strlen()代碼:<?php/** * 雙方變數為字串時,可用交換方法一 * 使用substr()結合strlen()兩個方法達到交換變數值得目的 */$a = "This is A"; // a變數原始值$b = "This is B"; // b變數原始值echo '交換之前 $a 的值:'.$a.', $b
PHP 透明地支援 HTTP cookie。cookie 是一種在遠程瀏覽器端儲存資料並以此來跟蹤和識別使用者的機制。可以用 setcookie() 或 setrawcookie() 函數來設定 cookie。cookie 是 HTTP 標題的一部分,因此 setcookie() 函數必須在其它資訊被輸出到瀏覽器前調用,這和對 header() 函數的限制類似。可以使用輸出緩衝函數來延遲指令碼的輸出,直到按需要設定好了所有的 cookie 或者其它 HTTP 標題。Example #1
會話機制(Session)在 PHP 中用於儲存並發訪問中的一些資料。這使可以協助建立更為人性化的程式,增加網站的吸引力。一個訪問者訪問你的 web 網站將被分配一個唯一的 id, 就是所謂的會話 id. 這個 id 可以儲存在使用者端的一個 cookie 中,也可以通過 URL 進行傳遞.會話支援允許你將請求中的資料儲存在超全域數組$_SESSION中. 當一個訪問者訪問你的網站,PHP 將自動檢查(如果 session.auto_start被設定為 1)或者在你要求下檢查(明確通過
本特性可以使使用者上傳文本和二進位檔案。用 PHP 的認證和檔案操作函數,可以完全控制允許哪些人上傳以及檔案上傳後怎樣處理。PHP 能夠接受任何來自符合 RFC-1867 標準的瀏覽器(包括 Netscape Navigator 3 及更高版本,打了補丁的 Microsoft Internet Explorer 3 或者更高版本)上傳的檔案。Note: 相關的設定請參閱 php.ini 的
從 PHP 4.2.0 開始,PHP 將隨檔案資訊數組一起返回一個對應的錯誤碼。該代碼可以在檔案上傳時產生的檔案數組中的 error 欄位中被找到,也就是 $_FILES['userfile']['error']。UPLOAD_ERR_OK其值為 0,沒有錯誤發生,檔案上傳成功。UPLOAD_ERR_INI_SIZE其值為 1,上傳的檔案超過了 php.ini 中 upload_max_filesize
對 MAX_FILE_SIZE 設定的值,不能大於 ini 設定中 upload_max_filesize 選項設定的值。其預設值為 2M 位元組。如果記憶體限制設定被啟用,可能需要將 memory_limit 設定的更大些,請確認 memory_limit 的設定足夠的大。如果 max_execution_time 設定的值太小,指令碼啟動並執行時間可能會超過該設定。因此,也請保證 max_execution_time 足夠的大。Note: max_execution_time
可以對 input 域使用不同的 name 來上傳多個檔案。PHP 支援同時上傳多個檔案並將它們的資訊自動以數組的形式組織。要完成這項功能,需要在 HTML 表單中對檔案上傳域使用和多選框與複選框相同的數組式提交文法。Note:對多檔案上傳的支援是在 PHP 3.0.10 版本添加的。Example #1 上傳多個檔案<form action="file-upload.php" method="post"
只要在 php.ini 檔案中啟用了 allow_url_fopen 選項,就可以在大多數需要用檔案名稱作為參數的函數中使用 HTTP 和 FTP 的 URL 來代替檔案名稱。同時,也可以在 include、include_once、 require 及 require_once 語句中使用 URL。PHP 所支援協議的更多資訊參見支援的協議和封裝協議。注意:要在 PHP 4.0.3 及其更早的版本中使用 URL 封裝協議,需要在編譯時間用 --enable-url-fopen-wrapper
在 PHP 內部,系統維護著串連狀態,其狀態有三種可能的情況:0 - NORMAL(正常)1 - ABORTED(異常退出)2 - TIMEOUT(逾時)當 PHP 指令碼正常地運行 NORMAL 狀態時,串連為有效。當遠程用戶端中斷串連時,ABORTED 狀態的標記將會被開啟。遠程用戶端串連的中斷通常是由使用者點擊 STOP 按鈕導致的。當連線時間超過 PHP 的時限時,TIMEOUT
永久的資料庫連接是指在指令碼結束運行時不關閉的串連。當收到一個永久串連的請求時。PHP 將檢查是否已經存在一個(前面已經開啟的)相同的永久串連。如果存在,將直接使用這個串連;如果不存在,則建立一個新的串連。所謂“相同”的串連是指用相同的使用者名稱和密碼到相同主機的串連。對
PHP 的安全模式是為了試圖解決共用伺服器(shared-server)安全問題而設立的。在結構上,試圖在 PHP 層上解決這個問題是不合理的,但修改 網頁伺服器層和作業系統層顯得非常不現實。因此許多人,特別是 ISP,目前使用安全模式。以下是php.ini中關於安全模式的設定:safe_mode boolean是否啟用 PHP 的安全模式。safe_mode_gid boolean預設情況下,安全模式在開啟檔案時會做 UID 比較檢查。如果想將其放寬到 GID 比較,則開啟
安全模式限制函數大全dbmopen:檢查被操作的檔案或目錄是否與被執行的指令碼有相同的 UID(所有者)。dbase_open:檢查被操作的檔案或目錄是否與被執行的指令碼有相同的 UID(所有者)。filepro:檢查被操作的檔案或目錄是否與被執行的指令碼有相同的 UID(所有者)。filepro_rowcount:檢查被操作的檔案或目錄是否與被執行的指令碼有相同的 UID(所有者)。filepro_retrieve:檢查被操作的檔案或目錄是否與被執行的指令碼有相同的 UID(所有者)。ifx_
定義類BBB,並儲存為BBB.php,內容如下:<?php class BBB{private $name;function __construct($name){$this->name = $name;}function hello() {echo $this->name;}}?>編寫測試用php檔案,儲存為AAA.php,內容如下:<?php require_once 'BBB.php';if(class_exists('BBB'
從版本 4.3.0 開始,PHP 提供了一種新類型的 CLI SAPI(Server Application Programming Interface,服務端應用編程連接埠)支援,名為 CLI,意為 Command Line Interface,即命令列介面。顧名思義,該 CLI SAPI 模組主要用作 PHP 的開發外殼應用。CLI SAPI 和其它 CLI SAPI 模組相比有很多的不同之處,我們將在本章中詳細闡述。值得一提的是,CLI 和 CGI 是不同的
簡介策略模式定義了演算法族,分別封裝起來,讓他們之間可以相互替換。該模式讓演算法獨立於使用它的客戶而獨立變化。組成抽象策略角色:
下面是一些非常有用的PHP類庫,相信一定可以為你的WEB開發提供更好和更為快速的方法。圖表庫下面的類庫可以讓你很簡的建立複雜的圖表和圖片。當然,它們需要GD庫的支援。pChart - 一個可以建立統計圖的庫。Libchart - 這也是一個簡單的統計圖庫。JpGraph - 一個物件導向的圖片建立類。Open Flash Chart - 這是一個基於Flash的統計圖。RSS 解析解釋RSS並是一件很單調的事情,不過幸好你有下面的類庫可以協助你方便地讀取RSS的Feed。MagpieRSS -
拆開分成幾千份進行排序再合并。首先先建立一個1億個QQ號的txt。PHP code?<?php // 建立一億個QQ號的txt (大約需85~100秒) set_time_limit(0);$fn = 'qq.txt';$fp = fopen($fn, 'w'); $st = microtime(true); $l = range(0,10000);shuffle($l);foreach ($l as $k=>$v){ $arr = range(