有關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之類的,定期去資料庫中檢索是否有新新增的使用者,然後再把使用者新增到系統中。
-
SQL語句型別的標準模式
1、查詢語句:主要是由select關鍵字完成2、事務控制語句:主要由commit、rollback和savepoint三個關鍵字完成3、DML(資料操作語言)語句:主要由、update和三個關鍵字完成4、DDL(資料定義語言)語句:主要由create、alter、drop和truncate四個關鍵字完成5、DCL(資料控制...
-
ASP 時間函式及獲取伺服器時間的寫法
一、常用的ASP時間函式1、now()獲取當前系統日期和時間,ASP輸出格式:<%=now()%>2、Year(now())獲取年份,ASP輸出格式:<%=year(now())%>3、Month(now())獲取當前月份,ASP輸出格式:<%=month(now())%>4、day(now())獲取當天數,ASP輸出格式:<%=day(now())%>5、hour(now())...
-
PHP開發工程師的具體職責14篇
PHP開發工程師的具體職責1職責:1、對公司新的網站專案、系統專案、小程式專案進行開發;2、維護支援公司現有的網路和系統平臺工作執行;3、按時、獨立、高質量地完成工作,確保相關程式碼邏輯的正確性及健壯性;4、開發、維護、升級和優化系統,並能快速定位並及時修復...
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想說說javascript中函式的隱含引數:argumentsarguments該物件代表正在執行的函式和呼叫它的函式的引數。[function.]arguments[n]引數function:選項。當前正在執行的Function物件的名字。n:選項。要傳遞給Function物件的從0開始的引數值...