跳转到内容

PHP 编程/集成方法(HTML 表单等)

来自维基教科书,开放世界中的开放书籍

集成 PHP

[编辑 | 编辑源代码]

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 $_POSTglobal $_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 手册:处理表单

从命令行使用 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 脚本是其他人可以读取的!

更多信息

[编辑 | 编辑源代码]


华夏公益教科书