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 脚本可以被其他人阅读!