一、密碼式
給數(shù)據(jù)庫起一個隨機復(fù)雜的名稱,避免被猜到被下載,這種方式在以前很流行,因為大家都對自己的代碼很有自信。但隨著錯誤提示對數(shù)據(jù)庫地址的泄露導(dǎo)致數(shù)據(jù)庫被非法下載,這種方式也就越來越少人用了。
二、"#"式
在數(shù)據(jù)庫名稱里加上#號,從URL上請求時#是請求地址和請求參數(shù)的一個分隔字符,如果知道了數(shù)據(jù)庫名,直接請求的話,如:http://www.xx.com/access#.mdb,WEB服務(wù)器會認為請求的是access而不是access#.mdb,所以會提示找不到文件,但是很遺憾,URL中對于這些特殊的字符都會有一個特殊的表示方式,#的特殊表示就是%23,如http://www.xx.com/access%23.mdb,那么access#.mdb將會被下載。還有如果用FlashGet之類的下載工具也可以直接下載。
三、asp式
這種作法是比較專業(yè)但也是很安全的也是現(xiàn)在比較流行的作法,但是現(xiàn)在許多的人只是作了一半,只是將數(shù)據(jù)名改成ASP而以,這樣的話直接用FlashGet之類的下載工具一樣可以將數(shù)據(jù)庫下載,這種方式的正確作法:
在數(shù)據(jù)庫內(nèi)創(chuàng)建一個字段,名稱隨意,類型是OLE對象,內(nèi)容設(shè)置為單字節(jié)型的"
這段代碼運行完之后將會在數(shù)據(jù)庫內(nèi)生成一個nodownload表,表內(nèi)字段是notdown。如果數(shù)據(jù)庫內(nèi)已有同名的數(shù)據(jù)表存在請將代碼內(nèi)的nodownload改成自己想要的數(shù)據(jù)表名即可。PHP 抽象方法與抽象類 abstract 關(guān)鍵字
abstract 關(guān)鍵字用于定義抽象方法與抽象類。
抽象方法
抽象方法指沒有方法體的方法,具體就是在方法聲明的時候沒有 {} 括弧以及其中的內(nèi)容,而是直接在聲明時在方法名后加上分號結(jié)束。
abstract 關(guān)鍵字用于定義抽象方法,語法:
abstract function function_name();
抽象類
只要一個類里面有一個方法是抽象方法,那么這個類就要定義為抽象類。抽象類同樣用 abstract 關(guān)鍵字來定義。
抽象類不能產(chǎn)生實例對象,通常是將抽象方法做為子類方法重載的模板使用的,且要把繼承的抽象類里的方法都實現(xiàn)。實際上抽象類是方便繼承而引入的。
例子:
代碼如下:
<?php
abstract class AbstractClass{
// 定義抽象方法
abstract protected function getValue();
// 普通方法
public function printOut(){
print $this->getValue()."<br />";
}
}
class ConcreteClass extends AbstractClass{
protected function getValue(){
return "抽象方法的實現(xiàn)";
}
}
$class1 = new ConcreteClass;
$class1->printOut();
?>
四、asa式
這種方式的真諦是利用IIS對ASA文件的保護,從而使得數(shù)據(jù)庫文件不能從URL上直接請求下載,但是這種方式被誤解成只要將文件后綴改成ASA就可以了。要知道IIS只是對global.asa這個文件名有請求保護,所以這種方式只能將數(shù)據(jù)庫名設(shè)置為global.asa,而且要注意的是,設(shè)置成global.asa之后最好不要將其放在主機或虛擬目錄的根目錄里,不然會被IIS當(dāng)然正常的global.asa文件進行嘗試運行的
更多信息請查看IT技術(shù)專欄