一,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; //没有人注册
}
?>