七基於PHP的用戶認證
如果希望在每一段腳本上都進行口令保護可以結合使用header()語句$PHP_AUTH_USER和$PHP_AUTH_PW來建立基本的認證方案通常的基於服務器的提問/響應順序都如下所示
用戶從服務器上請求一個文件如果這個文件在服務器上是被保護的則在響應的頭部向用戶返回一個(示經授權的用戶)字符串
浏覽器收到這個響應後彈出要求用戶輸入用戶名/口令的對話框
用戶在對話框中輸入一個用戶名和口令點擊OK按鈕將信息返回服務器供認證使用
如果用戶名和口令有效被保護的文件將向用戶開放只要用戶還在使用文件認證會一直有效
一段簡單的PHP腳本文件通過向用戶發送一個適當的能夠引起自動顯示用戶名/口令對話框的HTTP頭部就可以模仿HTTP的提問/響應系統PHP把用戶在用戶名/口令對話框中輸入的信息存儲在$PHP_AUTH_USER和$PHP_AUTH_PW中使用這二個變量就可以與存儲在文本文件數據庫等文件中的用戶名/口令進行比較
這個例子采用了二個硬編碼的值進行認證但無論用戶名和口令放在什麼地方其原理都是相同的
<?
/* 檢查$PHP_AUTH_USER和$PHP_AUTH_PW中的值*/
if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW)))
{
/* 如果沒有值則發送一個能夠引發對話框出現的頭部*/
header(WWWAuthenticate: Basic realm=My Private Stuff);
header(HTTP/ Unauthorized);
echo Authorization Required;
exit;
}
else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW)))
{
/* 變量中有值檢查它們是否正確*/
if (($PHP_AUTH_USER != validname) || ($PHP_AUTH_PW != goodpassword))
{
/* 如果輸入的用戶名和口令中有一個不正確則發送一個能夠引發對話框出現的頭部 */
header(WWWAuthenticate: Basic realm=My Private Stuff);
header(HTTP/ Unauthorized);
echo Authorization Required;
exit;
}
else if (($PHP_AUTH_USER == validname) || ($PHP_AUTH_PW == goodpassword))
{
/* 如果二個值都正確顯示成功的信息 */
echo <P>Youre authorized!</p>;
}
}
?>
需要注意的是如果你使用的是基於文件的保護機制它並不能保證目錄中所有的文件的安全它可能保護大部分的文件如果你認為它能夠保護給定目錄中的所有文件你的這種認識就需要變變了
八PHP和COM
如果你喜歡冒險並且在Windows上運行CGIISAPI或Apache模塊版本的PHP就可以訪問COM的函數好了詳細解釋COM的工作就交給微軟和許多大部頭的書了為了能簡單地了解一下COM的功能下面是一小段常見的腳本
這一段PHP腳本在後端啟動微軟的字處理Word打開一個新的文檔輸入一些文字保存文檔並關閉Word
<?
// 建立一個指向新COM組件的索引
$word = new COM(wordapplication) or die(Cant start Word!);
// 顯示目前正在使用的Word的版本號
echo Loading Word v {$word>Version}<br>;
// 把它的可見性設置為(假)如果要使它在最前端打開使用(真)
// to open the application in the forefront use (true)
$word>Visible = ;
// 在Word中創建新的文檔
$word>Documents>Add();
// 在新文檔中添加文字
$word>Selection>TypeText(Testing );
//把文檔保存在Windows臨時目錄中
$word>Documents[]>SaveAs(/Windows/temp/comtestdoc);
// 關閉與COM組件之間的連接
$word>Quit();
// 在屏幕上顯示其他信息
echo Check for the file;
?>
如果你有一個intranet網站數據存儲在SQL Server中用戶需要這些數據的Excel格式則可以讓PHP運行必要的SQL查詢並對輸出進行格式化然後利用COM打開Excel把數據轉化為Excel格式的數據然後把數據保存在用戶的台式機上
九PHP和Java
PHP另一個有趣的功能是它可以調用現有的Java 對象中的方法使得你可以在基於Java的應用中集成PHP如果要在工作中推廣PHP的應用這一功能就非常有用了你得到的結果是這裡的一切都是基於Java的
要利用這一功能你的服務器上必須安裝有JVM(Java虛擬機器)如果安裝的是由SunKaffeIBM或Blackdown的JDK就已經安裝有了JVM
在配置PHP時需要在配置文件中添加withjava小節然後修改phpini文件中的一部分對phpini文件的修改主要是需要添加下面的內容
[Java]
javalibrarypath=/path/to/library
javaclasspath=/classpath/
extension_dir=/path/to/extensions
extension=libphp_javaso
需要注意的是所作的修改與你的安裝類型有關你需要閱讀PHP安裝目錄下ext/java目錄中README文件學習如何配置Java功能
下面是一段如何創建一個新的Java對象的PHP腳本的例子這段腳本將訪問並在顯示器是顯示一些Java屬性它與COM的例子同樣有趣應該會給我們一些啟發
<?
$system = new Java(javalangSystem);
echo <P>Java version = $system>getProperty(javaversion) <br>;
echo Java vendor = $system>getProperty(javavendor) </p>;
?>
如果你有Java知識將會對開發工作帶來很大的幫助這種集成的能力是未來PHP被接受和增長的關健
十PHP和XML
PHP中包含有一個可選的支持Expat解析的XML擴展利用PHP中與XML相關的函數可以創建一個分析程序來處理有效的XML文檔如果你使用的是版或版本更高的Apache軟件就不需要再安裝額外的庫文件了你所需要作的就只是配置PHP中的withxml
象Java和COM一樣PHP中對XML的支持也很有趣而且增長也很快如果你了解Expat或LibXML請加入這一方面的開發吧
From:http://tw.wingwit.com/Article/program/PHP/201311/21351.html