PHP基础回顾之表单(二)

$_GET、$_POST 和$_REQUEST 的区别?

  • $_GET 变量接受所有以 get 方式发送的请求,及浏览器地址栏中的 ? 之后的内容。在 HTML 表单中使用 method="get" 时,所有的变量名和值都会显示在 URL 中,并且不适合大型的变量值
  • $_POST 变量接受所有以 post 方式发送的请求。POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制
  • $_REQUEST 支持两种方式发送过来的请求,即 post 和 get 它都可以接受,显示不显示要看传递方法,get 会显示在 url 中(有字符数限制),post 不会在 url 中显示,可以传递任意多的数据(只要服务器支持)。
    表单验证
    我们应该尽可能的对用户的输入进行验证(通过客户端脚本)。浏览器验证速度更快,并且可以减轻服务器的压力。
    如果用户输入需要插入数据库,您应该考虑使用服务器验证。在服务器验证表单的一种好的方式是,把表单的数据传给当前页面(异步提交的方式更好),而不是跳转到不同的页面。这样用户就可以在同一张表单页面得到错误信息。用户也就更容易发现错误了。
<form method="post" action="<?php echo htmlspecialchars(\$_SERVER["PHP_SELF"]);?>">

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

注意:$_SERVER["PHP_SELF"] 变量有可能会被黑客使用!
当黑客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。用htmlspecialchars() 函数来避免被利用。

什么是 htmlspecialchars()方法?
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体,如下:

& (和号) 成为 &amp;
" (双引号) 成为 &quot;
' (单引号) 成为 &#039;
< (小于) 成为 &lt;
> (大于) 成为 &gt;
  • 使用*** PHP trim()*** 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。
  • 使用PHP*** stripslashes()*** 函数去除用户输入数据中的反斜杠 ()。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,242评论 2 38
  • 好文章要让更多的人知道!!本文转载自:开源社区原文链接:https://www.kysq.com/article/...
    php_bruce阅读 1,214评论 1 28
  • 一、扩展java.lang.Thread类 1. 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切...
    星球自转阅读 324评论 0 0
  • 伴随着手机越来越智能,网络越来越普及,4G越来越飞速,约饭在我们生活中也变的简单而普遍,今天你约了吗? 约饭又可以...
    散客阅读 1,455评论 0 0