php,mysql登录(session,无加密版,js)

26 篇文章 0 订阅
10 篇文章 0 订阅

login.html:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#wel{
			display: none;
		}
	</style>
</head>
<body>
	<div id="login">
		<input type="text" id="uname" placeholder="用户名"><br/>
		<input type="text" id="upwd" placeholder="密码"><br/>
		<input type="button" id="btn_login" value="登录"><br/>
		<span id="login_tip"></span>
	</div>
	<div id="wel">
		<span>欢迎:</span>
		<span id="welUname"></span>
		<a id="logout">退出</a>
	</div>

	<script src="js/ajax.js"></script>
	<script src="js/login.js"></script>
</body>
</html>
ajax.js:

//封装适合各种情况的简化版ajax函数
function ajax({//利用解构,获取将来参数对象中每个属性值
  type,//请求类型: "get"||"post"
  url,//请求的url地址: "xxx.php"
  data,//请求携带的参数: "变量1=值&..."
  dataType,//服务器端返回值类型: "json"||"text"
}){
  //服务器端返回值类型默认为text
  dataType=dataType||"text";
  //只要远程请求,必有延迟,只要延迟,比用promise等待完成后,才执行后续操作
  return new Promise(function(resolve){//.then()
    //AJAX 4步/5步:
    var xhr=new XMLHttpRequest();//1.获得xhr对象
    //如果是get请求,且传入了data参数,才需要拼接url和data为get请求的完整地址
    if(type.toLowerCase()=="get"&&data!==undefined)
      url+="?"+data;
    xhr.open(type,url,true);//2. 建立连接
    //3. 设置请求状态回调函数
    xhr.onreadystatechange=function(){
      //如果请求完成,且成功!
      if(xhr.readyState==4&&xhr.status==200){
        //如果服务器端响应类型不是json,则调用后续resolve操作,并传入原始responseText,做后续处理
        if(dataType.toLowerCase()!="json")
          resolve(xhr.responseText);
        else//如果服务器端响应类型是json,则自动调用JSON.parse转为js对象,再交给resolve函数做后续处理
          resolve(JSON.parse(xhr.responseText));
      }
    }
    //只有type为post,才需要设置请求头
    if(type.toLowerCase()=="post")
      xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    //只有type为post,才需要send时,传入参数
    xhr.send(type.toLowerCase()=="post"?data:null);
  })
}

login.js:

function getId(id){
	return document.getElementById(id);
}
ajax({
	type:"get",
	url:"php/isLogin.php",
	dataType:"json"
}).then(data=>{
	if(data.ok==0){
		getId("login").style.display="block";
		getId("wel").style.display="none";
	}else{
		getId("login").style.display="none";
		getId("wel").style.display="block";
		getId("welUname").innerHTML=data.uname;
	}
});
btn_login.οnclick=function(){
	var uname=getId('uname').value;
	var upwd=getId('upwd').value;
	ajax({
		type:"post",
		url:"php/login.php",
		data:`uname=${uname}&upwd=${upwd}`,
		dataType:"json"
	}).then(data=>{
		console.log(data);
		if(data.ok==1){
			getId("login").style.display="none";
			getId("wel").style.display="block";
			getId("welUname").innerHTML=uname;
			getId("login_tip").innerHTML="";
		}else{
			getId("login_tip").innerHTML="用户名或密码错误";
		}
	});
}
logout.οnclick=function(){
	ajax({
		type:"get",
		url:"php/logout.php"
	}).then(()=>location.reload(true));
}

init.php:

<?php 

	$conn= mysqli_connect("127.0.0.1","root","","login",3306);
	$sql="SET NAMES UTF8";
	mysqli_query($conn,$sql);
?>


isLogin.php

<?php
header("Content-Type:application/json");
require_once("init.php");
session_start();
@$uid=$_SESSION["uid"];
if($uid){
  $sql="select uname from login_users where uid=$uid";
  $uname=
    mysqli_fetch_row(mysqli_query($conn,$sql))[0];
  echo json_encode(["ok"=>1,"uname"=>$uname]);
}else
  echo json_encode(["ok"=>0]);

login.php

<?php
header("Content-Type:application/json");
require_once("init.php");
@$uname=$_REQUEST["uname"];
@$upwd=$_REQUEST["upwd"];
if($uname&&$upwd){
  $sql="select uid from login_users where uname='$uname' and binary upwd='$upwd'";
  $row=mysqli_fetch_row(mysqli_query($conn,$sql));
  if($row){
    session_start();
    $_SESSION["uid"]=$row[0];
    echo json_encode(["ok"=>1]);
  }else
    echo json_encode(["ok"=>0,"msg"=>"用户名或密码错误"]);
}


logout.php:

<?php
	session_start();
	session_unset();
	session_destroy();
?>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值