六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

5.PHP的其他技巧

[摘要]5. 其他雜項 5.1 生成圖像PHP可以操作處理圖像。如果你已經(jīng)安裝了GD庫,你甚至可以利用PHP生成圖像。<?Header("Content-type: image/gif");string=implode(argv," ");im = image...

5. 其他雜項 


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ù)部分)

這段代碼在其他頁面中通過以下標(biāo)記<img src="button.php3?text">調(diào)用,然后以上的那段button.php3代碼取得text值并在另外取得的圖像文件中加上該值--在以上的代碼中該圖像文件是images/button1.gif--最后輸出到瀏覽器。假如你想在表單域中使用圖像按鈕,但是又不希望在每次按鈕上的文字改變后不得不重新生成新的圖像,就可以利用這樣簡單的方法動態(tài)生成圖像文件。



5.2 Cookies



PHP支持基于HTTP的cookies。在需要時你可以像使用一般變量一樣方便的使用cookie。Cookies是瀏覽器保存于客戶端的一些信息片段,由此你可以知道是否一臺特定PC上的任何人都訪問過你的站點(diǎn),瀏覽者者在你的站點(diǎn)上的蹤跡等等。使用cookies的典型例子就是對瀏覽者偏好的甄別。Cookies由函數(shù)setcookie()設(shè)定。與輸出HTTP標(biāo)頭的函數(shù)header()一樣,setcookie()必須在任何實際內(nèi)容杯輸出到瀏覽器之前調(diào)用。以下是一個簡單例子:

<?

if (empty($VisitedBefore)) 

{

// 如果沒有設(shè)定cookie,為cookie賦上當(dāng)前時間值

// 函數(shù)中的最后一個參數(shù)聲明了該cookie保存的時間

// 在這個例子中是1年

// time()函數(shù)返回自1970年1月1日以來的以秒數(shù)計的時間

SetCookie("VisitedBefore",time(), time()+(60*60*24*365));



else 

{

// 歡迎瀏覽者再次光臨

echo "Hello there, welcome back<BR>"; 

// 讀取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驗證當(dāng)PHP以CGI模式運(yùn)行時不能實現(xiàn)。我們可以使用函數(shù)header()發(fā)送HTTP標(biāo)頭強(qiáng)制驗證,客戶端瀏覽器則彈出供輸入用戶名和密碼的對話框。這兩個變量被儲存在$PHP_AUTH_USER和$PHP_AUTH_PW中,你可以使用這兩個變量驗證合法并允許進(jìn)入。以下的例子通過用戶名稱/密碼對為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\n";

exit;



else 

{

if ( !($PHP_AUTH_USER=="tnc" && $PHP_AUTH_PW=="nature") 
)

{

// 如果是錯誤的用戶名稱/密碼對,強(qiáng)制再驗證

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)文件的功能,注意客戶端的瀏覽器應(yīng)該是Netscape3以上或者IE3以上。以下就是該功能的簡單演示:

( upload.html ):

<HTML>

<HEAD>

<TITLE>Upload Your File</TITLE>

</HEAD>

<BODY>

<FORM ACTION="receiver.php3" 

ENCTYPE="multipart/form-data" METHOD=POST>

<INPUT TYPE="HIDDEN" 

NAME="MAX_FILE_SIZE" VALUE="2000000">

<INPUT TYPE="FILE" 

NAME="uploadfile" SIZE="24" MAXLENGTH="80">

<BR><BR>

<INPUT TYPE="SUBMIT" VALUE="Upload File!" 

NAME="sendit"> 

<INPUT TYPE="SUBMIT" VALUE="Cancel" 

NAME="cancelit"><BR>

</FORM>

<I><FONT SIZE="2">(You may notice a slight 

delay while we upload your file.)</FONT></I>

</BODY>

</HTML>



下面是處理上傳的文件:

( 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)容

}

<HTML>

<HEAD>

<TITLE>php3 Receiving Script</TITLE>

</HEAD>

<BODY>

<? 

if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; 
}

if ( $sendit ) 

{

do_upload ();



elseif ( $cancelit ) 

{

header ( "Location: $some_other_script" );

exit;



else 

{

some_other_func ();

}

?>

</BODY>

</HTML>



5.5 常用函數(shù)



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



數(shù)組





array - 生成數(shù)組 

count - 數(shù)組元素個數(shù) 

sort - 數(shù)組排序,另有其他幾種排序函數(shù)可供使用 

list - 列出數(shù)組元素 

each - 返回下一個key/value對 

current - 返回當(dāng)前數(shù)組元素 

next,prev - 傳回當(dāng)前數(shù)組元素前后指針 







日期和時間



checkdate - 驗證日期/時間格式 

date - 生成日期/時間格式 

time - 當(dāng)前時間信息 

strftime - 格式化日期/時間 



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



chdir - 改變目錄 

dir - 目錄類別 

opendir, readdir, closedir - 開啟、讀取、關(guān)閉目錄 

fopen, fclose - 開啟、關(guān)閉文件 

fgets, fgetss - 逐行讀取內(nèi)容 

file - 將整個文件讀入一個數(shù)組變量中 



正則表達(dá)式



ereg - 匹配正則表達(dá)式 

eregi - 大小寫非敏感匹配正則表達(dá)式 

ereg_replace -匹配正則表達(dá)式并替換 

eregi_replace -大小寫非敏感匹配正則表達(dá)式并替換 

split - 依規(guī)則切開字符串并以數(shù)組形勢存儲






字符串



AddSlashes - 加上斜杠后使用字符串 

echo - 輸出一個或多個字符串 

join, implode - 將數(shù)組元素合并為字符串 

htmlentities, htmlspecialchars - 將HTML特殊字符轉(zhuǎn)換為HTML標(biāo)記形式 

split - 依規(guī)則切開字符串并以數(shù)組形勢存儲 

5.6 擴(kuò)展我們的范例主頁



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



實際上就是在footer.inc文件中加上一段代碼。假設(shè)你的web站點(diǎn)中所有后綴為.php3的文件都會出現(xiàn)在導(dǎo)航欄中,以下就是被存為include/navbar.inc的代碼:

<?

/* 輸出該導(dǎo)航欄,鏈接所有除當(dāng)前頁的站內(nèi).php3文件 */

# 讀取目錄

$d = dir("./");

echo "<P ALIGN=\"CENTER\">   \n";

while($entry = $d->read())

{

// 忽略無文件情況

if ( !is_file($entry) )

continue;

/* 將文件名與擴(kuò)展名分開。由于.是正則表達(dá)式特殊字符,應(yīng)該用\引出 */

list($filenm, $fileext) = split("\.",$entry, 2);

// 忽略非.php3文件情況

if( $fileext != "php3" )

continue;

/* 現(xiàn)在我們已經(jīng)把.php3文件都選出,下面搜尋文件中的第一行(標(biāo)題)

類似$title="something";

并將以上標(biāo)題內(nèi)容分開,用作鏈接文字 */

$linknm = "";

$fp=fopen($entry,"r");

while($buffer=fgets($fp, 4096))

{

$buffer = trim($buffer);

// 我們已經(jīng)把每個文件的標(biāo)題放在文件的第一行以便搜索

// 但是當(dāng)你改變變量名稱時可能會帶來大麻煩

if (ereg("title *= *\"", $buffer))

{

/* 我們已經(jīng)取得了標(biāo)題內(nèi)容并可以在此基礎(chǔ)上

進(jìn)行去除空格等處理。

必須以PHP代碼方式處理,比如$title = "blah blah" */

eval($buffer);

// 然后將鏈接文字顯示為標(biāo)題文字

$linknm = $title;

break;

}

}

fclose($fp);

if ( $entry == basename($PHP_SELF) )

echo "$linknm";

else

echo "<A HREF=\"$entry\">$linknm</A>";

echo "   ";

}

$d->close();

echo " </P>\n";

?>



照片收藏夾



我們將引用基于HTTP的驗證、文件系統(tǒng)函數(shù)和文件上傳功能維護(hù)放置圖像文件的目錄。

同時我們需要建立一個可以列出在該目錄下所有照片的頁面。



文件上傳

<?

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\n";

exit;



else 

{

if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$MyPassword ) )

{

// 如果是錯誤的用戶名稱/密碼對,強(qiáng)制再次認(rèn)證

Header("WWW-Authenticate: Basic realm=\"My Realm\"");

Header("HTTP/1.0 401 Unauthorized");

echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.<P>";

exit;



}

if ( $cancelit ) 

{

// 當(dāng)瀏覽者按下"取消"按鈕則轉(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<BR>\n";

echo "<A HREF=\"$HTTP_REFERER\">Go Back</A><BR>\n";

}

$title = "Upload File";

include("include/header.inc");

if (empty($userfile) 
 $userfile=="none") 

{

// 輸出以下表單

?>

<FORM ACTION="<? echo "$PHP_SELF"; ?>" ENCTYPE="multipart/form-data" 
METHOD=POST>

<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="2000000">

<INPUT TYPE="FILE" NAME="userfile" SIZE="24" 
MAXLENGTH="80">

<BR><BR>

<INPUT TYPE="SUBMIT" VALUE="Upload File!" NAME="sendit">

<INPUT TYPE="SUBMIT" VALUE="Cancel" NAME="cancelit"><BR>

</FORM>

<I><FONT SIZE="2">(You may notice a slight delay while 
we upload your file.)</FONT></I>

<?

} else {

if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; 
}

if ( $sendit ) {

do_upload ();



}

include("include/footer.inc");

?>



照片圖庫





<?

include("include/common.inc");

$title = "Gallery";

include("include/header.inc");

?>

<P>

Here are some of our family photos. This PHP script can really

be made better, by splitting into multiple pages.

</P>

<?

$d = dir("photos");

while($entry = $d->read())

{

if (is_file("photos/$entry"))

echo "<IMG SRC=\"photos/$entry\">\n";

}

$d->close();

?>

<?

include("include/footer.inc");

?>



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



標(biāo)簽:5.PHP的其他技巧 

相關(guān)文章

主站蜘蛛池模板: 一级做a爰片久久毛片图片 一级做a爰片久久毛片人呢 | 婷婷月| 色射色| 日韩精品久久久毛片一区二区 | 日本激情一区二区三区 | 五月婷婷综合基地 | 亚洲欧美第一 | 日韩国产欧美 | 亚洲永久免费网站 | 在线观看欧美亚洲 | 性刺激性色爽爱小说 | 四虎永久精品免费观看 | 亚洲主播 | 亚洲经典在线观看 | 亚洲综合15p | 青青草原在线播放 | 奇米色婷婷 | 一二三四手机在线观看视频播放 | 手机看片自拍自拍自拍自视频 | 日韩中文字幕免费 | 日韩香蕉网| 日本三级香港三级国产三级 | 天天拍天天干天天操 | 在线观看国产日韩 | 亚洲国产成人精品久久 | 亚洲欧美日韩在线播放 | 亚洲精品在看在线观看 | 手机天堂 | 日韩大片免费看 | 污污在线观看视频 | 亚洲免费色 | 天堂网在线资源www最新版 | 青久在线| 欧美一区二区三区精品影视 | 天天狠天天透天干天天怕处 | 青青在线观看 | 日韩亚洲欧美一区 | 午夜影院普通用户体验区 | 日韩一区二区久久久久久 | 亚洲综合偷自成人网第页色 | 最新版天堂中文官网 |