中山php|最優網絡 :中山做網站 中山php建站
最優良人
Category Page for: 后端程序
二級目錄下,htaccess做301重定向,把ip地址轉向域名
2011/08/26 at 15:14 » Comments (221)
因為網站是放在獨立IP的主機上,百度和谷歌直接通過ip地址收錄了網站許多頁面,包括二級目錄下的頁面,因為子目錄下也存在htaccess文件,有自己的規則,所以根目錄的301跳轉規則對子目錄無效,需要在子目錄下再做301重定向。 發現子目錄與根目錄不同的地方是訪問地址后面有沒有加斜杠所請求的地址有一點點不同,下面是規則: RewriteBase /news RewriteCond %{HTTP_HOST} ^zui88.com [NC] RewriteRule com(.*)$ http://www.86956464.com$1 [L,R=301] #不加斜杠請求的地址是/wwwroot/zui88.com/news/ RewriteCond %{HTTP_HOST} ^zui88.com [NC] RewriteRule (.*)$ http://www.86956464.com/news/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^124.173.133.154 [NC] RewriteRule com(.*)$ http://www.86956464.com$1 [L,R=301] RewriteCond %{HTTP_HOST} ^124.173.133.154 [NC] RewriteRule (.*)$ http://www.86956464.com/news/$1 [L,R=301] more »什么是php反射機制以及利用php反射機制實現可插拔可擴展的插件架構
2011/08/26 at 00:06 » Comments (406)
反射是什么? 它是指在PHP運行狀態中,擴展分析PHP程序,導出或提取出關于類、方法、屬性、參數等的詳細信息,包括注釋。這種動態獲取的信息以及動態調用對象的方法的功能稱為反射API。 反射是操縱面向對象范型中元模型的API,其功能十分強大,可幫助我們構建復雜,可擴展的應用。其用途如:自動加載插件,自動生成文檔,甚至可用來擴充PHP語言。php反射api由若干類組成,可幫助我們用來訪問程序的元數據或者同相關的注釋交互。借助反射我們可以獲取諸如類實現了那些方法,創建一個類的實例(不同于用new創建),調用一個方法(也不同于常規調用),傳遞參數,動態調用類的靜態方法。 * ** 反射api是php內建的oop技術擴展,包括一些類,異常和接口,綜合使用他們可用來幫助我們分析其它類,接口,方法,屬性,方法和擴展。這些oop擴展被稱為反射,位于php源碼/ext/reflection目錄下。 可以使用反射api自省反射api本身(這可能就是反射最初的意思,自己"看"自己): <?php Reflection::export(new ReflectionExtension('reflection')); ?> 幾乎所有的反射api都實現了reflector接口,所有實現該接口的類都有一個export方法,該方法打印出參數對象的相關信息。 使用get_declared_classes()獲取所有php內置類,get_declared_interfaces(); get_defined_functions(); get_defined_vars(); get_defined_constants();可獲取php接口,方法,變量,常量信息。 ** *** 反射初探: <?php //定義一個自定義類 class MyTestClass{ public function testFunc($para0='defaultValue0'){ } } //接下來反射它 foreach(get_declared_classes() as $class){ //實例化一個反射類 ...more »php強制下載文件,避免文件或者圖片直接在瀏覽器打開
2011/08/25 at 15:08 » Comments (10)
以下代碼是FLEAPHP框架自帶的文件下載助手類 /** * FLEA_Helper_SendFile 類用于向瀏覽器發送文件 * * 利用 FLEA_Helper_SendFile,應用程序可以將重要的文件保存在 * 瀏覽器無法訪問的位置。然后通過程序將文件內容發送給瀏覽器。 * * @package Core * @author 起源科技 (www.qeeyuan.com) * @version 1.0 */ class FLEA_Helper_SendFile { /** ...more »php逐條輸出結果到瀏覽器,實現實時提醒和無刷新提示
2011/08/25 at 14:50 » Comments (280)
php實現字符串逐條輸出的原理是利用flush();ob_flush();函數刷新輸出緩沖 ob_end_clean(); //清除輸出緩存并且關閉緩存 echo str_pad(' ',256);//輸出256字節空格(在ie瀏覽器下要接受大于256個字節才會輸出顯示 ) for($i=0;$i<5;$i++){ echo '<br/>abc___'.$i; flush(); ob_flush(); sleep(1); } 該方法在opera下不可用,因為opera瀏覽器在不遇到一個html標簽之前是不輸出內容的 more ».htaccess排除真實目錄和文件規則
2011/08/25 at 12:21 » Comments (24)
.htaccess排除真實目錄和文件規則 RewriteEngine on RewriteBase /html RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] #RewriteRule ^.*/(sysadm/.+)$ $1/index.php [L] more »php在windows主機或虛擬空間利用socket在線發送郵件
2011/08/24 at 23:53 » Comments (2,688)
在linux虛擬主機下一般可以利用php的mail函數直接發郵件 bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) 但是在windows虛擬主機下則不能直接使用mail函數,可以通過socket了,采用郵箱的smtp服務在線發送郵件(現在的163免費郵箱一注冊就可以免費使用這個服務,并且默認開通的),比較成熟的在線發送郵件類有php_mailer,功能很強大,不過下面介紹的是一個比較簡單的socket郵件發送類,應付一般的需求足夠了。 使用方法是: require_once (dirname(__FILE__).'/email.class.php');//該類的代碼附在文章后面 //########################################## $smtpserver = "smtp.163.com";//SMTP服務器 $smtpserverport =25;//SMTP服務器端口 $smtpusermail = "XXX@163.com";//SMTP服務器的用戶郵箱 $smtpemailto = "XXXXX@qq.com";//發送給誰 $smtpuser = ...more »htaccess在根目錄和子目錄下的執行順序
2011/08/23 at 14:13 » Comments (81)
如果在根目錄和子目錄下都存在htaccess文件,默認根目錄下htaccess的規則是不會被繼承的,如果這些配置需要影響到子目錄,需要手動寫上"RewriteOptions inherit"才能繼承父配置,參考上一篇 htaccess的用法 。 所以如果子目錄也要用到根目錄的配置規則,最好是重新定義,因為如果單純的繼承的話,根目錄htaccess里面的某些規則的路徑可能已經不適用子目錄。 more »htaccess,apache下分布式配置文件的配置選項和flag標簽
2011/08/23 at 14:06 » Comments (100)
以下指命令的作用域都是.htaccess RewriteEngine On|Off RewriteEngine 可用On 或者 Off 打開或關閉rewrite功能。 rewrite configurations 不會繼承,所以你得給每個你想用 rewrite功能的virtual host加上這個指令。 RewriteBase URL-path RewriteBase指令顯式地設置了目錄級重寫的基準URL。在下文中,你可以看見RewriteRule可以用于目錄級的配置文件中 (.htaccess)并在局部范圍內起作用,即規則實際處理的只是剝離了本地路徑前綴的一部分。處理結束后,這個路徑會被自動地附著回去。默認值是"RewriteBase physical-directory-path"。 在對一個新的URL進行替換時,此模塊必須把這個URL重新注入到服務器處理中。為此,它必須知道其對應的URL前綴或者說URL基準。通常,此前綴就是對應的文件路徑。但是,大多數網站URL不是直接對應于其物理文件路徑的,因而一般不能做這樣的假定! 所以在這種情況下,就必須用RewriteBase指令來指定正確的URL前綴。 如果你的網站服務器URL不是與物理文件路徑直接對應的,而又需要使用RewriteBase指令,則必須在每個對應的.htaccess文件中指定RewriteRule 。 RewriteCond TestString CondPattern RewriteCond指令定義了一個規則的條件,即在一個RewriteRule指令之前有一個或多個RewriteCond指令。條件之后的重寫規則僅在當前URI與pattern匹配并且符合這些條件的時候才會起作用。 Notice:All of these tests can also be prefixed by an exclamation mark ('!') to ...more »PHP定界符EOT的用法
2011/08/20 at 14:54 » Comments (120)
定界符: 另一種給字符串定界的方法使用定界符語法("<<<")。應該在 <<< 之后提供一個標識符,然后是字符串,然后是同樣的標識符結束字符串。 結束標識符必須從行的第一列開始。同樣,標識符也必須遵循 PHP 中其它任何標簽的命名規則:只能包含字母數字下劃線,而且必須以下劃線或非數字字符開始。 php 中(<<<eot)的用法 有時候我們需要在php輸出比較復雜的html文本,如果使用雙引號的話,文本里面有雙引號的 例: <?php while($rs=$db->fetch_array($news)){ echo <<<EOT <li> <a href="?{$rs[id]}">{$rs[title]}</a><img src="images/new.gif" alt=""><span>[{$rs[date]}]</span></li> EOT; //注意,此處的EOT;必須在當前行的最前,其前面不允許有任何字符 ?> 從上面的例子可以看出<<<eot為開始標識,結束為eot; 中間引用變量則就為{變量} 這種方法通常用在生成靜態度頁面時,可以把此代碼寫在靜態文件中,然后然后用來調用即可 定界符 給字符串定界的方法使用定界符語法("<<<")。應該在 <<< 之后提供一個標識符,然后是字符串,然后是同樣的標識符結束字符串。 結束標識符必須從行的第一列開始。同樣,標識符也必須遵循 PHP 中其它任何標簽的命名規則:只能包含字母數字下劃線,而且必須以下劃線或非數字字符開始。 舉個例子: <?php $str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD; ?> 但要注意的是: 結束標識符所在的行不能包含任何其它字符,可能除了一個分號(;)之外。這尤其意味著該標識符不能被縮進,而且在分號之前和之后都不能有任何空格或制表符。同樣重要的是要意識到在結束標識符之前的第一個字符必須是你的操作系統中定義的換行符。例如在 Macintosh 系統中是 \r。 如果破壞了這條規則使得結束標識符不"干凈",則它不會被視為結束標識符,PHP 將繼續尋找下去。如果在這種情況下找不到合適的結束標識符,將會導致一個在腳本最后一行出現的語法錯誤。 如下: print ...more »smarty使用date函數
2011/08/19 at 18:04 » Comments (5)
smarty在模板上可以直接使用php自帶的函數,甚至可以使用自定義的函數,使用的方法是: 模板中調用變量時,當只有一個參數是,就直接{$str1|函數名},當有函數有兩個參數時,{第一個參數|函數名:第二個參數},當有三個參數時,{第一個參數|函數名:第二個參數:第三個參數},,當有4,5,,,參數時,以此類推。 smarty使用date函數的用法是{{'Y-m-d'|date:$var}} more »