PHP 程式設計/整合方法 (HTML 表單等)
PHP 的使用方式有很多。以下是幾種可以呼叫 PHP 的方法。
表單是迄今為止與 PHP 互動最常見的方式。如前所述,建議您瞭解 HTML,從這裡開始使用它。如果您不瞭解,請前往 HTML 華夏公益教科書 重新整理一下。
要建立表單並將其指向 PHP 文件,請使用 HTML 標籤 <form> 並指定操作,如下所示
<form method="post" action="action.php">
<!-- Your form here -->
</form>
一旦使用者點選“提交”,表單主體將被髮送到 PHP 指令碼進行處理。表單中的所有欄位都儲存在 $_GET 或 $_POST 變數中,具體取決於提交表單時使用的提交方式。
GET 方法和 POST 方法的區別在於 GET 將所有值提交到 URL,而 POST 透過 HTTP 標頭以透明的方式提交值。一般來說,**如果要提交敏感資料,請使用 POST**。POST 表單通常提供更高的安全性。
請記住 $_GET 和 $_POST 是超全域性陣列,這意味著您可以在 PHP 指令碼的任何地方引用它們。例如,您不需要呼叫 *global $_POST* 或 *global $_GET* 來在函式內使用它們。
讓我們看一個如何實現的示例。
<!-- Inside enterlogin.html -->
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="post" action="login.php">
Please log in.<br/>
Username: <input name="username" type="text" /><br />
Password: <input name="password" type="password" /><br/>
<input name="submit" type="submit" />
</form>
</body>
</html>
這個表單看起來像下面這樣
| 請登入。 | |
| 使用者名稱 | ... |
| 密碼 | ... |
| 提交 | |
這是您用於處理它的指令碼 (login.php)
<?php
// Inside enterlogin.html
if($_POST['username'] == "Spoom" && $_POST['password'] == "idontneednostinkingpassword")
{
echo("Welcome, Spoom.");
}
else
{
echo("You're not Spoom!");
}
?>
讓我們仔細看看這個指令碼。
if($_POST['username'] == "Spoom" && $_POST['password'] == "idontneednostinkingpassword")
如您所見,$_POST 是一個數組,其鍵與表單中每個欄位的名稱匹配。為了向後相容,您也可以以數字方式引用它們,但通常不應該這樣做,因為這種方法更清晰。基本上這就是您使用表單將資料提交到 PHP 文件的方式。就這麼簡單。
雖然 PHP 最初是作為一種 Web 語言建立的,但它也可以用於命令列指令碼(儘管並不常見,因為有更簡單的工具,如 bash 指令碼可用)。
您可以像輸出到網頁一樣輸出到控制檯,只是您必須記住 HTML 不會被解析(這是一個很常見的錯誤),並且您必須手動輸出換行符。典型的 hello world 程式看起來像這樣
<?php
print "Hello World!\n";
?>
注意行尾的換行符 - 換行符有助於使您的輸出看起來整潔且易讀。
PHP 有幾個特殊檔案供您讀寫命令列。這些檔案包括 stdin、stdout 和 stderr 檔案。要訪問這些檔案,您可以像訪問實際檔案一樣使用 fopen 開啟它們,只是您使用特殊的 php://“協議”開啟它們,例如
$fp = fopen("php://stdin","r");
要從控制檯讀取,您可以直接從 stdin 讀取。不需要特殊的重定向來寫入控制檯,但如果您想寫入 stderr,您可以開啟它並寫入它
$fp = fopen("php://stderr","w");
牢記如何讀取輸入,我們現在可以構建一個簡單的命令列指令碼,它要求使用者提供使用者名稱和密碼以進行身份驗證。
<?php
$fp = fopen("php://stdin","r");
print "Please authenticate yourself\n";
print "Username: ";
// rtrim to cut off the \n from the shell
$user = rtrim(fgets($fp, 1024));
print "Password: ";
// rtrim to cut off the \n from the shell
$pass = rtrim(fgets($fp, 1024));
if (($user=="someuser") && ($pass=="somepass")) {
print "Good user\n";
// ... do stuff ...
} else die("Bad user\n");
fclose($fp);
?>
請注意,此指令碼僅作為如何將 PHP 用於命令列程式設計的示例 - 這裡包含的程式碼演示了一種非常糟糕的身份驗證使用者或儲存密碼的方法。請記住,您的 PHP 指令碼可以被其他人閱讀!