zoukankan      html  css  js  c++  java
  • 【辅导】Task10 掌握PHP表单处理 主要知识点

    本任务主要内容在Task05中已经学习过,此处进一步加深并拓展。

    1、关于表单中的action属性

    在PHP中,表单的action属性若忽略,默认是本网页。

    <form method="post">

     

    个人认为,前一种方法比后一种方法要好。

    2、关于XSS攻击(跨站脚本攻击)

    XSS攻击多出现在评论或留言中,通过在文本中插入特意设计的javascript脚本,窃取登录用户的隐私信息,或进行恶意网址转向。

    因此,用户的留言,必须要去掉html标记或脚本标记,使得这些脚本无法由浏览器执行。

    PHP中通过以下方法来避免脚本攻击,虽只是初级的,但够用了。

    (1)html标记转义,使用htmlspecialchars函数或htmlentities函数

    (2)去除反斜杠(),反斜杠()在javascript中用于字符转义。

    (3)必要时,压缩文本首尾空格。trim

    3、关于Bootstrap H5表单

       

    注意,这些表单控件必须要设置name属性,才能由$_POST变量来获取,获取的是这些控件的value属性的值

    多个CheckBox控件时,name属性要用数组标记,如name= "liking[]"。单个ChceckBox控件时则非必须。PHP中通过$_POST["liking"]获得一个由各value值组成的数组。

    4、关于正则表达式

    Java中,我们介绍过正则表达式,在Task14中,我们也将重新回顾一下正则表达式,学习PHP中的正则表达式函数。对于正则表达式中常用语法要掌握。

     

     思考:如何确定用户由字母组成,至少8位字符? [a-zA-Z0-9]{8,}

    对于邮件认证,可以使用正则表达式(好处是具体要求可自已定义),也可以使用PHP的邮件过滤器函数(以RFC 822为标准):

     

    思考:这个函数可以使用哪些过滤器?(查阅PHP.NET)

    5、关于表单数据跨网页处理

    客户端发起一个http请求,服务端返回数据,则该次http请求结束。无法对客户端的多次http请求进行跟踪,http的无状态性(Stateless)是指服务端无法对同一客户端的多次http请求进行跟踪。

    GET表单通过URL中的查询字符串传输数据,POST表单通过http请求数据包的header部分进行传输。但都只能通过action的网页传输一次。

    像本任务中的用户注册的例子,register.php网页获取POST表单数据,验证其合法性后,需要再传给另外一个网页进行处理(如负责将数据写入数据库)则很难处理。

    本任务中提供2种思路:

    一是构造隐藏表单,通过javascript自行提交给另一网页处理。不多见。

    二是存储在Session中,常见。存储在Session中的数据,本网站的所有网页均可读写。关于Session与Cookie的具体应用,Task13中会详细介绍。

    6、关于实验7

    实验7实际上就是让你照着任务10中的例子,在自己的计算机上实践一遍。再进一步,这个表单由哪些要填报的数据项进行组成,你可自己独立去设计一个不同的。

    比如:你也来设计一个用于每日疫情信息填报的表单? 

  • 相关阅读:
    hdu 2019 数列有序!
    hdu 2023 求平均成绩
    HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002
    51nod 1264 线段相交
    Gym 100801A Alex Origami Squares (求正方形边长)
    HDU 5512 Pagodas (gcd)
    HDU 5510 Bazinga (字符串匹配)
    UVALive 7269 Snake Carpet (构造)
    UVALive 7270 Osu! Master (阅读理解题)
    UVALive 7267 Mysterious Antiques in Sackler Museum (判断长方形)
  • 原文地址:https://www.cnblogs.com/whitewin/p/12597033.html
Copyright © 2011-2022 走看看