W3C之PHP提高篇
PHP 的 date() 函式用於格式化時間或日期。
語法
date(format,timestamp)
PHP 日期 - 格式化日期
date() 函式的第一個引數規定了如何格式化日期/時間。它使用字母來表示日期和時間的格式。這裡列出了一些可用的字母:
- d - 月中的天 (01-31)
- m - 當前月,以數字計 (01-12)
- Y - 當前的年(四位數)
<?php
echo date("Y/m/d");
echo "<br />";
echo date("Y.m.d");
echo "<br />";
echo date("Y-m-d");
?>
以上程式碼的輸出類似這樣:
2006/07/11
2006.07.11
2006-07-11
PHP 日期 - 新增時間戳
語法
mktime(hour,minute,second,month,day,year,is_dst)
如需獲得某一天的時間戳,我們只要設定 mktime() 函式的 day 引數就可以了:
<?php $tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y")); echo "明天是 ".date("Y/m/d", $tomorrow); ?>
以上程式碼的輸出類似這樣:
明天是 2006/07/12
Include檔案:
伺服器端包含 (SSI) 用於建立可在多個頁面重複使用的函式、頁首、頁尾或元素。
include 和 require 語句用於在執行流中向其他檔案插入有用的的程式碼。
include 和 require 很相似,除了在錯誤處理方面的差異:
- require 會產生致命錯誤 (E_COMPILE_ERROR),並停止指令碼
- include 只會產生警告 (E_WARNING),指令碼將繼續
否則,在框架、CMS 或者複雜的 PHP 應用程式程式設計中,請始終使用 require 向執行流引用關鍵檔案。這有助於提高應用程式的安全性和完整性。
基礎例項
假設您有一個標準的頁標頭檔案,名為 "header.php"。如需在頁面中引用這個頁標頭檔案,請使用 include/require:
<html>
<body>
<?php include 'header.php'; ?>
<h1>Welcome to my home page!</h1>
<p>Some text.</p>
</body>
</html>
例子 2
假設我們有一個在所有頁面中使用的標準選單檔案:
"menu.php": echo '<a href="/default.php">Home</a> <a href="/tutorials.php">Tutorials</a> <a href="/references.php">References</a> <a href="/examples.php">Examples</a> <a href="/about.php">About Us</a> <a href="/contact.php">Contact Us</a>';
網站中的所有頁面均應引用該選單檔案。這是具體的做法:
<html>
<body>
<div class="leftmenu">
<?php include 'menu.php'; ?>
</div>
<h1>Welcome to my home page.</h1>
<p>Some text.</p>
</body>
</html>
例子 3
假設我們有一個定義變數的包含檔案 ("vars.php"):
<?php $color='red'; $car='BMW'; ?>
這些變數可用在呼叫檔案中:
<html>
<body>
<h1>Welcome to my home page.</h1>
<?php include 'vars.php';
echo "I have a $color $car"; // I have a red BMW
?>
</body>
</html>
檔案處理
fopen() 函式用於在 PHP 中開啟檔案。此函式的第一個引數含有要開啟的檔案的名稱,第二個引數規定了使用哪種模式來開啟檔案:
<?php $file=fopen("welcome.txt","r"); ?>
模式 | 描述 |
---|---|
r | 只讀。在檔案的開頭開始。 |
r+ | 讀/寫。在檔案的開頭開始。 |
w | 只寫。開啟並清空檔案的內容;如果檔案不存在,則建立新檔案。 |
w+ | 讀/寫。開啟並清空檔案的內容;如果檔案不存在,則建立新檔案。 |
a | 追加。開啟並向檔案檔案的末端進行寫操作,如果檔案不存在,則建立新檔案。 |
a+ | 讀/追加。通過向檔案末端寫內容,來保持檔案內容。 |
x | 只寫。建立新檔案。如果檔案已存在,則返回 FALSE。 |
x+ |
讀/寫。建立新檔案。如果檔案已存在,則返回 FALSE 和一個錯誤。 註釋:如果 fopen() 無法開啟指定檔案,則返回 0 (false)。 |
例子
如果 fopen() 不能開啟指定的檔案,下面的例子會生成一段訊息:
<?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?>
關閉檔案
fclose() 函式用於關閉開啟的檔案。
<?php $file = fopen("test.txt","r"); //some code to be executed fclose($file); ?>
檢測 End-of-file
feof() 函式檢測是否已達到檔案的末端 (EOF)。
if (feof($file)) echo "End of file";
逐行讀取檔案
fgets() 函式用於從檔案中逐行讀取檔案。
註釋:在呼叫該函式之後,檔案指標會移動到下一行。
例子
下面的例子逐行讀取檔案,直到檔案末端為止:
<?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>
逐字元讀取檔案
fgetc() 函式用於從檔案逐字元地讀取檔案
註釋:在呼叫該函式之後,檔案指標會移動到下一個字元。
例子
下面的例子逐字元地讀取檔案,直到檔案末端為止:
<?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); while (!feof($file)) { echo fgetc($file); } fclose($file); ?>
通過 PHP,可以把檔案上傳到伺服器。
這個供上傳檔案的 HTML 表單:
<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
建立上傳指令碼
"upload_file.php" 檔案含有供上傳檔案的程式碼:
<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?>
通過使用 PHP 的全域性陣列 $_FILES,你可以從客戶計算機向遠端伺服器上傳檔案。
第一個引數是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣:
- $_FILES["file"]["name"] - 被上傳檔案的名稱
- $_FILES["file"]["type"] - 被上傳檔案的型別
- $_FILES["file"]["size"] - 被上傳檔案的大小,以位元組計
- $_FILES["file"]["tmp_name"] - 儲存在伺服器的檔案的臨時副本的名稱
- $_FILES["file"]["error"] - 由檔案上傳導致的錯誤程式碼
這是一種非常簡單檔案上傳方式。基於安全方面的考慮,您應當增加有關什麼使用者有權上傳檔案的限制。
儲存被上傳的檔案
上面的例子在伺服器的 PHP 臨時資料夾建立了一個被上傳檔案的臨時副本。
這個臨時的複製檔案會在指令碼結束時消失。要儲存被上傳的檔案,我們需要把它拷貝到另外的位置:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>
上面的指令碼檢測了是否已存在此檔案,如果不存在,則把檔案拷貝到指定的資料夾。
cookie 常用於識別使用者。cookie
常用於識別使用者。cookie 是伺服器留在使用者計算機中的小檔案。每當相同的計算機通過瀏覽器請求頁面時,它同時會傳送 cookie。通過 PHP,您能夠建立並取回 cookie 的值。
建立 cookie
setcookie() 函式用於設定 cookie。
註釋:setcookie() 函式必須位於 <html> 標籤之前
例子
在下面的例子中,我們將建立名為 "user" 的 cookie,把為它賦值 "Alex Porter"。我們也規定了此 cookie 在一小時後過期:
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
<html>
<body>
</body>
</html>
註釋:在傳送
cookie 時,cookie 的值會自動進行 URL 編碼,在取回時進行自動解碼(為防止 URL 編碼,請使用 setrawcookie() 取而代之)。
取回 Cookie 的值
PHP 的 $_COOKIE 變數用於取回 cookie 的值。
在下面的例子中,我們取回了名為 "user" 的 cookie 的值,並把它顯示在了頁面上:
<?php // Print a cookie echo $_COOKIE["user"]; // A way to view all cookies print_r($_COOKIE); ?>
在下面的例子中,我們使用 isset() 函式來確認是否已設定了 cookie:
<html> <body> <?php if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br />"; else echo "Welcome guest!<br />"; ?> </body> </html>
刪除 cookie
當刪除 cookie 時,您應當使過期日期變更為過去的時間點。
刪除的例子:
<?php // set the expiration date to one hour ago setcookie("user", "", time()-3600); ?>PHP session 變數用於儲存有關使用者會話的資訊,或更改使用者會話的設定。Session 變數儲存的資訊是單一使用者的,並且可供應用程式中的所有頁面使用。
通過在伺服器上儲存使用者資訊以便隨後使用,PHP session 解決了這個問題(比如使用者名稱稱、購買商品等)。不過,會話資訊是臨時的,在使用者離開網站後將被刪除。如果您需要永久儲存資訊,可以把資料儲存在資料庫中。
Session 的工作機制是:為每個訪問者建立一個唯一的 id (UID),並基於這個 UID 來儲存變數。UID 儲存在 cookie 中,亦或通過 URL 進行傳導。
開始 PHP Session
在您把使用者資訊儲存到 PHP session 中之前,首先必須啟動會話。
註釋:session_start() 函式必須位於 <html> 標籤之前:
<?php session_start(); ?> <html> <body> </body> </html>上面的程式碼會向伺服器註冊使用者的會話,以便您可以開始儲存使用者資訊,同時會為使用者會話分配一個 UID。
輸出:
Pageviews=1
在下面的例子中,我們建立了一個簡單的 page-view 計數器。isset() 函式檢測是否已設定 "views" 變數。如果已設定 "views" 變數,我們累加計數器。如果 "views" 不存在,則我們建立 "views" 變數,並把它設定為 1:
<?php session_start(); if(isset($_SESSION['views'])) $_SESSION['views']=$_SESSION['views']+1; else $_SESSION['views']=1; echo "Views=". $_SESSION['views']; ?>
終結 Session
如果您希望刪除某些 session 資料,可以使用 unset() 或 session_destroy() 函式。
unset() 函式用於釋放指定的 session 變數:
<?php unset($_SESSION['views']); ?>
您也可以通過 session_destroy() 函式徹底終結 session:
<?php session_destroy(); ?>
註釋:session_destroy() 將重置 session,您將失去所有已儲存的 session 資料。
PHP mail() 函式
PHP mail() 函式用於從指令碼中傳送電子郵件。
語法
mail(to,subject,message,headers,parameters)
引數 | 描述 |
---|---|
to | 必需。規定 email 接收者。 |
subject | 必需。規定 email 的主題。註釋:該引數不能包含任何新行字元。 |
message | 必需。定義要傳送的訊息。應使用 LF (\n) 來分隔各行。 |
headers |
可選。規定附加的標題,比如 From、Cc 以及 Bcc。 應當使用 CRLF (\r\n) 分隔附加的標題。 |
parameters |
可選。對郵件傳送程式規定額外的引數。 |
PHP 安全的E-mail(略)
PHP 錯誤處理
三種不同的錯誤處理方法:
- 簡單的 "die()" 語句
- 自定義錯誤和錯誤觸發器
- 錯誤報告
基本的錯誤處理:使用 die() 函式
為了避免使用者獲得類似檔案未找到的錯誤訊息,我們在訪問檔案之前檢測該檔案是否存在:
<?php if(!file_exists("welcome.txt")) { die("File not found"); } else { $file=fopen("welcome.txt","r"); } ?>
建立自定義錯誤處理器
待。。。。相關文章
- W3C之PHP基礎篇PHP
- ElasticSearch(提高篇)Elasticsearch
- PHP 面試詳解之技術篇PHP面試
- PHP基礎之物件導向篇PHP物件
- 提高開發效率之VS Code基礎配置篇
- php之ZendFramewor篇(四)常見錯誤資訊PHP
- W3C 釋出 EME 標準,EFF 退出 W3C
- 如何提高前端效能——字型篇前端
- Java提高篇(1)封裝Java封裝
- AC自動機 提高篇
- 飛機的 PHP 學習筆記之 Web 篇PHP筆記Web
- 掌握提高 Web 應用的效能的方法 之 優化 PHP 和 LaravelWeb優化PHPLaravel
- 玩轉 PHP 網路程式設計之原理篇PHP程式設計
- ■ 例項學習 PHP 之表單處理篇 (轉)PHP
- 提高php程式碼質量 36計PHP
- 飛機的 PHP 學習筆記之資料庫篇PHP筆記資料庫
- php之ZendFramewor篇(五)元件:Zend_Controller基礎PHP元件Controller
- php之ZendFramewor篇(九)元件:Zend_Controller基礎PHP元件Controller
- 提高程式碼質量-工具篇
- Oracle調優(入門及提高篇)Oracle
- 提高PHP程式碼質量的36計PHP
- 提高 PHP 程式碼質量的 36 計PHP
- W3C近期要聞:W3C戰略重點報告新版釋出
- PHPer面試指南-PHP 篇PHP面試
- PHP常用函式篇PHP函式
- PHPer 面試指南-PHP 篇PHP面試
- 飛機的 PHP 學習筆記之語言基礎篇PHP筆記
- 飛機的 PHP 學習筆記之應用技術篇PHP筆記
- 畫江湖之 docker 篇 【lnmp 下如何安裝 PHP 擴充套件】DockerLNMPPHP套件
- 畫江湖之 docker 篇 [lnmp 下如何安裝 PHP 擴充套件]DockerLNMPPHP套件
- 搜尋引擎關鍵詞劫持之php篇(原始碼與分析)PHP原始碼
- W3C 和 MDN 簡介
- PHP 轉 JAVA 篇 小插曲(環境篇)PHPJava
- PHP 轉 GO 篇 小插曲(環境篇)PHPGo
- MySQL表的增刪查改(提高篇)MySql
- wepack——提高工程化(原理篇)
- webpack ——提高工程化(實踐篇)Web
- 提高WhatsApp營銷效果(1):文案篇APP