表单处理

PHP表单处理篇:

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

 

1、表单处理

HTML表单代码片段:

<form id="form_userlogin"method='post' action="

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

                        <table width="220px"border="0" cellspacing="15"cellpadding="0">

                              <tr>

                                    <td><div>

                                               &nbsp;&nbsp;号:

                                          </div></td>

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

                              </tr>

                              <tr>

                                    <td><div>

                                               &nbsp;&nbsp;码:

                                          </div></td>

                                    <td><input name="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;

     }

     returntrue;

}

 

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 "恭喜,登录成功!";

           }

 

结果:

 

 

 

 

 

 

 

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


猜你喜欢

转载自blog.csdn.net/assasin0308/article/details/80094059