PHP表单处理篇

来源:互联网 发布:一些计算机算法的例子 编辑:程序博客网 时间:2024/05/28 14:57

PHP表单处理篇:

表单在Web应用程序中被广泛使用,提交的方式主要是GET和POST两种,鉴于这两种方式的安全性考虑,一般提交敏感的数据必须使用POST,而一些不敏感的数据方式可选择GET,它们的区别:GET方式提交的数据,都在URL后作为参数显示,对外界客户是明文的;而POST方式,提交的数据都嵌入到了HTTP请求头中,不明文给客户端,所以更加安全,但是仅仅它们自提供的安全限制还不够,是不能防止黑客进行攻击的,所以下面结合登录例子总结下表单的验证处理流程和规则(技术讨论群:489451956(新)),具体如下:

 

1、表单处理

HTML表单代码片段:

<formid="form_userlogin"method='post'action="

               <formid="form_userlogin"method='post'action="http://127.0.0.1/Study/Php/formHandleSafe">

                        <tablewidth="220px"border="0"cellspacing="15"cellpadding="0">

                              <tr>

                                    <td><div>

                                                账&nbsp;&nbsp;号:

                                          </div></td>

                                    <td><inputname="account"id="account"></input></td>

                              </tr>

                              <tr>

                                    <td><div>

                                                密&nbsp;&nbsp;码:

                                          </div></td>

                                    <td><inputname="password"type="password"id="password"></input></td>

                              </tr>

                        </table>

                  </form>

JavaScript代码片段:

//登录事件监听引用jquery

      $("#action_userlogin").click(function() {

            var account = $("#account").val();

            var password = $("#password").val();

           

            // 进行简单的为空判断实际应该增加更多验证

            if("" ==account ||"" == password) {

                  alert("账号或密码不能为空哦!");

                  return;

            }

            // 提交表单

            $.post($("#form_userlogin").attr("action"),

              {

                  account:account,

                  password:password

              },

              function(data,status){

                if(status =="success")

                         alert(data);

                else

                         alert("登录失败!请查看服务端逻辑是否问题!");

              });

      });

 

php代码片段:

这里的php代码只是返回前端请求返回的内容:

echo "恭喜,登录成功!";

 

结果(前端校验):

 

 

 

 

2、表单验证

这里的表单验证,主要是对用户传递的参数进行验证和过滤,防止XSS攻击等,具体如下:

php代码片段:

// 变量声明并初始化

            $account= $password = '';

           

            if($_SERVER['REQUEST_METHOD'] =="POST") {

                  $account= $this->paramsSafeHandle($_POST['account']);

                  $password= $this->paramsSafeHandle($_POST['password']);

            }

            // 登录逻辑(这里省略)

            if(empty($account) ||empty($password)) {

                  echo '用户名或密码不能为空哦!';

            }

           

            echo "恭喜,登录成功!";

 

下面为核心的请求表单参数验证:

// 处理表单参数验证

function paramsSafeHandle($data) {

      $data= trim($data);    // 去除不必要的字符如:多余的空格、制表符、换行等

      $data= stripslashes($data); // 删除用户输入的反斜杠

      $data= htmlspecialchars($data);//将特殊字符转为html实体类型可防止XSS

      return $data;

}

 

3、表单必填

     // 登录逻辑(这里省略实际这里要处理登录的正常逻辑)

     if(empty($account) ||empty($password)) {

          echo '用户名或密码不能为空哦!';

     }

 

4、参数验证

/**

 * 邮箱格式校验

 */

function email($email) {

     $rule= "/([\w\-]+\@[\w\-]+\.[\w\-]+)/";

     if(!preg_match($rule, $email)) {

          return false;

     }

     return true;

}

 

5、表单完成

总结下,表单的处理过程:前端Html页面检验->php表单参数验证->表单必填->表单参数格式规则校验。详细代码如下:

php代码片段:

            // 变量声明并初始化

            $account= $password = '';

           

            if($_SERVER['REQUEST_METHOD'] =='POST') {

                  // 表单数据过滤

                  $account= $this->paramsSafeHandle($_POST['account']);

                  $password= $this->paramsSafeHandle($_POST['password']);

                  // 登录逻辑(这里省略)

                  if(empty($account) ||empty($password)) {

                        echo '用户名或密码不能为空哦!';

                        return;

                  }

                  // 表单数据格式规则校验

                  $status= email($account);

                  if(!$status) {

                        echo '用户名的格式不对,请认真核对!';

                        return;

                  }

                 

                  echo "恭喜,登录成功!";

            }

 

结果:

 

 

 

 

 

 

 

到这里,我们已经比较安全的处理了表单的提交整个过程了。

 

 

 

 

1 0
原创粉丝点击