廣東福建浙江江蘇上海北京山東遼寧江西河南四川湖北湖南廣西安徽黑龍江天津重慶吉林河北貴州甘肅山西云南新疆寧夏海南陜西西藏青海內(nèi)蒙古

新聞中心

其他功能
發(fā)布時間:2014-10-11 23:23:34
5.1 生成圖像

PHP可以操作處理圖像。如果你已經(jīng)安裝了GD庫,你甚至可以利用PHP生成圖像。
Header("Content-type: image/gif");
$string=implode($argv," ");
$im = imagecreatefromgif("images/button1.gif");
$orange = ImageColorAllocate($im, 220, 210, 60);
$px = (imagesx($im)-7.5*strlen($string))/2;
ImageString($im,3,$px,9,$string,$orange);
ImageGif($im);
ImageDestroy($im);
?>
(譯者注:以上代碼段缺少注釋,請讀者參考PHP Manual的圖像處理函數(shù)部分)
這段代碼在其他頁面中通過以下標記調(diào)用,然后以上的那段button.php3代碼取得text值并在另外取得的圖像文件中加上該值--在以上的代碼中該圖像文件是images/button1.gif--最后輸出到瀏覽器。假如你想在表單域中使用圖像按鈕,但是又不希望在每次按鈕上的文字改變后不得不重新生成新的圖像,就可以利用這樣簡單的方法動態(tài)生成圖像文件。

5.2 Cookies

PHP支持基于HTTP的cookies。在需要時你可以像使用一般變量一樣方便的使用cookie。Cookies是瀏覽器保存于客戶端的一些信息片段,由此你可以知道是否一臺特定PC上的任何人都訪問過你的站點,瀏覽者者在你的站點上的蹤跡等等。使用cookies的典型例子就是對瀏覽者偏好的甄別。Cookies由函數(shù)setcookie()設定。與輸出HTTP標頭的函數(shù)header()一樣,setcookie()必須在任何實際內(nèi)容杯輸出到瀏覽器之前調(diào)用。以下是一個簡單例子:
if (empty($VisitedBefore))
{
// 如果沒有設定cookie,為cookie賦上當前時間值
// 函數(shù)中的最后一個參數(shù)聲明了該cookie保存的時間
// 在這個例子中是1年
// time()函數(shù)返回自1970年1月1日以來的以秒數(shù)計的時間
SetCookie("VisitedBefore",time(), time()+(60*60*24*365));
}
else
{
// 歡迎瀏覽者再次光臨
echo "Hello there, welcome back
";
// 讀取cookie并判斷
if ( (time() - $VisitedBefore) >= "(60*60*24*7)" )
echo "Why did you take a week to come back. You should be here more often!? ";
}
?>

5.3 基于HTTP驗證

基于HTTP驗證當PHP以CGI模式運行時不能實現(xiàn)。我們可以使用函數(shù)header()發(fā)送HTTP標頭強制驗證,客戶端瀏覽器則彈出供輸入用戶名和密碼的對話框。這兩個變量被儲存在$PHP_AUTH_USER和$PHP_AUTH_PW中,你可以使用這兩個變量驗證合法并允許進入。以下的例子通過用戶名稱/密碼對為tnc/nature的驗證一名用戶的登錄:
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button ";
exit;
}
else
{
if ( !($PHP_AUTH_USER=="tnc" && $PHP_AUTH_PW=="nature") )
{
// 如果是錯誤的用戶名稱/密碼對,強制再驗證
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.";
exit;
}
else
{
echo "Welcome tnc!";
}
?>
事實上再實際引用中不大可能如上面使用代碼段明顯的用戶名稱/密碼對,而是利用數(shù)據(jù)庫或者加密的密碼文件存取它們。

5.4 文件上傳

你可以利用PHP實現(xiàn)文件的功能,注意客戶端的瀏覽器應該是Netscape3以上或者IE3以上。以下就是該功能的簡單演示:
( upload.html ):


Upload Your File


ENCTYPE="multipart/form-data" METHOD=POST>
NAME="MAX_FILE_SIZE" VALUE="2000000">
NAME="uploadfile" SIZE="24" MAXLENGTH="80">



NAME="sendit">
NAME="cancelit">


(You may notice a slight
delay while we upload your file.)




下面是處理上傳的文件:
( receiver.php3 ):
function do_upload ()
{
global $uploadfile, $uploadfile_size;
global $local_file, $error_msg;
if ( $uploadfile == "none" )
{
$error_msg = "You did not specify a file for uploading.";
return;
}
if ( $uploadfile_size > 2000000 )
{
$error_msg = "Sorry, your file is too large.";
return;
}
$the_time = time ();
// 你需要對以下目錄有寫權(quán)限
$upload_dir = "/local/uploads";
$local_file = "$upload_dir/$the_time";
if ( file_exists ( ’$local_file’ ) )
{
$seq = 1;
while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; }
$local_file = "$upload_dir/$the_time$seq";
};
rename ( $uploadfile, $local_file );
display_page ();
}
function display_page ()
{
// 這里是你的頁面內(nèi)容
}


php3 Receiving Script


if ( $error_msg ) { echo "$error_msg

"; }
if ( $sendit )
{
do_upload ();
}
elseif ( $cancelit )
{
header ( "Location: $some_other_script" );
exit;
}
else
{
some_other_func ();
}
?>



5.5 常用函數(shù)

我們簡單來看看一些常用的函數(shù)。

數(shù)組


array - 生成數(shù)組
count - 數(shù)組元素個數(shù)
sort - 數(shù)組排序,另有其他幾種排序函數(shù)可供使用
list - 列出數(shù)組元素
each - 返回下一個key/value對
current - 返回當前數(shù)組元素
next,prev - 傳回當前數(shù)組元素前后指針



日期和時間

checkdate - 驗證日期/時間格式
date - 生成日期/時間格式
time - 當前時間信息
strftime - 格式化日期/時間

目錄、文件系統(tǒng)

chdir - 改變目錄
dir - 目錄類別
opendir, readdir, closedir - 開啟、讀取、關(guān)閉目錄
fopen, fclose - 開啟、關(guān)閉文件
fgets, fgetss - 逐行讀取內(nèi)容
file - 將整個文件讀入一個數(shù)組變量中

正則表達式

ereg - 匹配正則表達式
eregi - 大小寫非敏感匹配正則表達式
ereg_replace -匹配正則表達式并替換
eregi_replace -大小寫非敏感匹配正則表達式并替換
split - 依規(guī)則切開字符串并以數(shù)組形勢存儲



字符串

AddSlashes - 加上斜杠后使用字符串
echo - 輸出一個或多個字符串
join, implode - 將數(shù)組元素合并為字符串
htmlentities, htmlspecialchars - 將HTML特殊字符轉(zhuǎn)換為HTML標記形式
split - 依規(guī)則切開字符串并以數(shù)組形勢存儲
5.6 擴展我們的范例主頁

我們將使用以上提到的一些函數(shù)和思想為我們的范例主頁添加更多的動態(tài)內(nèi)容。我們可以在每個頁面的頂部加上導航欄,同時使得當前頁自動的不被鏈接顯示;同時還可以添加一個用戶驗證表單以便上傳音樂、圖像等文件并自動更新頁面。

導航欄

實際上就是在footer.inc文件中加上一段代碼。假設你的web站點中所有后綴為.php3的文件都會出現(xiàn)在導航欄中,以下就是被存為include/navbar.inc的代碼:
/* 輸出該導航欄,鏈接所有除當前頁的站內(nèi).php3文件 */
# 讀取目錄
$d = dir("./");
echo "

| ";
while($entry = $d->read())
{
// 忽略無文件情況
if ( !is_file($entry) )
continue;
/* 將文件名與擴展名分開。由于.是正則表達式特殊字符,應該用引出 */
list($filenm, $fileext) = split(".",$entry, 2);
// 忽略非.php3文件情況
if( $fileext != "php3" )
continue;
/* 現(xiàn)在我們已經(jīng)把.php3文件都選出,下面搜尋文件中的第一行(標題)
類似$title="something";
并將以上標題內(nèi)容分開,用作鏈接文字 */
$linknm = "";
$fp=fopen($entry,"r");
while($buffer=fgets($fp, 4096))
{
$buffer = trim($buffer);
// 我們已經(jīng)把每個文件的標題放在文件的第一行以便搜索
// 但是當你改變變量名稱時可能會帶來****煩
if (ereg("title *= *"", $buffer))
{
/* 我們已經(jīng)取得了標題內(nèi)容并可以在此基礎上
進行去除空格等處理。
必須以PHP代碼方式處理,比如$title = "blah blah" */
eval($buffer);
// 然后將鏈接文字顯示為標題文字
$linknm = $title;
break;
}
}
fclose($fp);
if ( $entry == basename($PHP_SELF) )
echo "$linknm";
else
echo "$linknm";
echo " | ";
}
$d->close();
echo "

";
?>

照片收藏夾

我們將引用基于HTTP的驗證、文件系統(tǒng)函數(shù)和文件上傳功能維護放置圖像文件的目錄。
同時我們需要建立一個可以列出在該目錄下所有照片的頁面。

文件上傳
include("include/common.inc");
// 我們在這里再做一次用戶驗證
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm="$MySiteName"");
Header("HTTP/1.0 401 Unauthorized");
echo "Sorry, you are not authorized to upload files ";
exit;
}
else
{
if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$MyPassword ) )
{
// 如果是錯誤的用戶名稱/密碼對,強制再次認證
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.

";
exit;
}
}
if ( $cancelit )
{
// 當瀏覽者按下"取消"按鈕則轉(zhuǎn)向首頁面
header ( "Location: front_2.php3" );
exit;
}
function do_upload () {
global $userfile, $userfile_size, $userfile_name, $userfile_type;
global $local_file, $error_msg;
global $HTTP_REFERER;
if ( $userfile == "none" ) {
$error_msg = "You did not specify a file for uploading.";
return;
}
if ( $userfile_size > 2000000 )
{
$error_msg = "Sorry, your file is too large.";
return;
}
// Wherever you have write permission below...
$upload_dir = "photos";
$local_file = "$upload_dir/$userfile_name";
if ( file_exists ( $local_file ) ) {
$error_msg = "Sorry, a file with that name already exists";
return;
};
// 你還可以由此檢查文件名稱/類型對以確定是何種文件:gif,jpg,mp3…
rename($userfile, $local_file);
echo "The file is uploaded
";
echo "Go Back
";
}
$title = "Upload File";
include("include/header.inc");
if (empty($userfile) || $userfile=="none")
{
// 輸出以下表單
?>
" ENCTYPE="multipart/form-data" METHOD=POST>









(You may notice a slight delay while we upload your file.)
} else {
if ( $error_msg ) { echo "$error_msg

"; }
if ( $sendit ) {
do_upload ();
}
}
include("include/footer.inc");
?>

照片圖庫


include("include/common.inc");
$title = "Gallery";
include("include/header.inc");
?>


Here are some of our family photos. This PHP script can really
be made better, by splitting into multiple pages.


$d = dir("photos");
while($entry = $d->read())
{
if (is_file("photos/$entry"))
echo " ";
}
$d->close();
?>
include("include/footer.inc");
?>

另外,你可以在文件上傳的表單中加上一個輸入元素去描述該上傳的文件。這個元素將被存儲在文件中,然后被以上的照片圖庫的那段代碼所讀出并顯示出來。



相關(guān)說明: 您可以通過電話:020-85421558 與我們聯(lián)系,我們會根據(jù)您所從事的行業(yè)領(lǐng)域和網(wǎng)站類型,在最短的時間內(nèi)請我們的營銷顧問與您預約后上門拜訪您,直接面談交流為您解答所有的網(wǎng)站建設疑問。
上一篇:從實例開始       下一篇:PHP入門

提供全國各地網(wǎng)站建設服務

上海北京深圳廣州天津南京大連杭州沈陽成都東莞濟南佛山無錫長沙武漢寧波長春蘇州青島珠海大慶福州廈門常州鄭州煙臺西安合肥南寧重慶東營昆明威海中山南昌紹興太原惠州溫州徐州揚州淄博鎮(zhèn)江鞍山保定銀川南通洛陽嘉興臺州桂林貴陽蘭州盤錦漳州黃石唐山濰坊湘潭肇慶吉林江門?株洲泉州泰州包頭柳州德州韶關(guān)寶雞金華鹽城新鄉(xiāng)十堰廊坊玉溪濟寧滄州蕪湖湖州梧州泰安安陽遼陽舟山梅州常德三明連云港哈爾濱秦皇島馬鞍山石家莊呼和浩特

 
備案系統(tǒng)認證 舉報不良網(wǎng)站 我們的支付方式 AAA級信用
廣州萬戶網(wǎng)絡信息科技有限公司 旗下網(wǎng)站建設品牌:萬戶網(wǎng) ibuycatalyticconverters.com 版權(quán)所有 ©2000-2019 All Rights Reserved
網(wǎng)站備案編號:粵ICP備15049595號 地址:廣州市番禺區(qū)大石街北聯(lián)圍仔工業(yè)路2號E座305
電話:020-85421558   傳真:020-88140140   郵編:510515
HTTP/1.1 200 OK Date: 22 ?? 2024 11:45:59 G10T Content-Length: 3073 Content-Type: text/html Connection: Close Server: Microsoft-IIS/10.0 Runtime Error

Server Error


Runtime Error

Description: A server error has occurred. The current custom error settings prevent the details of the error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please define an errorDetails attribute within the "filter.config" configuration file. This errorDetails attribute should then have its value set to "On".


<!-- Filter.Config Configuration File -->

<configuration>
    <httpFilters errorDetail="On">
        <!-- managed filters configuration -->
    </httpFilters>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "errorPage" attribute of the <httpFilters> configuration tag to point to a custom error page location.


<!-- Filter.Config Configuration File -->

<configuration>
    <httpFilters errorDetail="LocalOnly" errorPage="mycustompage.htm">
        <!-- managed filters configuration -->
    </httpFilters>
</configuration>