HTML5中的一些有用的技巧

警告:此文章已經過時,可能無法反應目前的技術狀態。 自動焦點 當頁面加載時,<input autofocus="autofocus" />會將焦點放在指定的HTML元素上。 下載文件 <a href="file.pdf" download="pdf-file">下載</a>將下載指定的文件,並提供文件名。 隱藏元素 儘管將表現放在HTML中並不理想,但<div hidden="hidden"></div>有時會派上用場。 關閉(或打開)拼寫檢查 操作系統設定了拼寫檢查功能,它有時可能會妨礙使用者輸入 - <input type="text" spellcheck="true|false">有助於解決此問題。 自動建議文字輸入控件 <input list="mylist" name="mylist" > <datalist id="mylist"> <option value="CSS"> <option value="HTML"> <option value="PHP"> <option value="Jquery"> <option value="Wordpress"> </datalist>

在 PHP 中處理 HTTP 請求

讓我們看看如何在 PHP 中處理 HTTP 請求。 PHP 默認提供基於文件的路由。您可以創建一個 index.php 文件,並使其對應到 / 路徑。 在一開始時,我們在 Hello World 的示例中就看到了這一點。 同樣地,您可以創建一個 test.php 文件,然後 Apache 會在 /test 路由上自動提供該文件。 $_GET、$_POST 和 $_REQUEST 文件對所有 HTTP 請求進行響應,包括 GET、POST 和其他動詞。 對於任何請求,您可以使用 $_GET 对象來訪問所有查詢字符串數據,它被稱為 超全局 變量,並且在我們的所有 PHP 文件中都可以自動使用。 當然,在 GET 請求中最有用,但也可以在其他請求中將數據作為查詢字符串發送。 對於 POST、PUT 和 DELETE 請求,您更有可能需要以 urlencoded 數據或使用 FormData 對象發送的數據,PHP 使您可以使用 $_POST 來獲取這些數據。 還有一個 $_REQUEST 對象,它包含了 $_GET 和 $_POST 的所有數據。 $_SERVER 我們還有一個叫做 $_SERVER 的超全局變量,您可以使用它來獲取很多有用的信息。 您之前已經看到如何使用 phpinfo()。讓我們再次使用它來查看 $_SERVER 提供的信息。 在 MAMP 的根目錄中的 index....

在任意文件夾運行 Web 伺服器

您常常需要在系統中的特定文件夾中運行一個 Web 伺服器。 您沒有足夠時間來配置像 Apache 或 Nginx 這樣的正確的 Web 伺服器,因為這只是為了幾分鐘或測試您的應用。 那麼,該怎麼辦呢? 根據您喜歡的語言,您可能已經擁有所需的一切。 如果您使用 Node.js,並已經安裝了 npm,請運行以下命令: npm install -g http-server 然後在您想要透過伺服器公開的文件夾中運行 http-server。 默認情況下,它將在端口 8080 上啟動伺服器,但您可以使用 -p 標誌進行更改(運行 http-server --help 可查看更多選項)。 如果您使用 Python 並已安裝,只需運行以下命令: python -m SimpleHTTPServer 8080 (Python 2) 或者 python -m http.server 8080 (Python 3) 即可在本地端口 8080 上啟動一個本地伺服器。 如果您使用 PHP 並且運行一個現代版本,請運行以下命令: php -S localhost:8080

如何使用基於 PHP 的 Cookie 會話

一個非常有趣的 Cookie 用例是基於 Cookie 的會話。 PHP 提供了一種非常簡單的方法來創建基於 Cookie 的會話,即使用 session_start()。 嘗試在 PHP 文件中添加以下代碼: <?php session_start(); ?> 然後在瀏覽器中加載該文件。 您將看到一個名為 PHPSESSID 的新 Cookie,並且已分配了一個值。 這就是會話 ID。它將在每次新請求中被發送,並且 PHP 將使用它來識別會話。 與我們使用 Cookie 的方式類似,現在我們可以使用 $_SESSION 來存儲用戶發送的信息,但這次不是在客戶端存儲。 只有會話 ID 存儲在客戶端。 數據由 PHP 在服務器端存儲。 <?php session_start(); if (isset($_POST['name'])) { $_SESSION['name'] = $_POST['name']; } if (isset($_POST['name'])) { echo '<p>Hello ' . $_POST['name']; } else { if (isset($_SESSION['name'])) { echo '<p>Hello ' . $_SESSION['name']; } } ?> <form method="POST"> <input type="text" name="name" /> <input type="submit" /> </form> 這只適用於簡單的用例,對於大量數據,您將需要使用數據庫。...

如何在 PHP 中使用 Composer 和 Packagist

Composer 是 PHP 的套件管理工具。 它可以讓您輕鬆地將套件安裝到您的專案中。 在您的電腦上安裝它(Linux/Mac 或 Windows),安裝完成後您應該可以在終端機上使用 composer 指令。 現在,在您的專案中可以運行 composer require <lib>,它將會被本地安裝。舉個例子,讓我們安裝 Carbon 套件,這個套件可以幫助我們在 PHP 中處理日期。 composer require nesbot/carbon 這會執行一些動作: 安裝完成後,您將在資料夾中找到一些新的東西,例如 composer.json 至列出依賴項的新配置: { "require": { "nesbot/carbon": "^2.58" } } 還有一個被用來 “鎖住” 套件版本的 composer.lock,以便在其他伺服器上可以複製完全相同的安裝,還有包含剛剛安裝的套件及其相依套件的 vendor 資料夾。 現在,在 index.php 檔案中,我們可以在頂部添加這段程式碼: <?php require 'vendor/autoload.php'; use Carbon\Carbon; 然後,我們就可以使用這個套件了! echo Carbon::now(); 看到了嗎?我們不需要手動從網上下載套件,然後在某個地方安裝它… 一切都快速、方便且有組織性。 require 'vendor/autoload.php'; 這行程式碼實現了自動加載。還記得我們之前談到的 require_once() 和 include_once() 嗎?這解決了所有的問題,我們不需要手動搜索要包含的檔案,只需要使用 use 關鍵字將套件導入我們的程式碼中。

如何在 PHP 中使用 Cookies

Cookies 是瀏覽器的一項功能。 當我們向瀏覽器發送一個響應時,我們可以設置一個 cookie,並且該 cookie 會通過瀏覽器在客戶端保存。 然後,瀏覽器發送的每個請求都會將 cookie 返回給我們。 我們可以使用 cookie 來做很多事情,它們主要用於在不需要登錄服務的情況下創建個性化體驗。 需要注意的是,cookie 是特定於域名的,所以我們只能讀取我們設置在應用程序當前域名上的 cookie,不能讀取其他應用程序的 cookie。 但是 JavaScript 可以讀取 cookie(除非它們是HttpOnly cookies,但這樣我們就要進入一個兔子洞了),所以 cookie 不應該存儲任何敏感信息。 我們可以使用 PHP 通過引用 $\_COOKIE 超全局變量來讀取 cookie 的值: if (isset($\_COOKIE['name'])) { $name = $\_COOKIE['name']; } setcookie() 函數允許您設置一個 cookie: setcookie('name', 'Flavio'); 我們可以添加第三個參數來指定 cookie 的過期時間。如果省略,則 cookie 在會話結束時(或瀏覽器關閉時)過期。 使用以下代碼使 cookie 在 7 天後過期: setcookie('name', 'Flavio', time() + 3600 \* 24 \* 7); 我們在 cookie 中只能存儲有限的數據量,而且用戶在清除瀏覽器數據時可以在客戶端清除 cookie。 同時,cookie 是特定於瀏覽器/設備的,所以我們可以在用戶的瀏覽器中設置一個 cookie,但如果他們更換了瀏覽器或設備,該 cookie 將不可用。...

如何在 PHP 中使用 HTTP 標頭

PHP 通過 header() 函數讓我們能夠設置響應的 HTTP 標頭。 HTTP 標頭 是一種向瀏覽器發送信息的方式。 我們可以將頁面設置為生成 500 內部服務器錯誤: <?php header('HTTP/1.1 500 Internal Server Error'); ?> 現在,如果你使用 瀏覽器開發者工具 打開頁面,你應該能夠看到狀態: 我們可以設置響應的 content/type: header('Content-Type: text/json'); 我們可以強制執行 301 重定向: header('HTTP/1.1 301 Moved Permanently'); header('Location: https://flaviocopes.com'); 我們可以使用標頭告訴瀏覽器“緩存此頁面”、“不要緩存此頁面”,以及更多其他操作!

如何在Laravel中使用Blade模板

本教程是《Laravel手冊》的一部分。從https://flaviocopes.com/access/ 下載手冊。 Laravel的視圖文件以 .blade.php 為結尾,並且是 Blade 模板。 Blade 是一個服務端模板語言。 在其基本形式下,它就是 HTML。正如你所看到的,上面我使用的這些模板只包含 HTML。 但你可以在Blade模板中做很多有趣的事情:插入數據、添加條件語句、使用循環、根據用戶是否已驗證顯示不同內容,或根據環境變量(例如生產或開發環境)顯示不同信息,等等。 以下是Blade的入門教程(更多資訊,我強烈推薦參考 官方Blade指南)。 在路由定義中,你可以將數據傳遞給Blade模板: Route::get('/test', function () { return view('test', ['name' => 'Flavio']); }); 然後在模板中使用它: <h1>{{ $name }}</h1> {{ }} 語法允許你將任何數據添加到模板中,它會自動進行HTML轉義處理。 在其中,你還可以運行任何自己喜歡的PHP function,Blade會顯示該函數的返回值。 使用 {{-- --}} 注釋: {{-- <h1>test</h1> --}} 條件語句可使用 @if 、@else 、@endif 達到: @if ($name === 'Flavio') <h1>Yo {{ $name }}</h1> @else <h1>Good morning {{ $name }}</h1> @endif 還可以使用 @elseif 和 @unless 做更複雜的條件結構。 我們還有 @switch ,可以根据變量的結果來顯示不同的內容。...

如何在PHP中使用表單

表單是Web平台允許用戶與頁面互動並將數據發送到服務器的方式。 以下是HTML中的一個簡單表單: <form> <input type="text" name="name" /> <input type="submit" /> </form> 你可以將其放置在名為index.php的文件中,就像名為index.html一樣。 PHP文件中允許你在其中編寫HTML,並使用一些“PHP填料”(即<?php ?>)來與客戶端進行通信。有時,PHP部分占據了整個頁面,這就是通過PHP生成所有HTML的方式-與我們現在所執行的相反。 所以,我們有這個生成基於純HTML的表單的index.php文件: 單擊提交按鈕將向相同的URL發送一個GET請求,通過查詢字符串將數據發送出去,請注意URL已更改為localhost:8888/?name=test: 我們可以添加一些代碼來檢查該參數是否設置,使用isset()函數: <form> <input type="text" name="name" /> <input type="submit" /> </form> <?php if (isset($_GET['name'])) { echo '<p>The name is ' . $_GET['name']; } ?> 看到了嗎?我們可以通過$_GET從GET請求的查詢字符串中獲取信息。 然而,你通常會使用表單執行POST請求: <form **method="POST"**> <input type="text" name="name" /> <input type="submit" /> </form> <?php if (isset($_POST['name'])) { echo '<p>The name is ' . $_POST['name']; } ?> 看,我們獲得了相同的信息,但URL未更改,表單信息未附加到URL上。 這是因為我們使用POST請求,這種方式將數據通過urlencoded數據發送到服務器。 正如之前提到的,PHP仍然會提供index.php文件,因為我們仍然向與表單相同的URL發送數據。 我們正在混合了很多代碼,我們可以將表單請求處理程序與生成表單的代碼分開。 因此,在index.php中,我們可以有以下內容: <form **method="POST" action="/post....

如何在PHP中處理文件/文件夾

PHP是一種服務器端語言,提供了訪問文件系統的便利工具。 您可以使用 file_exists() 檢查文件是否存在: file_exists('test.txt') //true 使用 filesize() 獲取文件的大小: filesize('test.txt') 您可以使用 fopen() 打開文件。這裡我們以只讀模式打開 test.txt 文件,並在 $file 中獲取我們稱之為文件描述符: $file = fopen('test.txt', 'r') 我們可以通過調用 fclose($fd) 來終止文件訪問。 將文件內容讀入變數: $file = fopen('test.txt', 'r') fread($file, filesize('test.txt')); //或者 while (!feof($file)) { $data .= fgets($file, 5000); } feof() 檢查我們是否已經達到文件末尾,而 fgets 每次讀取 5000 個字節。 您也可以使用 fgets() 逐行讀取文件: $file = fopen('test.txt', 'r') while (!feof($file)) { $line = fgets($file); //做一些操作 } 要寫入文件,您必須首先以寫入模式打開文件,然後使用 fwrite(): $data = 'test'; $file = fopen('test.txt', 'w') fwrite($file, $data); fclose($file); 我們可以使用 unlink() 刪除文件:...