一.登陆注册
1.登陆注册的服务器逻辑:
(1)接受并校验 --- >如 if(empty($_POST['username'])) { echo '....' } 判断post方式提交过来的数组中有没有username这个属性名
(2)持久化---->放到数据库中/json文件中
(3)响应---->比如前端用ajax请求了数据,而想让php响应一些东西回去,用echo即可,注意的是数组类型的数据不能用echo,需要转为json
2.使用ajax进行注册时用户名的查询::
(1) js代码:
var xhr = new XMLHttpRequest();
xhr.open('get','./check.php?username='+v ,true);//请求发送到check.php里
xhr.send();
(2)下面进入check.php里:
<?php
function query() {
$con = !empty($_GET['username']) ? trim($_GET['username']) : '没有数据'; //接受传进来的数据--->username
//链接数据库
$connect = mysqli_connect('127.0.0.1','root','123456','team-project');
if(!$connect) {
echo '链接数据库失败';
return;
}
mysqli_set_charset($connect , 'utf-8'); //查询数据库的时候,设置编码为中文
$sql = "select userName from users where userName = '{$con}'";
$query = mysqli_query( $connect,$sql);
if(!$query) {
echo '读取错误';
return;
}
$row = mysqli_fetch_assoc($query); //逐行读取数据库中内容,一次只能读取一行
if(empty($row)) {
echo 'kong'; //向前台返回字符串'kong'
} else {
echo 'you'; //向前台返回字符串'you'
}
mysqli_free_result($query); //释放暂存
mysqli_close($connect); //炸桥
}
//使用函数形式是为了防止写很多的else,在函数里条件不成立后直接return就可以,后面的就不会执行了
if($_SERVER['REQUEST_METHOD'] === 'GET') {
query();
}
(3)回到之前的js代码里:
var xhr = new XMLHttpRequest();
xhr.open('get','./check.php?username='+v ,true);
xhr.send();
xhr.onreadystatechange = function(){
if( xhr.readyState == 4 ){
if( xhr.status>=200 && xhr.status<300){
var content = xhr.responseText; //获取服务器的返回值
if(content == 'kong') { // 服务器echo回来的
n.text("恭喜您,该用户名可用");
} else {
n.html("<font color='red' style='font-size:12px;'>该用户名已存在</font>");
}
} else {
console.log(xhr.status);
}
}
}
以上就完成了一次查询!
其中注册成功时向数据库插入数据,只用添加几个数据,改变下sql语句即可:
代码如下:
<?php
function register() {
$userName = $_POST['username']; //接收username
$password = $_POST['password'];//接收password
$phone = $_POST['phone'];//接收phone
//链接数据库
$connect = mysqli_connect('127.0.0.1','root','123456','team-project');
//设置查询时为中文
mysqli_set_charset($connect , 'utf-8');
//设置插入的sql语句
$sql = "insert into users (userName,password,phone) values ('{$userName}','{$password}','{$phone}')";
//获取查询结果
$query = mysqli_query( $connect,$sql);
//$query为布尔值
if(!$query) {
$GLOBALS['message'] = '写入失败';
return;
}
echo 'success'; //返回给前台的字段为success
}
if($_SERVER['REQUEST_METHOD'] === 'POST') {
register();
}
?>
登录注册大致如以上!