有關PHP的一些常用問題解答
今天,小編把一些PHP中一些常用的知識點整理出來,讓新手們更容易掌握PHP,以便能快速看懂那些較難的程序,希望讀者們補充一下或者修正其中錯誤理解。
Q:PHP中的類可以有構造函數麼?
A:可以,只要函數名和類名相同,這個函數將成為構造函數。在使用 new 操作符來創建一個類的實例時,該構造函數將會自動調用,因此,可以把一些初始化工作放在構造函數裏完成。
Q:PHP中的類有析構函數麼?
A:沒有。當對象被銷燬,使用 unset() 或者簡單的脱離範圍,析構函數都會自動調用。但 PHP 中沒有析構函數。 如:
unset($foo);
就銷燬一個類對象$foo了。
Q:要如何繼承一個類?
A:使用關鍵字 extends 來繼承一個類,如:
class B extents A {
}
Q:在類的定義中如何引用自身?
A:使用 $this 來引用當前類自身,如:
$this->name = "Tom";
Q:在子類中如何使用父類?
A:使用 :: 操作符,且有兩種方式,一種是直接用父類名,如:
A::example();
一種是用 parent 關鍵字,如:
parent::example();
建議採用 parent:: 來引用父類。
Q:我不想創建類的實例,能直接使用類中的函數或變量嗎?
A:可以,採用 :: 操作符,如:
B::example();
就可以執行B類中的函數example(),而並沒有創建任何B類的對象,僅僅是作為一個類函數來調用,這對於功能模塊歸納組織很有好處。
Q:PHP有多重繼承麼?//added by erquan
A:沒有。子類不能同時從兩個父類繼承,即一個孩子不能同時有兩個爸爸:)。子類必須依賴於一個且必須已存在的基類。
Q:如何使用PHP往windows中添加用户?
A:
方法有一:
因為添加用户,所以你運行PHP程序的用户必須是管理員權限(Administrator),並且同時需要你的`中的安全模式沒有打開,並且關閉函數中沒有關閉system()、exec()、passthru()等函數。
( 以下説明針對Windows2000/Windows XP/Windows 2003 )
一、使用IIS做Web服務器
如果是使用IIS做服務器的話,那麼運行PHP的帳户就是:IUSR_XXXXXXXX,IWAM_XXXXXXX,(XXXX代表服務器的計算機名),那麼你必須把這兩個用户加到管理員組:Administrators 。當然,你這樣做的話,會給服務器安全帶來威脅。
二、使用Apache作為Web服務器
據瞭解,Apache安裝成服務以後,那麼就是以system權限運行的,那麼就是説PHP運行的話,直接就是系統權限,已經超過了管理員權限,那麼執行命令更不再話下。如果你修改了Apache的運行用户,那麼你必須指定Apache服務運行用户是管理員以上權限,比如Administor或者system權限。
然後你就可以在你的PHP代碼中執行添加用户操作了:
描述如下代碼:
define("USER_GROUP", "users"); //用户組,默認為users,為了安全,定義還是的用户組
define("ACTIVE", "YES"); //是否創建後直接激活用户,YES為激活,NO為不激活
//從數據庫提取用户名和密碼
//假設表為user_info,並且只有字段id, user, passwod
$sql = "SELECT user,password FROM user_info";
$result = mysql_query($sql) or die("Query database failed");
//循環插入用户
while ($array = mysql_fetch_array($result)) {
if (!function_exists("system"))
die('Function system() not exists, add user failed.');
//添加用户
@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");
}
?>
以上代碼實現了把你所有數據庫的用户添加到本地系統,如果你想單個的添加,可以考慮更改成用户註冊成功後就添加用户,這個可以自己擴展。
不過,此方法不能實現同步
方法二:
可以在服務器端利用來執行,並且不會有安全問題。
假設你的php安裝在c:php中,那麼我們就使用命令提示符的來執行php腳本來添加用户。
PHP代碼:
//c:
@system("net user test test /add");
?>
保存在c:文件中
在cmd下執行:
c:php c:
提示:
C:>c:php c:
命令成功完成。
再將方法一中的那段代碼拿到這裏來執行,然後充當shell腳本引擎。然後寫成批處理,通過定時任務來執行。當然,也可以考慮使用其他語言來實現,比如vb/vc之類的,定期去數據庫中檢索是否有新添加的用户,然後再把用户添加到系統中。
-
JavaScript數組去重的四種方法
javascript數組去重方法彙總ue1=function(){varn=[];//一個新的臨時數組for(vari=0;i<th;i++)//遍歷當前數組{//如果當前數組的第i已經保存進了臨時數組,那麼跳過,//否則把當前項push到臨時數組裏面if(xOf(this[i])==-1)(this[i]);}returnn;};ue2=function(){var...
-
css經典教程
css經典教程1有些習慣顯得尤為重要,今天與您分享六個CSS習慣。因為習慣其實是會變的,所以只能寫“最近”的。這些習慣都跟技術無關,如果不遵守,也不會出錯。但是我覺得良好的習慣會體現一個人的素質。我們在中向大家介紹過很多CSS經驗與技巧,這些東西都發布在/css/...
-
javascript操作select元素案例分析
本文實例講述了javascript操作select元素的.用法。分享給大家供大家參考。具體分析如下:這裏熟悉一下js對select元素的操作,html頁面中建立一個form,其中包含一個select元素和submit按鈕。當選擇select中某一項時改變其文字,當select中所有項的文字都改變後,重新恢...
-
JavaScript的課堂講解
本文主要內容:1.分析函數的四種調用形式2.弄清楚函數中this的意義3.明確構造函對象的過程4.學會使用上下文調用函數一、函數調用形式函數調用形式是最常見的形式,也是最好理解的形式。所謂函數形式就是一般聲明函數後直接調用即是。例如:複製代碼代碼如下://聲明...