首頁 後端開發 php教程 其他功能_PHP教程

其他功能_PHP教程

Jul 21, 2016 pm 04:01 PM
php 中文 功能 可以 影像 處理 操作 產生 使用者

轉自php中文使用者5.其他雜項
5.1 產生影像

PHP可以操作處理影像。如果你已經安裝了GD庫,你甚至可以利用PHP生成映像。

Header("Content-type: image/gif");
$string=implode($argv," ");
$im = imagecreatefromton("images/button1. ");
$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的圖像處理函數部分)
這段程式碼在其他頁面中透過以下標記其他功能_PHP教程調用,然後以上的那段button.php3程式碼取得text值並在另外取得的圖像檔案中加上該值--在以上的程式碼中該圖像檔案是images/button1.gif--最後輸出到瀏覽器。假如你想在表單域中使用圖像按鈕,但是又不希望在每次按鈕上的文字改變後不得不重新生成新的圖像,就可以利用這樣簡單的方法動態生成圖像文件。

5.2 Cookies

PHP支援基於HTTP的cookies。在需要時你可以像使用一般變數一樣方便的使用cookie。 Cookies是瀏覽器保存於客戶端的一些資訊片段,由此你可以知道是否一台特定PC上的任何人都訪問過你的站點,瀏覽者在你的站點上的踪跡等等。使用cookies的典型例子就是對瀏覽者偏好的甄別。 Cookies由函數setcookie()設定。與輸出HTTP標頭的函數header()一樣,setcookie()必須在任何實際內容杯輸出到瀏覽器之前呼叫。以下是一個簡單範例:

if (empty($VisitedBefore))
{
// 如果沒有設定cookie,請為cookie賦上目前時間值
// 函數中的最後一個參數聲明了該cookie保存的時間
// 在這個例子中是1年
// time()函數返回自1970年1月1日以來的以秒數計的時間
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模式運作時不能實現。我們可以使用函數header()發送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 buttonn";
exit;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_US/$PHP. is invalid.";
exit;
}
else
{
echo "Welcome tnc!";
}
?>
事實上再實際引用中不大可能如上面使用代碼段明顯的使用者名稱/密碼對,而是利用資料庫或加密的密碼檔案來訪問它們。

5.4 檔案上傳

你可以利用PHP實作檔案的功能,注意客戶端的瀏覽器應該是Netscape3以上或IE3以上。以下就是此功能的簡單示範:
( upload.html ):


上傳您的檔案


ENCTYPE="multipart/form-data" METHOD=POST>
NAME=“ MAX_FILE_SIZE”VALUE=“2000000”>
NAME=“上傳文件”SIZE=“24”MAXLENGTH=“80”>


NAME=“發送”>
NAME="cancelit">


(您可能會注意到我們上傳檔案時
略有延遲。)




下面是處理上傳的檔案:
(receiver.php3):

函數do_upload ()
{
全域$uploadfile, $uploadfile_size;
全域$local_file, $error_msg;
if ( $uploadfile == "none" )
{
$error_msg = "您沒有指定上傳檔案。 ";
return;
}
if ( $uploadfile_size > 2000000 )
{
$error_msg = "抱歉,您的檔案太大。 }
$the_time = time ();
//你需要對以下目錄有寫入權限
$upload_dir = "/local/uploads ";
$local_file = "$upload_dir/$the_time" ;
if ( file_exists ( '$local_file' ) )
{
$seq = 1;
while ( file_exists ( "$ upload_dir/$the_time$se ) ) { $qse ; }
$local_file = "$upload_dir/$the_time$seq";
};
重新命名( $uploadfile, $local_file );
display_page ();
}
函數庫中_page ( )
{
//這裡是你的頁面內容
}


php3 接收腳本
頭>

if ( $error_msg ) { echo "$error_msg

"; }
if ( $sendit )
{
do_upload ();
}
elseif ( $cancelit )
{
header ( "位置:$some_other_script" );
退出;
}
else
{
some_func) ;
}
?>



5.5 常用函數

我們簡單來看看一些常用的函數。

備份


array - 產生佇列
count - 佇列元素個數
sort - 佇列排序,還有其他排序函數供給使用
list - 佇列佇列元素
each - 傳回下一個鍵/值對
current - 傳回目前佇列元素
next,prev - 傳回目前倉庫元素跟隨指標



跟著指標與時間

checkdate - 驗證日期/時間格式
date - 產生日期/時間格式
time - 目前時間資訊
strftime - 整理日期/時間

目錄、檔案系統

chdir - 改變目錄
dir - 目錄類別
opendir, readdir, closeir - 開啟、讀取、關閉目錄
fopen, fclose - 開啟、關閉檔案
fgets , fgetss - 逐行讀取內容
file - 將整個檔案讀入一個倉儲變數

正規表示式

ereg - 符合正規表示式
eregi - 大小寫非敏感匹配正規表示式
ereg_replace -匹配正規表示式並替換
eregi_replace -大小寫非敏感匹配正則表達式並替換
split - 依規則切開字符串並以隊列高峰存儲



字串

AddSlashes - 加上斜槓後使用字串
echo - 輸出一個或多個字串
join, implode - 將陣列元素合併為字串
htmlentities, htmlspecialchars - 將HTML特殊字元轉換為HTML形式標記
split - 依規則切開字串並以負載平衡
5.6擴充我們的範例主頁

我們將使用上面提到的一些函數和想法為我們的範例主頁添加更多的動態內容。我們可以在每個頁面的頂部加上導航欄,同時使當前頁面的不被連結顯示;同時還可以添加一個使用者驗證表單以便上傳音樂、圖片等文件並自動更新頁面。

導覽列

其實就是在footer.inc檔中加上一段程式碼。假設你的web站點中所有後綴為.php3的檔案都會出現在導覽欄,下面就是被存為include/navbar.inc的程式碼:

/* 輸出該導覽欄,連結除當前頁的站內.php3檔*/
# 讀取目錄
$d = dir ("./");
echo "

; | n";
while($entry = $d->read())
{
//忽略無文件情況
if ( !is_file($entry) )
繼續;
/* 將文件姓名與副檔名分開。由於.是正規表示式特殊字符,應該用引出*/
list($filenm, $fileext) = split(".",$entry, 2);
// 忽略非.php3檔案狀況
if( $fileext != "php3" )
continue;
/* 現在我們已經把.php3檔案都選出,下面搜尋文件中的第一行(標題)
類似$title ="something";
並將以上標題內容分開,用作連結文字*/
$linknm = "";
$fp=fopen($entry,"r");
while ($buffer=fgets($fp, 4096))
{
$buffer = trim($buffer);
// 我們已經把每個文件的標題放在文件的第一行以便搜索
// 但是當你改變變數名稱時可能會帶來*煩
if (ereg("title *= *"", $buffer))
{
/* 我們已經取得了標題內容並且可以在此基礎上
進行去除空格等處理。 / 然後將連結文字顯示為標題文字
$linknm = $title;
break;
}
}
fclose($fp);
if ( $entry == basename ($PHP_SELF) )
echo "$linknm";
else
echo "$linknm";
echo " | ";
}
$d->close();
echo "

n";
?>

照片收藏夾

我們將引用基於HTTP的驗證、檔案系統函數和檔案上傳功能維護放置影像檔案的目錄。

檔案上傳

include("include/common.inc");
// 我們在這裡再做一次使用者驗證
if(!isset($PHP_AUTH_USER ))
{
Header("WWW-Authenticate: Basic realm="$MySiteName"");
Header("HTTP/1.0 401 Unauthorized");
echo "Sororry, you areornot authorized to upload filesn";
exit;
}
else
{
if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$$PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$1 ) ) 🎜>// 如果是錯誤的使用者名稱/密碼對,強制再次認證
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 )
}
}
if ( $cancelit )
}
}
if ( 🎜>> )
{
if / 當瀏覽者按下"取消"按鈕則轉向首頁
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 ( $huserfile == "none" ) { "errorfm> did not specify a file for uploading.";
return;
}
if ( $userfile_size > 2000000 )
{
$error_msg = "Sorry, your is is;
return;
}
// Wherever you have write permission below...
$upload_dir = "photos";
$local_file = "$upload_dir/$user_name";
$local_file = "$upload_dir/$user_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
n";
echo "Go Back
n";
}
$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.
be made better, by splitting into multiple pages.



$d = dir("photos");
while($entry = $d->read())
{
if (is_file("photos/$entry "))
echo "其他功能_PHP教程n";
}
$d->close();
?>

include("include/footer.inc");
?>

另外,你可以在檔案上傳的表單中加上一個輸入元素去描述該上傳的檔案。這個元素將會被儲存在檔案中,然後被以上的照片圖庫的那段程式碼所讀出並顯示出來。

http://www.bkjia.com/PHPjc/316806.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/316806.html
TechArticle轉自php中文使用者5.其他雜項5.1 產生影像PHP可以操作處理影像。如果你已經安裝了GD庫,你甚至可以利用PHP生成映像。 ? Header(Content-type: im...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles