2013年4月17日 星期三

PHP 與 XML 應用

XML文件內容(test.xml):
<?xml version=’1.0′ standalone=’yes’?>
<Messages>
<msg id=’1′>
<title>This is Title</title>
<content>Here is Content</content>
<time>2008-03-20 21:50:23</time>
<reply id=’11′>reply 1</reply>
<reply id=’12′>reply 2</reply>
</msg>
</Messages>

<1>將XML轉換成SimpleXMLElement構造:

在PHP使用上要先使用

$xml = simplexml_load_file("Messages.xml");

若XML已經是String格式時,則是使用

$xml = simplexml_load_string($String);

<2>抓取title標籤的內容


//搜尋子結點,通过節點標簽名直接得到節點的內容
echo $xml->msg->title;

<3>透過陣列數來抓取

//同階段的標籤將會自動轉換成陣列,可以通過陣列索引抓取到內容
echo $xml->msg->reply[0];

<4>抓取標籤內的attributes

echo $xml->msg[0]->attributes()->id;

<5>xpath函式抓取路徑

echo $xml->xpath("//msg[@id='1']/title");







2013年4月11日 星期四

PHP亂數產生字串函式

   透過此函式可以直接抓亂數


function Password()
{
    $password_len = 4;    //產生的字串長度
    $password = '';


    $word = 'abcdefghijkmnpqrstuvwxyz0123456789';     //字元組
    $len = strlen($word);

    for ($i = 0; $i < $password_len; $i++) {
        $password .= $word[rand() % $len];
    }

    return $password;
}

2013年4月9日 星期二

PHP 使用 PEAR的安裝與設定

在這裡強調一下,當初安裝PHP時請選擇完整安裝,因為在完整安裝下PHP就會先將接下來要用的東西先裝好了,可以減省不少下載的時間。

安裝時有兩種發法:    (若你PHP安裝時為完整安裝的話,請選擇第一種方法)

1.
然後我們開啟PHP資料結下的go-pear.bat

2.
下載go-pear.phar,然後放到PHP的資料夾下,並開啟[cmd]

輸入:
 cd  c:\php\                                                          (此為PHP資料夾所在位置)

php.exe -q go-paer-phar.phar

使用以上方法都會跳出此安裝畫面:


這時直接Enter,之後會跳出所要安裝的路徑,這裡特別注意第12項 Path to CLI php.exe,不可讓他的路徑為空白,輸入你所要的路徑(ex: c:\PHP) :

安裝完成後,將php.ini打開將:

; Windows: "\path1;\path2"
;include_path = ".:/php/includes"

更改成

; Windows: "\path1;\path2"
include_path = ".;c:\PHP\PEAR"

這樣就可以使用pear上的函式來進行呼叫了。

接下來可以至PEAR_Packages 下載你所需要的內容了,將下載下來的 XXXX.tgz 解壓縮並將資料夾改名直接丟至,PEAR資料夾下。



便可以直接呼叫使用:

<?php
require_once("HTTP/Client.php");
?>






2013年4月8日 星期一

IIS7 使用 PHP


請先至PHP官方網站下載Windows版本的PHP,根據自己的系統環境,選擇下載版本與安裝,將下載好的PHP路徑記下(ex:C:\php)。

安裝完PHP後至,【控制台】→【程式和功能】→【開啟或關閉 Windows 功能】,然後將IIS 的 CGI 功能啟用。




之後至,【控制台】→【系統及安全性】→【系統管理工具】→【Internet Information Services (IIS) 管理員】,開啟,並選擇處理常式對應

選擇新增模組對應

之後根據圖片內容照樣輸入即可
都設定好之後,可以至C:\inetpub\wwwrootv下建置一個phpinfo.php來測試一下是否成功,phpinfo.php內容為:   

 <?php phpinfo(); ?>


之後瀏覽器上輸入http://localhost/phpinfo.php

若是出現跟上圖一樣的話,就代表成功了!!!!


$_SERVER 的用法


$_SERVER['PHP_SELF'] #當前正在執行腳本的文件名,與 document root相關。

$_SERVER['argv'] #傳遞給該腳本的參數。 

$_SERVER['argc'] #包含傳遞給程序的命令行參數的個數(如果運行在命令行模式)。 

$_SERVER['GATEWAY_INTERFACE'] #服務器使用的 CGI 規範的版本。例如,「CGI/1.1」。

$_SERVER['SERVER_NAME'] #當前運行腳本所在服務器主機的名稱。 

$_SERVER['SERVER_SOFTWARE'] #服務器標識的字串,在響應請求時的頭部中給出。 

$_SERVER['SERVER_PROTOCOL'] #請求頁面時通信協議的名稱和版本。例如,「HTTP/1.0」。 

$_SERVER['REQUEST_METHOD'] #訪問頁面時的請求方法。例如:「GET」、「HEAD」,「POST」,「PUT」。 

$_SERVER['QUERY_STRING'] #查詢(query)的字符串。 

$_SERVER['DOCUMENT_ROOT'] #當前運行腳本所在的文檔根目錄。在服務器配置文件中定義。

$_SERVER['HTTP_ACCEPT'] #當前請求的 Accept: 頭部的內容。 

$_SERVER['HTTP_ACCEPT_CHARSET'] #當前請求的 Accept-Charset: 頭部的內容。例如:「iso-8859-1,*,utf-8」。

$_SERVER['HTTP_ACCEPT_ENCODING'] #當前請求的 Accept-Encoding: 頭部的內容。例如:「gzip」。

$_SERVER['HTTP_ACCEPT_LANGUAGE']#當前請求的 Accept-Language: 頭部的內容。例如:「en」。

$_SERVER['HTTP_CONNECTION'] #當前請求的 Connection: 頭部的內容。例如:「Keep-Alive」。 

$_SERVER['HTTP_HOST'] #當前請求的 Host: 頭部的內容。 

$_SERVER['HTTP_REFERER'] #鏈接到當前頁面的前一頁面的 URL 地址。 

$_SERVER['HTTP_USER_AGENT'] #當前請求的 User_Agent: 頭部的內容。 

$_SERVER['REMOTE_ADDR'] #正在瀏覽當前頁面用戶的 IP 地址。 

$_SERVER['REMOTE_HOST'] #正在瀏覽當前頁面用戶的主機名。 

$_SERVER['REMOTE_PORT'] #用戶連接到服務器時所使用的端口。 

$_SERVER['SCRIPT_FILENAME'] #當前執行腳本的絕對路徑名。 

$_SERVER['SERVER_ADMIN'] #管理員信息 

$_SERVER['SERVER_PORT'] #服務器所使用的端口 

$_SERVER['SERVER_SIGNATURE'] #包含服務器版本和虛擬主機名的字符串。 

$_SERVER['PATH_TRANSLATED'] #當前腳本所在文件系統(不是文檔根目錄)的基本路徑。 

$_SERVER['SCRIPT_NAME'] #包含當前腳本的路徑。這在頁面需要指向自己時非常有用。 

$_SERVER['REQUEST_URI'] #訪問此頁面所需的 URI。例如,「/index.html」。 

$_SERVER['PHP_AUTH_USER'] #當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是用戶輸入的用戶名。

$_SERVER['PHP_AUTH_PW'] #當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是用戶輸入的密碼。 

$_SERVER['AUTH_TYPE'] #當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是認證的類型。

$_REQUEST、$_POST、$_GET 之間的關係

$_POST
from表單內所submit過來的內容

$_GET
透過URL所傳遞過來的內容

$_REQUEST
不管來源是$_GET或是$_POST都可接收                                p.s.聽說PHP5.2之前也可支援$_COOKIE、$SERVER

但其   預設優先順序為($_POST>$GET)


說明範例:


<?php

echo "===GET===<br />";

echo $_GET['value'] . "<br />";

echo "===POST===<br />";

echo $_POST['value'] . "<br />";

echo "===REQUEST===<br />";

echo $_REQUEST['value'] . "<br />";

?>

<form method="post" action="?value=get">

    <input type="text" name="value" value="post"/>

    <input type="submit" value="submit"/>

</form>