登录注册功能demo

本文探讨了HTTP协议中的GET和POST请求方法,它们在登录注册功能中的应用。GET主要用于查询数据,而POST适用于数据增加,因而在安全性和传输量上存在差异。在实际操作中,POST比GET更安全,适合用于登录注册等涉及数据修改的场景。同时,介绍了HTML表单的提交方式,并提到了AJAX操作在数据交互中的作用。
摘要由CSDN通过智能技术生成

一,GET 和POST 请求

常见的提交方式有: GET POST PUT DELETE
数据在数据库中主要做:增删改查的过程 CURD
GET 查 POST增 PUT改 DELETE 删

GET(查) POST(增,改, 删 )
表单的默认方式是GET,如果想用POST,需要写method=“POST”
串联化字符串 一般由&连接的键值对

GET请求的特点:数据会通过地址的URL的方式进行传递

浏览器中的url只能发送GET请求

POST方式发送的数据, 是把数据通过隐藏的body体。(URL是看不到数据的)

注册是对数据库中的数据进行增加,所以一般用POST

GET和POST属于HTTP协议的请求方法,所谓请求方法就是告知服务器需要做些什么。GET方法表示从指定的服务器获取数据,一般用于查询数据。POST方法表示向指定的服务器提交要被处理的数据,一般用于修改数据。

GET和POST区别:

1.语法格式:
GET提交的数据会附在URL之后,用?分隔URL和传输的数据,参数之间以&相连。
POST方法把提交的数据放置在HTTP包的包体中。在AJAX进行POST操作的时候,需要添加头信息:
Content-Type,application/x-www-form-urlencoded。

2.传输量
GET方法和POST方法在传输量上都没有任何大小的限制。那么限制传入量的原因是浏览器和服务器造成的。
浏览器会对URL的长度进行限制, 出于安全的考虑,所以GET方法传输量上会受到长度的限制。
服务器一般默认会对POST方法的最大传输量进行限制,不过这个限制量可以在服务器中进行重新设置。

3.安全性
从数据修改上来说,POST比GET安全,因为修改的数据会暴露在URL上,而POST方法啊会相对安全一些,修改的数据在body体中。

总结:GET和POST从设计上来说都是安全的。
GET在设计上只是用来查询数据,而不是增加数据,为什么说GET不安全呢,是因为有人用GET做了不安全的事儿,比如用GET来做登录功能。所以尽量不让GET来做查询之外的事情,就是安全的。

二,表单提交

    <form action="b.php" method="POST">
        用户名: <input type="text" name="username" value="xiaoming"><br>
        密码: <input type="password" name="password"><br>
        <input type="submit" value="注册">
    </form>
<?php

    @$con = mysqli_connect('localhost','root','','shirleytest');
    $username = isset($_REQUEST['username']) ? $_REQUEST['username'] : '';
    $password = isset($_REQUEST['password']) ? md5($_REQUEST['password']) : ''; //md5() 加密
    
    if(!$con){
        exit('error'); //exit() 输出一条信息 并退出当前脚本。
    }

    //设置传输到数据库的编码
    header('content-type:text/html;charset=utf-8');

    mysqli_query($con,'set names utf8');

    $sql = "select * from users where username = '{$username}' ";

    $query = mysqli_query($con,$sql);

    if($query && mysqli_num_rows($query)){
        echo '<script> alert("已经有人注册过了");history.back();</script>';
    }
    else if($query){
        $sql = "insert into users(username , password) values ('{$username}' , '{$password}')";        
        $query = mysqli_query($con,$sql);
        if($query){
            echo mysqli_insert_id($con);
            echo '<script>alert("恭喜注册成功");</script>';
        }   
    }

?>

此时,数据库中创建的表和字段如图所示。类型varchar是字符串
在这里插入图片描述

三,AJAX操作

 <form action="ajax.php" method="POST">
        登录:  <input name="username" id="username"><span id="tip"></span>
        密码: <input name="password">
        <button type="submit">登录</button>
    </form>
<script>
      let username = document.querySelector("#username");
      let tip = document.querySelector("#tip");
      username.onblur = function(){
        let xhr = new XMLHttpRequest();
        let value = this.value.trim();
        xhr.onload = function(){
            if(xhr.status == 200){
                console.log(xhr.responseText);
                if(xhr.responseText == 1){
                    tip.innerHTML = 'X';
                }else{
                    tip.innerHTML = 'v';
                }
            }
        }   
        xhr.open('GET',`/Ajax/ajax.php?users=${value}`,true);
        xhr.send(null);
      }
  </script> 
<?php
    $users = $_REQUEST['users'];
    @$con = mysqli_connect('localhost','root','','shirleytest');
    header('content-type:text/html;charset=utf-8');
    mysqli_query($con,'set names utf8');
    
    $sql = "select * from users where username = '{$users}' ";
    $query = mysqli_query($con,$sql);

    if( $query && mysqli_num_rows($query) ){
        echo 1;   //有人注册
    }  
    else if($query){
        echo 0;  //没有人注册
    }
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值