- 相關(guān)推薦
有關(guān)PHP的一些常用問(wèn)題解答
今天,小編把一些PHP中一些常用的知識點(diǎn)整理出來(lái),讓新手們更容易掌握PHP,以便能快速看懂那些較難的程序,希望讀者們補充一下或者修正其中錯誤理解。
Q:PHP中的類(lèi)可以有構造函數么?
A:可以,只要函數名和類(lèi)名相同,這個(gè)函數將成為構造函數。在使用 new 操作符來(lái)創(chuàng )建一個(gè)類(lèi)的實(shí)例時(shí),該構造函數將會(huì )自動(dòng)調用,因此,可以把一些初始化工作放在構造函數里完成。
Q:PHP中的類(lèi)有析構函數么?
A:沒(méi)有。當對象被銷(xiāo)毀,使用 unset() 或者簡(jiǎn)單的脫離范圍,析構函數都會(huì )自動(dòng)調用。但 PHP 中沒(méi)有析構函數。 如:
unset($foo);
就銷(xiāo)毀一個(gè)類(lèi)對象$foo了。
Q:要如何繼承一個(gè)類(lèi)?
A:使用關(guān)鍵字 extends 來(lái)繼承一個(gè)類(lèi),如:
class B extents A {
}
Q:在類(lèi)的定義中如何引用自身?
A:使用 $this 來(lái)引用當前類(lèi)自身,如:
$this->name = "Tom";
Q:在子類(lèi)中如何使用父類(lèi)?
A:使用 :: 操作符,且有兩種方式,一種是直接用父類(lèi)名,如:
A::example();
一種是用 parent 關(guān)鍵字,如:
parent::example();
建議采用 parent:: 來(lái)引用父類(lèi)。
Q:我不想創(chuàng )建類(lèi)的實(shí)例,能直接使用類(lèi)中的函數或變量嗎?
A:可以,采用 :: 操作符,如:
B::example();
就可以執行B類(lèi)中的函數example(),而并沒(méi)有創(chuàng )建任何B類(lèi)的對象,僅僅是作為一個(gè)類(lèi)函數來(lái)調用,這對于功能模塊歸納組織很有好處。
Q:PHP有多重繼承么?//added by erquan
A:沒(méi)有。子類(lèi)不能同時(shí)從兩個(gè)父類(lèi)繼承,即一個(gè)孩子不能同時(shí)有兩個(gè)爸爸:)。子類(lèi)必須依賴(lài)于一個(gè)且必須已存在的基類(lèi)。
Q:如何使用PHP往windows中添加用戶(hù)?
A:
方法有一:
因為添加用戶(hù),所以你運行PHP程序的用戶(hù)必須是管理員權限(Administrator),并且同時(shí)需要你的php.ini中的安全模式?jīng)]有打開(kāi),并且關(guān)閉函數中沒(méi)有關(guān)閉system()、exec()、passthru()等函數。
( 以下說(shuō)明針對Windows2000/Windows XP/Windows 2003 )
一、使用IIS做Web服務(wù)器
如果是使用IIS做服務(wù)器的話(huà),那么運行PHP的帳戶(hù)就是:IUSR_XXXXXXXX,IWAM_XXXXXXX,(XXXX代表服務(wù)器的計算機名),那么你必須把這兩個(gè)用戶(hù)加到管理員組:Administrators 。當然,你這樣做的話(huà),會(huì )給服務(wù)器安全帶來(lái)威脅。
二、使用Apache作為Web服務(wù)器
據了解,Apache安裝成服務(wù)以后,那么就是以system權限運行的,那么就是說(shuō)PHP運行的話(huà),直接就是系統權限,已經(jīng)超過(guò)了管理員權限,那么執行命令更不再話(huà)下。如果你修改了Apache的運行用戶(hù),那么你必須指定Apache服務(wù)運行用戶(hù)是管理員以上權限,比如Administor或者system權限。
然后你就可以在你的PHP代碼中執行添加用戶(hù)操作了:
描述如下代碼:
define("USER_GROUP", "users"); //用戶(hù)組,默認為users,為了安全,定義還是的用戶(hù)組
define("ACTIVE", "YES"); //是否創(chuàng )建后直接激活用戶(hù),YES為激活,NO為不激活
//從數據庫提取用戶(hù)名和密碼
//假設表為user_info,并且只有字段id, user, passwod
$sql = "SELECT user,password FROM user_info";
$result = mysql_query($sql) or die("Query database failed");
//循環(huán)插入用戶(hù)
while ($array = mysql_fetch_array($result)) {
if (!function_exists("system"))
die('Function system() not exists, add user failed.');
//添加用戶(hù)
@system("net user $array[user] $array[passwd] /active:ACTIVE /add");
//添加到指定組
@system("net localgroup users $array[user] /del");
@system("net localgroup USER_GROUP $array[user] /add");
}
?>
以上代碼實(shí)現了把你所有數據庫的用戶(hù)添加到本地系統,如果你想單個(gè)的添加,可以考慮更改成用戶(hù)注冊成功后就添加用戶(hù),這個(gè)可以自己擴展。
不過(guò),此方法不能實(shí)現同步
方法二:
可以在服務(wù)器端利用php.exe來(lái)執行,并且不會(huì )有安全問(wèn)題。
假設你的php安裝在c:\php\中,那么我們就使用命令提示符的來(lái)執行php腳本來(lái)添加用戶(hù)。
PHP代碼:
//c:\test.php
@system("net user test test /add");
?>
保存在c:\test.php文件中
在cmd下執行:
c:\php\php.exe c:\test.php
提示:
C:\>c:\php\php.exe c:\test.php
命令成功完成。
再將方法一中的那段代碼拿到這里來(lái)執行,然后php.exe充當shell腳本引擎。然后寫(xiě)成批處理,通過(guò)定時(shí)任務(wù)來(lái)執行。當然,也可以考慮使用其他語(yǔ)言來(lái)實(shí)現,比如vb/vc之類(lèi)的,定期去數據庫中檢索是否有新添加的用戶(hù),然后再把用戶(hù)添加到系統中。
【PHP的一些常用問(wèn)題解答】相關(guān)文章:
一些PHP中類(lèi)的常識07-17
最近總結的一些php信息函數10-11
常用的PHP技術(shù)技巧08-25
PHP常用的關(guān)鍵字08-18
PHP常用的文件操作函數06-26
關(guān)于php常用的系統函數09-13
PHP常用MySql操作介紹05-11
PHP中閉包的一些常見(jiàn)問(wèn)題介紹06-05
關(guān)于php的常用運行方式09-10
PHP常用MySql操作方法06-21