[php学习资料] PHP完全自学手册(文档教程)

[复制链接]
 楼主| 发表于 2019-11-19 15:53:27 | 显示全部楼层
PHP 表单和用户输入
PHP 中的 $_GET 和 $_POST 变量用于检索表单中的信息,比如用户输入。

PHP 表单处理
有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。
实例
下面的实例包含了一个 HTML 表单,带有两个输入框和一个提交按钮。
form.html 文件代码:
  1. <pre><html><head><meta charset="utf-8"><title>阿里云大学(runoob.com)</title></head><body>
  2. <form action="welcome.php" method="post">名字: <input type="text" name="fname">年龄: <input type="text" name="age"><input type="submit" value="提交"></form>
  3. </body></html>
复制代码

当用户填写完上面的表单并点击提交按钮时,表单的数据会被送往名为 "welcome.php" 的 PHP 文件:
welcome.php 文件代码:
  1. <pre>欢迎 <?php echo $_POST["fname"]; ?>!<br>你的年龄是 <?php echo $_POST["age"]; ?>  岁。
复制代码



我们将在下一章中讲解 PHP 中的 $_GET 和 $_POST 变量。

PHP 获取下拉菜单的数据PHP 下拉菜单单选
以下实例我们设置了下拉菜单三个选项,表单使用 GET 方式获取数据,action 属性值为空表示提交到当前脚本,我们可以通过 select 的 name 属性获取下拉菜单的值:
php_form_select.php 文件代码:
  1. <?php$q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';if($q) {
  2.         if($q =='RUNOOB') {
  3.                 echo '阿里云大学<br>http://www.runoob.com';        } else if($q =='GOOGLE') {
  4.                 echo 'Google 搜索<br>http://www.google.com';        } else if($q =='TAOBAO') {
  5.                 echo '淘宝<br>http://www.taobao.com';        }} else {?>
  6. <form action="" method="get">
  7.     <select name="q">
  8.     <option value="">选择一个站点:</option>
  9.     <option value="RUNOOB">Runoob</option>
  10.     <option value="GOOGLE">Google</option>
  11.     <option value="TAOBAO">Taobao</option>
  12.     </select>
  13.     <input type="submit" value="提交">
  14.     </form>
  15. <?php}?>
复制代码


PHP 下拉菜单多选
如果下拉菜单是多选的( multiple="multiple"),我们可以通过将设置 select name="q[]" 以数组的方式获取,以下使用 POST 方式提交,代码如下所示:
  1. php_form_select_mul.php 文件代码:
  2. <?php$q = isset($_POST['q'])? $_POST['q'] : '';if(is_array($q)) {
  3.     $sites = array(
  4.             'RUNOOB' => '阿里云大学: http://www.runoob.com',            'GOOGLE' => 'Google 搜索: http://www.google.com',            'TAOBAO' => '淘宝: http://www.taobao.com',    );    foreach($q as $val) {
  5.         // PHP_EOL 为常量,用于换行
  6.         echo $sites[$val] . PHP_EOL;    }
  7.       } else {?>
  8. <form action="" method="post">
  9.     <select multiple="multiple" name="q[]">
  10.     <option value="">选择一个站点:</option>
  11.     <option value="RUNOOB">Runoob</option>
  12.     <option value="GOOGLE">Google</option>
  13.     <option value="TAOBAO">Taobao</option>
  14.     </select>
  15.     <input type="submit" value="提交">
  16.     </form>
  17. <?php}?>
复制代码



单选按钮表单
PHP 单选按钮表单中 name 属性的值是一致的,value 值是不同的,代码如下所示:
php_form_radio.php 文件代码:
  1. <?php
  2. $q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
  3. if($q) {
  4.         if($q =='RUNOOB') {
  5.                 echo '阿里云大学<br>http://www.runoob.com';
  6.         } else if($q =='GOOGLE') {
  7.                 echo 'Google 搜索<br>http://www.google.com';
  8.         } else if($q =='TAOBAO') {
  9.                 echo '淘宝<br>http://www.taobao.com';
  10.         }
  11. } else {
  12. ?><form action="" method="get">
  13.     <input type="radio" name="q" value="RUNOOB" />Runoob
  14.     <input type="radio" name="q" value="GOOGLE" />Google
  15.     <input type="radio" name="q" value="TAOBAO" />Taobao
  16.     <input type="submit" value="提交">
  17. </form>
  18. <?php
  19. }
  20. ?>
复制代码



checkbox 复选框
PHP checkbox 复选框可以选择多个值:
php_form_select_checkbox.php 文件代码:
  1. <?php$q = isset($_POST['q'])? $_POST['q'] : '';if(is_array($q)) {
  2.     $sites = array(
  3.             'RUNOOB' => '阿里云大学: http://www.runoob.com',            'GOOGLE' => 'Google 搜索: http://www.google.com',            'TAOBAO' => '淘宝: http://www.taobao.com',    );    foreach($q as $val) {
  4.         // PHP_EOL 为常量,用于换行
  5.         echo $sites[$val] . PHP_EOL;    }
  6.       } else {
  7. ?><form action="" method="post">
  8.     <input type="checkbox" name="q[]" value="RUNOOB"> Runoob<br>
  9.     <input type="checkbox" name="q[]" value="GOOGLE"> Google<br>
  10.     <input type="checkbox" name="q[]" value="TAOBAO"> Taobao<br>
  11.     <input type="submit" value="提交"></form>
  12. <?php}?>
复制代码



表单验证
应该在任何可能的时候对用户输入进行验证(通过客户端脚本)。浏览器验证速度更快,并且可以减轻服务器的负载。
如果用户输入需要插入数据库,您应该考虑使用服务器验证。在服务器验证表单的一种好的方式是,把表单传给它自己,而不是跳转到不同的页面。这样用户就可以在同一张表单页面得到错误信息。用户也就更容易发现错误了。

腾讯云
回复

使用道具 举报

 楼主| 发表于 2019-11-19 15:56:21 | 显示全部楼层
PHP 表单验证
本章节我们将介绍如何使用PHP验证客户端提交的表单数据。

PHP 表单验证
在处理PHP表单时我们需要考虑安全性。
本章节我们将展示PHP表单数据安全处理,为了防止黑客及垃圾信息我们需要对表单进行数据安全验证。
在本章节介绍的HTML表单中包含以下输入字段: 必须与可选文本字段,单选按钮,及提交按钮:


上述表单验证规则如下:
字段
验证规则
名字必须。 +只能包含字母和空格
E-mail必须。 + 必须是一个有效的电子邮件地址(包含'@'和'.')
网址必须。如果存在,它必须包含一个有效的URL
备注必须。 多行输入字段(文本域)
性别必须。 必须选择一个
首先让我们先看看纯HTML的表单代码:

文本字段
"名字", "E-mail", 及"网址"字段为文本输入元素,"备注"字段是 textarea。HTML代码如下所示:
  1. “名字”: <input type="text" name="name">E-mail: <input type="text" name="email">网址: <input type="text" name="website">备注: <textarea name="comment" rows="5" cols="40"></textarea>
复制代码


单选按钮
"性别"字段是单选按钮,HTML代码如下所示:
  1. 性别:<input type="radio" name="gender" value="female">女<input type="radio" name="gender" value="male">男
复制代码


表单元素
HTML 表单代码如下所示:
  1. <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
复制代码

该表单使用 method="post" 方法来提交数据。
什么是 $_SERVER["PHP_SELF"] 变量?

$_SERVER["PHP_SELF"]是超级全局变量,返回当前正在执行脚本的文件名,与 document root相关。
所以, $_SERVER["PHP_SELF"] 会发送表单数据到当前页面,而不是跳转到不同的页面。
什么是 htmlspecialchars()方法?

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
  • & (和号) 成为 &amp;
  • " (双引号) 成为 &quot;
  • ' (单引号) 成为 &#039;
  • < (小于) 成为 &lt;
  • > (大于) 成为 &gt;



PHP表单中需引起注重的地方?
$_SERVER["PHP_SELF"] 变量有可能会被黑客使用!
当黑客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。
XSS又叫 CSS (Cross-Site Script) ,跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
指定以下表单文件名为 "test_form.php":
  1. <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
复制代码

现在,我们使用URL来指定提交地址 "test_form.php",以上代码修改为如下所示:
  1. <form method="post" action="test_form.php">
复制代码

这样做就很好了。
但是,考虑到用户会在浏览器地址栏中输入以下地址:
  1. http://www.runoob.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
复制代码

以上的 URL 中,将被解析为如下代码并执行:
  1. <form method="post" action="test_form.php/"><script>alert('hacked')</script>
复制代码

代码中添加了 script 标签,并添加了alert命令。 当页面载入时会执行该Javascript代码(用户会看到弹出框)。 这仅仅只是一个简单的实例来说明PHP_SELF变量会被黑客利用。
请注意, 任何JavaScript代码可以添加在<script>标签中! 黑客可以利用这点重定向页面到另外一台服务器的页面上,页面 代码文件中可以保护恶意代码,代码可以修改全局变量或者获取用户的表单数据。

如何避免 $_SERVER["PHP_SELF"] 被利用?
$_SERVER["PHP_SELF"] 可以通过 htmlspecialchars() 函数来避免被利用。
form 代码如下所示:
  1. <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
复制代码

htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:
  1. <form method="post" action="test_form.php/"><script>alert('hacked')</script>">
复制代码

尝试该漏洞失败!

使用 PHP 验证表单数据
首先我们对用户所有提交的数据都通过 PHP 的 htmlspecialchars() 函数处理。
当我们使用 htmlspecialchars() 函数时,在用户尝试提交以下文本域:
  1. <script>location.href('http://www.runoob.com')</script>
复制代码

该代码将不会被执行,因为它会被保存为HTML转义代码,如下所示:
  1. <script>location.href('http://www.runoob.com')</script>
复制代码

以上代码是安全的,可以正常在页面显示或者插入邮件中。
当用户提交表单时,我们将做以下两件事情,:
  • 使用 PHP trim() 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。
  • 使用PHP stripslashes()函数去除用户输入数据中的反斜杠 (\)

接下来让我们将这些过滤的函数写在一个我们自己定义的函数中,这样可以大大提高代码的复用性。
将函数命名为 test_input()。
现在,我们可以通过test_input()函数来检测 $_POST 中的所有变量, 脚本代码如下所示:
实例
  1. <?php
  2. // 定义变量并默认设置为空值
  3. $name = $email = $gender = $comment = $website = "";
  4. if ($_SERVER["REQUEST_METHOD"] == "POST")
  5. {
  6.   $name = test_input($_POST["name"]);
  7.   $email = test_input($_POST["email"]);
  8.   $website = test_input($_POST["website"]);
  9.   $comment = test_input($_POST["comment"]);
  10.   $gender = test_input($_POST["gender"]);
  11. }
  12. function test_input($data)
  13. {
  14.   $data = trim($data);
  15.   $data = stripslashes($data);
  16.   $data = htmlspecialchars($data);
  17.   return $data;
  18. }
  19. ?>
复制代码


运行结果:
PHP 表单验证实例名字:  

E-mail:  

网址:  

备注:

性别: 女 男

您输入的内容是:
注意我们在执行以上脚本时,会通过$_SERVER["REQUEST_METHOD"]来检测表单是否被提交 。如果 REQUEST_METHOD 是 POST, 表单将被提交 - 数据将被验证。如果表单未提交将跳过验证并显示空白。
在以上实例中使用输入项都是可选的,即使用户不输入任何数据也可以正常显示。
在接下来的章节中我们将介绍如何对用户输入的数据进行验证。


回复

使用道具 举报

 楼主| 发表于 2019-11-19 15:57:33 | 显示全部楼层
PHP 表单 - 必需字段
本章节我们将介绍如何设置表单必需字段及错误信息。

PHP - 必需字段
在上一章节我们已经介绍了表的验证规则,我们可以看到"名字", "E-mail", 和 "性别" 字段是必需的,各字段不能为空。
字段
验证规则
名字必需。 + 只能包含字母和空格
E-mail必需。 + 必需包含一个有效的电子邮件地址(包含"@"和".")
网址可选。 如果存在,它必需包含一个有效的URL
备注可选。多行字段(文本域)。
性别必需。必需选择一个。
如果在前面的章节中,所有输入字段都是可选的。
在以下代码中我们加入了一些新的变量: $nameErr, $emailErr, $genderErr, 和 $websiteErr.。这些错误变量将显示在必需字段上。 我们还为每个$_POST变量增加了一个if else语句。 这些语句将检查 $_POST 变量是 否为空(使用php的 empty() 函数)。如果为空,将显示对应的错误信息。 如果不为空,数据将传递给test_input() 函数:
  1. <?php// 定义变量并默认设为空值$nameErr = $emailErr = $genderErr = $websiteErr = "";$name = $email = $gender = $comment = $website = "";if ($_SERVER["REQUEST_METHOD"] == "POST") {
  2.   if (empty($_POST["name"])) {
  3.     $nameErr = "名字是必需的。";
  4.   } else {
  5.     $name = test_input($_POST["name"]);
  6.   }

  7.   if (empty($_POST["email"])) {
  8.     $emailErr = "邮箱是必需的。";
  9.   } else {
  10.     $email = test_input($_POST["email"]);
  11.   }

  12.   if (empty($_POST["website"])) {
  13.     $website = "";
  14.   } else {
  15.     $website = test_input($_POST["website"]);
  16.   }

  17.   if (empty($_POST["comment"])) {
  18.     $comment = "";
  19.   } else {
  20.     $comment = test_input($_POST["comment"]);
  21.   }

  22.   if (empty($_POST["gender"])) {
  23.     $genderErr = "性别是必需的。";
  24.   } else {
  25.     $gender = test_input($_POST["gender"]);
  26.   }}?>
复制代码


PHP - 显示错误信息
在以下的HTML实例表单中,我们为每个字段中添加了一些脚本, 各个脚本会在信息输入错误时显示错误信息。(如果用户未填写信息就提交表单则会输出错误信息):
  1. <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  2.    名字: <input type="text" name="name">
  3.    <span class="error">* <?php echo $nameErr;?></span>
  4.    <br><br>
  5.    E-mail: <input type="text" name="email">
  6.    <span class="error">* <?php echo $emailErr;?></span>
  7.    <br><br>
  8.    网址: <input type="text" name="website">
  9.    <span class="error"><?php echo $websiteErr;?></span>
  10.    <br><br>
  11.    备注: <textarea name="comment" rows="5" cols="40"></textarea>
  12.    <br><br>
  13.    性别:   <input type="radio" name="gender" value="female">女   <input type="radio" name="gender" value="male">男   <span class="error">* <?php echo $genderErr;?></span>
  14.    <br><br>
  15.    <input type="submit" name="submit" value="Submit"> </form>
复制代码



回复

使用道具 举报

 楼主| 发表于 2019-11-19 15:58:45 | 显示全部楼层
PHP 表单 - 验证邮件和URL
本章节我们将介绍如何验证 names(名称), e-mails(邮件), 和 URLs。

PHP - 验证名称
以下代码将通过简单的方式来检测 name 字段是否包含字母和空格,如果 name 字段值不合法,将输出错误信息:
  1. $name = test_input($_POST["name"]);if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  2.   $nameErr = "只允许字母和空格"; }
复制代码

preg_match — 进行正则表达式匹配。

语法:
int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] )

在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。如果提供了 matches ,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。


PHP - 验证邮件
以下代码将通过简单的方式来检测 e-mail 地址是否合法。如果 e-mail 地址不合法,将输出错误信息:
  1. $email = test_input($_POST["email"]);if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
  2.   $emailErr = "非法邮箱格式"; }
复制代码


PHP - 验证 URL
以下代码将检测URL地址是否合法 (以下正则表达式运行URL中含有破折号:"-"), 如果 URL 地址不合法,将输出错误信息:
  1. $website = test_input($_POST["website"]);if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
  2.   $websiteErr = "非法的 URL 的地址"; }
复制代码


PHP - 验证 Name, E-mail, 和 URL
代码如下所示:
  1. <?php// 定义变量并默认设置为空值$nameErr = $emailErr = $genderErr = $websiteErr = "";$name = $email = $gender = $comment = $website = "";if ($_SERVER["REQUEST_METHOD"] == "POST") {
  2.    if (empty($_POST["name"])) {
  3.       $nameErr = "Name is required";
  4.       } else {
  5.          $name = test_input($_POST["name"]);
  6.          // 检测名字是否只包含字母跟空格
  7.          if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  8.          $nameErr = "只允许字母和空格";
  9.          }
  10.      }
  11.    
  12.    if (empty($_POST["email"])) {
  13.       $emailErr = "Email is required";
  14.    } else {
  15.       $email = test_input($_POST["email"]);
  16.       // 检测邮箱是否合法
  17.       if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
  18.          $emailErr = "非法邮箱格式";
  19.       }
  20.    }
  21.      
  22.    if (empty($_POST["website"])) {
  23.       $website = "";
  24.    } else {
  25.       $website = test_input($_POST["website"]);
  26.       // 检测 URL 地址是否合法
  27.      if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
  28.          $websiteErr = "非法的 URL 的地址";
  29.       }
  30.    }

  31.    if (empty($_POST["comment"])) {
  32.       $comment = "";
  33.    } else {
  34.       $comment = test_input($_POST["comment"]);
  35.    }

  36.    if (empty($_POST["gender"])) {
  37.       $genderErr = "性别是必需的";
  38.    } else {
  39.       $gender = test_input($_POST["gender"]);
  40.    }}?>
复制代码



回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:00:10 | 显示全部楼层
PHP 完整表单实例
本章节将介绍如何让用户在点击"提交(submit)"按钮提交数据前保证所有字段正确输入。

PHP - 在表单中确保输入值
在用户点击提交按钮后,为确保字段值是否输入正确,我们在HTML的input元素中插添加PHP脚本, 各字段名为: name, email, 和 website。 在备注中的 textarea 字段中,我们将脚本放于 <textarea> 和 </textarea> 标签之间。
PHP脚本输出值为: $name, $email, $website, 和 $comment 变量。
然后,我们同样需要检查被选中的单选按钮, 对于这一点,我们 必须设置好checked属性(不是radio按钮的 value 属性) :
  1. <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  2.    名字: <input type="text" name="name" value="<?php echo $name;?>">   <span class="error">* <?php echo $nameErr;?></span>
  3.    <br><br>
  4.    E-mail: <input type="text" name="email" value="<?php echo $email;?>">   <span class="error">* <?php echo $emailErr;?></span>
  5.    <br><br>
  6.    网址: <input type="text" name="website" value="<?php echo $website;?>">   <span class="error"><?php echo $websiteErr;?></span>
  7.    <br><br>
  8.    备注: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
  9.    <br><br>
  10.    性别:
  11.    <input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?>  value="female">女
  12.    <input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?>  value="male">男   <span class="error">* <?php echo $genderErr;?></span>
  13.    <br><br>
  14.    <input type="submit" name="submit" value="Submit"> </form>
复制代码


PHP - 完整表单实例

回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:01:07 | 显示全部楼层
PHP $_GET 变量
在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。

$_GET 变量
预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。
实例
form.html 文件代码如下:
  1. <html><head><meta charset="utf-8"><title>阿里云大学(edu.aliyun.com)</title></head><body><form action="welcome.php" method="get">名字: <input type="text" name="fname">年龄: <input type="text" name="age"><input type="submit" value="提交"></form></body></html>
复制代码

当用户点击 "Submit" 按钮时,发送到服务器的 URL 如下所示:
  1. http://www.runoob.com/welcome.php?fname=Runoob&age=3
复制代码

"welcome.php" 文件现在可以通过 $_GET 变量来收集表单数据了(请注意,表单域的名称会自动成为 $_GET 数组中的键):
  1. 欢迎 <?php echo $_GET["fname"]; ?>!<br>你的年龄是 <?php echo $_GET["age"]; ?>  岁。
复制代码



何时使用 method="get"?
在 HTML 表单中使用 method="get" 时,所有的变量名和值都会显示在 URL 中。
注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!
然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。
注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。

回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:02:04 | 显示全部楼层
PHP $_POST 变量
在 PHP 中,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。

$_POST 变量
预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。
实例
form.html 文件代码如下:
  1. <html><head><meta charset="utf-8"><title>阿里云大学(edu.aliyun.com)</title></head><body><form action="welcome.php" method="post">名字: <input type="text" name="fname">年龄: <input type="text" name="age"><input type="submit" value="提交"></form></body></html>
复制代码

当用户点击 "提交" 按钮时,URL 类似如下所示:
  1. http://www.runoob.com/welcome.php
复制代码

"welcome.php" 文件现在可以通过 $_POST 变量来收集表单数据了(请注意,表单域的名称会自动成为 $_POST 数组中的键):
  1. 欢迎 <?php echo $_POST["fname"]; ?>!<br>你的年龄是 <?php echo $_POST["age"]; ?>  岁。
复制代码



何时使用 method="post"?
从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。
然而,由于变量不显示在 URL 中,所以无法把页面加入书签。

PHP $_REQUEST 变量
预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。
$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。
实例
你可以将 "welcome.php" 文件修改为如下代码,它可以接受 $_GET、$_POST等数据。
  1. 欢迎 <?php echo $_REQUEST["fname"]; ?>!<br>你的年龄是 <?php echo $_REQUEST["age"]; ?>  岁。
复制代码



回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:03:12 | 显示全部楼层
一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组:
实例
  1. <?php
  2. // 二维数组:
  3. $cars = array
  4. (
  5.     array("Volvo",100,96),
  6.     array("BMW",60,59),
  7.     array("Toyota",110,100)
  8. );
  9. ?>
复制代码


运行结果:
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => Volvo
  6.             [1] => 100
  7.             [2] => 96
  8.         )

  9.     [1] => Array
  10.         (
  11.             [0] => BMW
  12.             [1] => 60
  13.             [2] => 59
  14.         )

  15.     [2] => Array
  16.         (
  17.             [0] => Toyota
  18.             [1] => 110
  19.             [2] => 100
  20.         )

  21. )
复制代码



PHP - 多维数组
多维数组是包含一个或多个数组的数组。
在多维数组中,主数组中的每一个元素也可以是一个数组,子数组中的每一个元素也可以是一个数组。
实例
在这个实例中,我们创建了一个自动分配 ID 键的多维数组:
实例
  1. <?php
  2. $sites
  3. = array
  4. (
  5.    
  6. "runoob"
  7. =>array
  8.     (
  9.         
  10. "阿里云大学"
  11. ,
  12.         
  13. "http://edu.aliyun.com"
  14.    
  15. ),
  16.    
  17. "google"
  18. =>array
  19.     (
  20.         
  21. "Google 搜索"
  22. ,
  23.         
  24. "http://www.google.com"
  25.    
  26. ),
  27.    
  28. "taobao"
  29. =>array
  30.     (
  31.         
  32. "淘宝"
  33. ,
  34.         
  35. "http://www.taobao.com"
  36.    
  37. )
  38. );
  39. print(
  40. "<pre>"
  41. );
  42. // 格式化输出数组
  43. print_r
  44. (
  45. $sites
  46. );
  47. print(
  48. "</pre>"
  49. );
  50. ?>
复制代码



实例 2
显示上面数组中的某个值代码:
  1. echo $sites['runoob'][0] . '地址为:' . $sites['runoob'][1];
复制代码



回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:04:32 | 显示全部楼层
PHP date() 函数
PHP date() 函数用于格式化时间/日期。

PHP date() 函数
PHP date() 函数可把时间戳格式化为可读性更好的日期和时间。
时间戳是一个字符序列,表示一定的事件发生的日期/时间。
语法
  1. string date ( string $format [, int $timestamp ] )
复制代码


参数
描述
format必需。规定时间戳的格式。
timestamp可选。规定时间戳。默认是当前的日期和时间。


PHP Date() - 格式化日期
date() 函数的第一个必需参数 format 规定了如何格式化日期/时间。
这里列出了一些可用的字符:
  • d - 代表月中的天 (01 - 31)
  • m - 代表月 (01 - 12)
  • Y - 代表年 (四位数)

如需了解 format 参数中可用的所有字符列表,请查阅我们的 PHP Date 参考手册,date() 函数
可以在字母之间插入其他字符,比如 "/"、"." 或者 "-",这样就可以增加附加格式了:
  1. <?php
  2. echo date("Y/m/d") . "<br>";echo date("Y.m.d") . "<br>";echo date("Y-m-d");?>
复制代码

上面代码的输出如下所示:
  1. 2016/10/212016.10.212016-10-21
复制代码

格式字串可以识别以下 format 参数的字符串
format字符
说明
返回值例子

------
d月份中的第几天,有前导零的 2 位数字01 到 31
D星期中的第几天,文本表示,3 个字母Mon 到 Sun
j月份中的第几天,没有前导零1 到 31
l("L"的小写字母)星期几,完整的文本格式Sunday 到 Saturday
NISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加)1(表示星期一)到 7(表示星期天)
S每月天数后面的英文后缀,2 个字符st,nd,rd 或者 th。可以和 j 一起用
w星期中的第几天,数字表示0(表示星期天)到 6(表示星期六)
z年份中的第几天0 到 365
星期
------
WISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的)例如:42(当年的第 42 周)
------
F月份,完整的文本格式,例如 January 或者 MarchJanuary 到 December
m数字表示的月份,有前导零01 到 12
M三个字母缩写表示的月份Jan 到 Dec
n数字表示的月份,没有前导零1 到 12
t给定月份所应有的天数28 到 31
------
L是否为闰年如果是闰年为 1,否则为 0
oISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加)Examples: 1999 or 2003
Y4 位数字完整表示的年份例如:1999 或 2003
y2 位数字表示的年份例如:99 或 03
时间
------
a小写的上午和下午值am 或 pm
A大写的上午和下午值AM 或 PM
BSwatch Internet 标准时000 到 999
g小时,12 小时格式,没有前导零1 到 12
G小时,24 小时格式,没有前导零0 到 23
h小时,12 小时格式,有前导零01 到 12
H小时,24 小时格式,有前导零00 到 23
i有前导零的分钟数00 到 59>
s秒数,有前导零00 到 59>
u毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。示例: 654321
时区
------
e时区标识(PHP 5.1.0 新加)例如:UTC,GMT,Atlantic/Azores
I是否为夏令时如果是夏令时为 1,否则为 0
O与格林威治时间相差的小时数例如:+0200
P与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加)例如:+02:00
T本机所在的时区例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。
Z时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。-43200 到 43200
完整的日期/时间
------
cISO 8601 格式的日期(PHP 5 新加)2004-02-12T15:19:21+00:00
rRFC 822 格式的日期例如:Thu, 21 Dec 2000 16:01:07 +0200
U从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数参见 time()
回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:06:35 | 显示全部楼层
PHP 包含文件
PHP include 和 require 语句
在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。
include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。
include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
  • require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
  • include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。
包含文件省去了大量的工作。这意味着您可以为所有网页创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可。
语法
  1. include 'filename';或者require 'filename';
复制代码


PHP include 和 require 语句基础实例
假设您有一个标准的页头文件,名为 "header.php"。如需在页面中引用这个页头文件,请使用 include/require:
  1. <html><head><meta charset="utf-8"><title>阿里云大学(edu.aliyun.com)</title></head><body><?php include 'header.php'; ?><h1>欢迎来到我的主页!</h1><p>一些文本。</p></body></html>
复制代码

实例 2
假设我们有一个在所有页面中使用的标准菜单文件。
"menu.php":
  1. echo '<a href="/">主页</a>
  2. <a href="/html">HTML 教程</a>
  3. <a href="/php">PHP 教程</a>';
复制代码

网站中的所有页面均应引用该菜单文件。以下是具体的做法:
  1. <html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body><div class="leftmenu"><?php include 'menu.php'; ?></div><h1>欢迎来到我的主页!</h1><p>一些文本。</p></body></html>
复制代码

实例 3
假设我们有一个定义变量的包含文件("vars.php"):
  1. <?php
  2. $color='red';$car='BMW';?>
复制代码

这些变量可用在调用文件中:
  1. <html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body><h1>欢迎来到我的主页!</h1><?php
  2. include 'vars.php';echo "I have a $color $car"; // I have a red BMW?></body></html>
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )