精华内容
下载资源
问答
  • 从标题就能知道,我们需要实现的是前端页面通过ajax发送数据到后台,然后后台进行数据库查询并进行逻辑判断用户是否存在,如果存在则不能进行注册并返回数据,不存在进行注册并返回数据,最后返回验证数据给前端,...

    Springboot WEB项目使用AJAX前端发送数据后台查询数据库并进行判断实现注册并登录功能!

    一,回顾
    1,如何快速搭建一个Springboot Web项目:请点击这里
    2,如何通过ajax发送数据实现后台数据库查询数据,并进行登录功能:请点击这里

    二,功能实现简介

    从标题就能知道,我们需要实现的是前端页面通过ajax发送数据到后台,然后后台进行数据库查询并进行逻辑判断用户是否存在,如果存在则不能进行注册并返回数据,不存在进行注册并返回数据,最后返回验证数据给前端,这时前端收到判断返回的验证数据,做出相应的动作(页面的跳转)。

    三,实现注册展示,先看效果再看具体代码实现

    1,此时我们的数据库User_Info表中数据为这样的,如下图
    在这里插入图片描述
    2,验证表中存在数据不能进行注册,此时输入用户名:gan 密码:123,不能注册
    在这里插入图片描述
    同时控制台打印
    在这里插入图片描述
    3,验证表中不存在数据不能进行注册,这里以 输入用户名:jack 密码:123456 为例,注册成功
    在这里插入图片描述
    控制台打印信息
    在这里插入图片描述
    此时再来刷新我们的数据库中表的数据,看数据已经注册到我们的表中了
    在这里插入图片描述
    四,看我们的实现代码,分前端代码和后端代码
    1,前端代码
    HTML

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<link rel="stylesheet" href="css/style.css">
    		<title>注册</title>
    		<script src="js/register.js"></script>
    		<script src="http://code.jquery.com/jquery-latest.js"></script><!--支持ajax的文件库-->
    	</head>
    	<body class="registerbody">
    		<div class="box1">
    			<h3>注册</h3>
    			<from action="submit">
    <!--				<div >请输入账号:<input type="text" id="account" /></div>-->
    				<div>请输入账号:<input type="text"  id="username" /></div>
    				<br>
    				<div >请输入密码:<input type="password" id="password" /></div>
    				<br>
    				<div>请确定密码:<input type="password"  id="pwd" /></div>
    				<br>
    <!--				<div>请输入姓名:<input type="text"  id="username" /></div>-->
    <!--				<br>-->
    <!--				<div>请输入手机:<input type="text" id="phone" /></div>-->
    <!--				<br>-->
    				<input type="button" onclick="register()" value="注册" />
    				<!-- <div><input type="button" οnclick="register()"  value="注册"/></div >-->
    			
    		</div>
    	</body>
    </html>
    
    

    js代码

    function register() {
    	/
    	var username =document.getElementById('username').value;
    	if(null == username || "" == username) {
    		alert("请输入用户名");
    		return;
    	}
    	var password =document.getElementById('password').value;
    	if(null == password || "" == password) {
    		alert("请输入密码");
    		return;
    	}
    	var pwd =document.getElementById('pwd').value;
    	if(null == pwd || "" == pwd) {
    		alert("请确定密码");
    		return;
    	}
    	$.ajax({
    		url : "/userRegister",
    		type : "POST",
    		data :{
    			"username":username,
    			"password": password,
    			"pwd":pwd},
    		dataType : "json",
    		success : function(data) {
    			//后台返回数据
    			if (data.status == "ok") {
    				alert(data.message);   //注册成功
    				window.location.href = "login.html";
    			}else {
    				alert("注册失败");   
    			}
    
    		},
    		error:function (res) {
    			alert("请求错误!",console.res)
    		}
    
    	});
    }
    

    2,后台代码

    pojo实体类和上篇一样的,不展示了,上篇链接在这里:看这篇的pojo实体类

    dao层

    package com.springboot.springboot.dao;
    
    import com.springboot.springboot.pojo.UserInfo;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    import java.util.List;
    
    @Repository
    public interface UserDao extends JpaRepository<UserInfo, Integer> {
        //定义通过用户名密码查询数据
        public UserInfo findByUserNameAndPassword(String username,String password);
        //定义通过用户查询
        public List<UserInfo> findByUserName(String username);
    
    }
    
    

    Service层

    package com.springboot.springboot.service;
    
    import com.springboot.springboot.dao.UserDao;
    import com.springboot.springboot.pojo.UserInfo;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import java.util.List;
    
    @Service
    public class UserServiceImpl {
        @Autowired
        UserDao userDao;
        //实现通过用户名密码查询数据
        public UserInfo getUser(String name,String pwd){
            return userDao.findByUserNameAndPassword(name,pwd);
        }
        //实现通过用户名查询
        public List<UserInfo> getUserName(String name){
            return userDao.findByUserName(name);
        }
    
    }
    
    

    最后看我们的controller层

    这里我简单的介绍具体控制层的逻辑
    1,获取用户发送来的数据
    2,通过用户名查询数据库中表是否存在该用户名,这里用户名在表中是唯一的,存在则不能注册,不存在则可以注册。在通过用户名查询用户的时候,我用列表返回,通过返回列表的是否为空,从而判断该用户是否在表中,这里进行数据库交互的返回值非常重要,写数据访问时一定要向好返回值的类型。当然,我这里用的是列表返回可能效率不是那么的好,还有许多返回方法的。
    3,通过列表判断用户是否有注册的行为,并将返回数据以josn格式返回。
    4,前端做出判断,返回信息给用户。
    5,over

    package com.springboot.springboot.controller;
    
    import com.springboot.springboot.dao.UserDao;
    import com.springboot.springboot.pojo.UserInfo;
    import com.springboot.springboot.service.UserServiceImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import java.util.List;
    import java.util.Map;
    import com.alibaba.fastjson.JSON;
    import sun.plugin2.message.JavaReplyMessage;
    
    /**
     * @author ganxiang
     * IDE      IntelliJ IDEA
     * @project_name and filename Springboot UserController
     * @date 2020/04/08 0008 14:15
     */
    
    @Controller
    public class UserController {
        @Autowired
        UserDao userDao;
        @RequestMapping("/userRegister")
        @ResponseBody
        public  String userRegister(HttpServletRequest request, Map<String, String> parameter,HttpSession session){
            String name = request.getParameter("username");
            String password = request.getParameter("password");
            String pwd =request.getParameter("pwd");
            System.out.println(name+":"+password+":"+pwd+password.equals(pwd));
            UserInfo user =new UserInfo();
            List<UserInfo> list = userService.getUserName(name);
            System.out.println("查询的用户名为"+user.toString());
            if (list.size()==0){
                user.setUserName(name);
                user.setPassword(password);
                if (password.equals(pwd)) {
                    session.setAttribute("userInfo", user);
                    userDao.save(user);
                    parameter.put("message", "注册成功");
                    parameter.put("status", "ok");
                    System.out.println("用户不存在,用户注册成功");
                    return JSON.toJSONString(parameter);
                } else {
                    parameter.put("message", "注册失败,用户输入密码与确定密码不同");
                    parameter.put("status", "no");
                    System.out.println("用户输入密码与确定密码不同,请重新输入");
                    return JSON.toJSONString(parameter);
                }
            }
            else {
                parameter.put("message", "注册失败,用户存在");
                parameter.put("status", "no");
                System.out.println("用户存在");
                return JSON.toJSONString(parameter);
            }
        }
    
    }
    
    

    如果觉得有帮助的,点个赞再走呗🤞🤞🤞

    展开全文
  • 前言 相信大家经常在各种网站上登录注册、下发短信、活动等会...今天就来白嫖一下腾讯云提供的图片验证功能。 验证时序图 实现 前端代码 1、div代码 <div class="col-xs-4"> <button type="button" id=".

    在这里插入图片描述
    前言

    相信大家经常在各种网站上登录、注册、下发短信、活动等会看到,系统会弹出来一个滑块验证,让你把一个滑块滑到指定空缺的位置(还有其他种形式,比如按顺序点击文字或图案等等),系统会校验,校验正确则登录成功,否则即使账号密码输入正确也无法登录。这样做主要是为了系统更安全,减少被机器模拟登录行为破坏网站。今天就来白嫖一下腾讯云提供的图片验证功能。

    验证时序图
    在这里插入图片描述
    在这里插入图片描述
    实现

    前端代码
    1、div代码

    <div class="col-xs-4">
    <button type="button" id="TencentCaptcha"
            data-appid="2017233567"
            data-cbfn="callback" class="btn btn-primary btn-block btn-flat">登录</button>
    </div>
    

    2、js代码

    <script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
    
    window.callback = function(res){
            if(res.ret === 0){
                var data = "username="+vm.username+"&password="+vm.password+"&ticket="+res.ticket+"&randstr="+res.randstr;
                $.ajax({
                    type: "POST",
                    url: "sys/login",
                    data: data,
                    dataType: "json",
                    success: function (result) {
                        if(result.code == 0){//登录成功
                            parent.location.href ='index.html';
                        }else{
                            vm.error = true;
                            vm.errorMsg = result.msg;
                        }
                    }
                });
            }
        };
    

    后端代码

    @Value("${tencent.captcha.url}")
    private String url;
    @Value("${tencent.captcha.aid}")
    private String aid;
    @Value("${tencent.captcha.AppSecretKey}")
    private String appSecretKey;
    
    @ResponseBody
    @PostMapping(value = "/sys/login")
    public R login(String username, String password, String ticket, String randstr, HttpServletRequest request) {
      try{
        Subject subject = ShiroUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken(username, password);
        subject.login(token);
      }catch (UnknownAccountException e) {
        return R.error(e.getMessage());
      }catch (IncorrectCredentialsException e) {
        return R.error("账号或密码不正确");
      }catch (LockedAccountException e) {
        return R.error("账号已被锁定,请联系管理员");
      }catch (AuthenticationException e) {
        return R.error("账户验证失败");
      }
      HttpMethod method =HttpMethod.POST;
      MultiValueMap<String, String> params= new LinkedMultiValueMap<String, String>();
      params.add("aid", aid);
      params.add("AppSecretKey", appSecretKey);
      params.add("Ticket", ticket);
      params.add("Randstr", randstr);
      params.add("UserIP", IPUtils.getIpAddr(request));
      String msg = httpClient.client(url,method,params);
      JSONObject json = JSONObject.parseObject(msg);
      String response = (String) json.get("response");
      String evilLevel = (String) json.get("evil_level");
      String errMsg = (String) json.get("err_msg");
      if("1".equals(response)){
        return R.ok();
      }else {
        return R.error("验证失败");
      }
    }
    

    参数配置,aid和AppSecretKey在腾讯云后台获取

    tencent:
      captcha:
        url: https://ssl.captcha.qq.com/ticket/verify
        aid: ***********
        AppSecretKey: ***********
    

    效果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • web的开发中有的时候我们需要用户登录注册页面 需要在输入框的里面有灰色字体进行提示 我之前都是使用复杂的JavaScript来实现 实现点击出现字符出现与消失 以及字符的颜色在灰色和黑色中变换 特别是密码...

    在web的开发中有的时候我们需要用户登录注册页面
    需要在输入框的里面有灰色字体进行提示
    我之前都是使用复杂的JavaScript来实现
    实现点击出现字符出现与消失
    以及字符的颜色在灰色和黑色中变换
    特别是密码输入框中需要涉及到两个输入框的显示与隐藏
    非常麻烦
    但是使用了placeholder占位符就不一样了
    可以方便快捷的实现这个功能

    示例代码:

    <body>
            <div id="div1">
                <div style="position: relative;">
                    <img src="../img/headportrait-login-register.png" class="img1">
                    <input id="button_login" class="button1" type="button" value="登录" style="color:#E59A00" onclick="login_onclick()">
                    <input id="button_register" class="button1" type="button" value="注册" style="color: black;" onclick="register_onclick()">
                </div>
                <div class="line"></div>
                <div id="user_register" style="display: none;">
                    <input placeholder="用户名" id="user_register_username" name="用户名" class="input1" type="text" />
                    <input placeholder="邮箱/手机号" id="user_register_contact" name="邮箱/手机号" class="input1" type="text" />
                    <input placeholder="密码" id="user_register_password" name="密码1" class="input1" type="password" />
                    <input placeholder="确认密码" id="user_register_ensurepassword" name="确认密码1" class="input1" type="password" />
                    <input placeholder="验证码" name="验证码" class="securitycode" type="text" /><input value="获取验证码" class="securitycode_made" type="button"><br>
                    <input value="同意协议并注册" name="同意协议并注册" class="agreement" type="radio"><span class="agreement">同意协议并注册</span><br>
                    <input value="注册" id="user_register_button" class="button2" type="button" onclick="ajax_user_register()" />
                </div>
                <form id="merchant_register" style="display: none">
                    <input placeholder="用户名" value="" name="用户名" class="input1" type="text" />
                    <input placeholder="邮箱/手机号" value="" name="邮箱/手机号" class="input1" type="text" />
                    <input placeholder="密码" value="" name="密码3" class="input1" type="password" />
                    <input placeholder="确认密码" value="" name="确认密码3" class="input1" type="password" />
                    <input placeholder="验证码" value="" name="验证码" class="securitycode" type="text"><input value="获取验证码" class="securitycode_made" type="button"><br>
                    <!-- style="color: #747474;"-->
                    <div class="havefile" id="leftfile">
                        <input name="店铺门面照" class="file" id="photo" type="file">
                        <span class="infile">店铺门面照</span>
                    </div>
                    <div class="havefile" id="rightfile">
                        <input name="经营许可证" class="file" type="file">
                        <span class="infile">经营许可证</span>
                    </div><br>
                    <input value="同意协议并注册" name="同意协议并注册" class="agreement" type="radio"><span class="agreement">同意协议并注册</span><br>
                    <input value="注册" type="submit" class="button2">
                </form>
                <form id="login" style="display: block;">
                    <input placeholder="用户名/邮箱/手机号" id="login_username_email_mobilephone" name="用户名/邮箱/手机号" class="input2" type="text">
                    <input placeholder="密码" id="login_password" name="密码2" class="input2" type="password">
                    <input placeholder="验证码" name="验证码" class="securitycode" type="text"><input value="获取验证码" class="securitycode_made" type="button"><br>
                    <input value="登录" type="button" class="button2" style="margin-top: 20px;" onclick="ajax_login()">
                </form>
                <div>
                    <input id="button_merchant" class="button1" type="button" value="商家" style="color: black;" onclick="merchant_onclick()">
                    <input id="button_user" class="button1" type="button" value="用户" style="color: rgb(229, 154, 0);" onclick="user_onclick()">
                </div>
            </div>
        </body>
    展开全文
  • 本课程通过使用PHP及Web前端技术实现一个网站注册登录入口页面,学习并实践PHP编程等,有兴趣的同学可以参考一下。
  • 本文是一遍入门博客,内容以web制作前端页面,以C语言作为后台语言,以mysql数据库存储数据实现基本的登陆注册功能,服务器为centos 7系统 积分有多的小伙伴可以前往C语言后台代码直接下载完整源码支持一下原创,...

    本文是一遍入门博客,内容以web制作前端页面,以C语言作为后台语言,以mysql数据库存储数据实现基本的登陆注册功能,服务器为centos 7系统

    积分有多的小伙伴可以前往C语言后台代码直接下载完整源码支持一下原创,谢谢。

    1.安装并登录mysql数据库

    2.创建test数据库:create database test;

    3.添加userinfo表:create table userinfo(name char(16) not null,password char(32) not null,PRIMARY KEY (name) );

    4.退出数据库

    5.找到mysql/include和mysql/lib目录所在路径

    6.新建文件名改为index.html并将下列代码复制粘贴进去并将第34行的127.0.0.1修改为你的服务器地址 

    <!DOCTYPE html>
    <head>
    <script type="text/javascript">
    var type;
    function login(){
    	type="login";
    	send();
    }
    
    function register(){
    	type="register";
    	send();
    }
    
    function send()
    {
    	var x = document.forms["myform"]["fname"].value;
    	var y = document.forms["myform"]["fpass"].value;
    	var text = {name:x,password:y,type:type};
    	var xmlhttp;
    	
    	if (x == "" || x == null) {
            alert("用户名和密码不能为空");
    		return false;
        }else if (y == "" || y == null){
    		alert("用户名和密码不能为空");
    		return false;
    	}
    	if (window.XMLHttpRequest){
    		xmlhttp=new XMLHttpRequest();
    	}else{
    		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	xmlhttp.open("post","http://127.0.0.1:8000/",true);
    	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    	xmlhttp.send(JSON.stringify(text));
    	xmlhttp.onreadystatechange=function()
    	{
    		if (xmlhttp.readyState==4 && xmlhttp.status==200)
    		{
    			document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    		}
    	}	
    }
    </script>
    </head>
    <body>
    <h1>登陆</h1>
    <form name="myform">
    名字:<input type="text" name="fname" required="required"><br/><br/>
    密码:<input type="password" name="fpass" required="required"><br/><br/>
    <button type="button" onclick="login()">登陆</button>
    <button type="button" onclick="register()">注册</button>
    <br />
    </form>
    <div id="myDiv"></div>
    </body>
    </html>

    7.新建main.c文件并将下列代码复制粘贴上去,并将第114行的password修改为你的数据库密码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <sys/epoll.h>
    #include "cJSON.h"
    #include <mysql.h>
    
    #define MAX_EVENTS           	1024	//最大连接数 
    #define REQUEST_LEN_MAX			1024    //缓冲区大小
    #define DEFEULT_SERVER_PORT     8000	//程序默认使用端口(可更改)
    
    int main(int argc, char *argv[])
    {
    	int 				res;
    	int                 conn_fd;					//要读取的socket文件描述符
    	int                 listen_fd;  				//服务端套接字
    	int                 port = DEFEULT_SERVER_PORT;	//初始化默认端口为8000
        char                str[INET_ADDRSTRLEN];		//存储客户端IP
        struct sockaddr_in  servaddr;					//初始化sockaddr_in结构体变量
    	struct sockaddr_in  cliaddr;					//初始化sockaddr_in结构体变量
    	socklen_t           cliaddr_len;				//存储客户端套接字长度
    	MYSQL 				*conn_ptr;	
        MYSQL_RES 			*res_ptr;
        MYSQL_ROW 			sqlrow;
    	char 				*login="login",*reg="register";	
        char 				sql[1024],Data[1024],Response[1024];
    	char				ResponseHead[] = "HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin:*\r\n\r\n";
    	
        if(argc > 1) 									//argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
            port = atoi(argv[1]);						//argv[0]指向程序运行的全路径名,argv[n]指向在DOS命令行中执行程序名后的第n个字符串
        if(port<=0 || port>0xFFFF) {					//判断用户输入端口是否超出(1-65535)范围(0-1023为保留端口,不建议使用)
            printf("Port(%d) is out of range(1-%d)\n", port, 0xFFFF);
            return -1;
        }
    
        listen_fd = socket(AF_INET, SOCK_STREAM, 0);
    	if(listen_fd == -1){							//正常返回0,异常-1
    		printf("创建套接字失败!\n");
            return -1;
        }
    	
        memset(&servaddr, 0, sizeof(servaddr)); 		//servaddr每个字节都用0填充
        servaddr.sin_family = AF_INET;					//使用IPv4地址
        servaddr.sin_addr.s_addr = htonl(INADDR_ANY);	//INADDR_ANY,所有网卡地址
        servaddr.sin_port = htons(port);				//端口;	
        bind(listen_fd, (struct sockaddr *)&servaddr, sizeof(servaddr));	//将套接字和IP、端口绑定,正常返回0,异常-1
        listen(listen_fd, 5000);								//监听套接字,backlog 为请求队列的最大长度
    	cliaddr_len = sizeof(cliaddr);							//cliaddr客户端套接字长度
    	printf("Listen %d\nAccepting connections ...\n",port); 	//打印正在监听的端口
    					  
        int epoll_fd=epoll_create(MAX_EVENTS);					//创建一个epoll句柄  	
        if(epoll_fd==-1)  										//判断句柄是否创建成功
        {  
            perror("epoll_create failed\n");  
            exit(EXIT_FAILURE);  
        }  
    	
        struct epoll_event ev;									//epoll事件结构体  
        struct epoll_event events[MAX_EVENTS];					//事件监听队列  
        ev.events=EPOLLIN|EPOLLET;								//表示对应的文件描述符可读(包括对端SOCKET正常关闭)
        ev.data.fd=listen_fd;  									//将listen_fd设置为要读取的文件描述符							
          
        if(epoll_ctl(epoll_fd,EPOLL_CTL_ADD,listen_fd,&ev)==-1)	//注册新的listen_fd到epoll_fd中  
        {  
            perror("epll_ctl:servaddr register failed\n");  
            exit(EXIT_FAILURE);  
        }  
        int nfds;												//epoll监听事件发生的个数 
        while(1)  												//循环接受客户端请求
        {  
            nfds=epoll_wait(epoll_fd,events,MAX_EVENTS,-1); 	//等待事件发生 
            if(nfds==-1)  														
            {  
                perror("start epoll_wait failed\n");  
                continue;  										//跳过当次循环
            }  
            int i;  
            for(i=0;i<nfds;i++)  
            {  
                if(events[i].data.fd==listen_fd)				//客户端有新的连接请求    
                {      
                    if((conn_fd=accept(listen_fd, (struct sockaddr *)&cliaddr, &cliaddr_len))<0)  
                    {     
                        perror("accept conn_fd failed\n");     
                        exit(EXIT_FAILURE); //退出当前程序
                    }  
                    ev.events=EPOLLIN;		//表示对应的文件描述符可读(包括对端SOCKET正常关闭)
    				ev.data.fd=conn_fd;  	//将conn_fd设置为要读取的文件描述符  
                    if(epoll_ctl(epoll_fd,EPOLL_CTL_ADD,conn_fd,&ev)==-1){  
                        perror("epoll_ctl:conn_fd register failed\n");  
                        exit(EXIT_FAILURE); //退出当前程序
                    }  
    				char buffer[REQUEST_LEN_MAX];
    				memset(buffer, 0, REQUEST_LEN_MAX);		//buf每个字节都用0填充
    				read(conn_fd, buffer, REQUEST_LEN_MAX);	//读取客户端发送数据
    			
    				char *buff = buffer;	//处理客户端发来的数据
    				while (*buff != '{')
    					buff++;
    				cJSON *json, *json_name, *json_password, *json_type;
    				json = cJSON_Parse(buff); //解析成json形式
    				json_name = cJSON_GetObjectItem(json, "name");  //获取键值内容
    				json_password = cJSON_GetObjectItem(json, "password");
    				json_type = cJSON_GetObjectItem(json, "type");
    	
    				conn_ptr = mysql_init(NULL);
    				if (!conn_ptr) {
    					return 0; 
    				}
    				conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "password", "test", 0, NULL, 0);
    				if (conn_ptr) {
    					if(strcmp(json_type->valuestring, login)==0){		
    						sprintf(sql, "select password from userinfo where name='%s' and password='%s'", json_name->valuestring, json_password->valuestring);
    						res = mysql_query(conn_ptr, sql); //查询语句
    						if (res) {
    							printf("SELECT error:%s\n",mysql_error(conn_ptr));
    						} else {
    							res_ptr = mysql_store_result(conn_ptr);             //取出结果集
    							if(res_ptr) {
    								if(sqlrow = mysql_fetch_row(res_ptr)){
    									sprintf(Data, "%s login success\n",json_name->valuestring);
    								}else{
    									sprintf(Data, "user name or password error,please re-enter\n");
    								}
    							}
    							mysql_free_result(res_ptr);	
    						}
    					}else if (strcmp(json_type->valuestring, reg)==0){
    						sprintf(sql, "select password from userinfo where name='%s'", json_name->valuestring);
    						res = mysql_query(conn_ptr, sql); //查询语句
    						if(res){
    							printf("SELECT error:%s\n",mysql_error(conn_ptr));
    						}else{
    							res_ptr = mysql_store_result(conn_ptr);             //取出结果集
    							if(res_ptr){
    								if(sqlrow = mysql_fetch_row(res_ptr)){
    									sprintf(Data,"%s is used,Please change your name\n", json_name->valuestring);
    								}else{
    									sprintf(sql, "insert into userinfo(name,password) values('%s','%s')", json_name->valuestring, json_password->valuestring);
    									res = mysql_query(conn_ptr, sql);   //可以把insert语句替换成delete或者update语句,都一样的    
    									if(!res){ 
    										sprintf(Data, "%s register success\n",json_name->valuestring);
    									}else{       //打印出错误代码及详细信息  
    										fprintf(stderr, "Insert error %d: %s\n",mysql_errno(conn_ptr),mysql_error(conn_ptr));  
    									} 			
    								}
    							}	
    							mysql_free_result(res_ptr);	
    						}		
    					}
    				}else{
    					printf("Connection failed\n");
    				} 
    				strcpy(Response,ResponseHead);
    				strcat(Response, Data);
    				write(conn_fd, Response, strlen(Response));	//发送数据回客户端
    				printf("ResponseData:%s\n",Data);
    				
    				mysql_close(conn_ptr);
    				cJSON_Delete(json);			
    				close(conn_fd);		//关闭套接字
        	    }
    		}
        } 
        return 0;
    }	

    8.前往cJSON官网下载cJSON,将其中的cJSON.c和cJSON.h复制到main.c所在目录

    9.gcc main.c cJSON.c -o login  -I /usr/include/mysql -L /usr/lib64/mysql -l mysqlclient -lm

    //将/usr/include/mysql和/usr/lib64/mysql更改为你系统上对应的mysql include和lib路径再执行

    10.执行成功后会在当前目录下生成一个名为  mysql  的可执行文件,执行该文件我们的服务端就正常启动了

    11.用浏览器打开index.html,然后就可以输入用户名和密码开始测试了

    展开全文
  • 这次给大家分享的是目前很多网站中流行的弹出式登录框...要实现这个功能的大致思路是: 1.首先要在页面上设置一个登录按钮,可以是<button><a><img>都行,我们点击这个元素的时候会弹出登录框 ...
  • 项目简介:本课程通过使用 PHP 及 Web 前端技术实现一个网站注册登录入口页面,学习并实践 PHP 编程,GD库,MySQL 扩展,Bootstrap 响应式布局,Cookie/Session 及 Ajax 等知识点。本项目发布在实验楼,分为四部分...
  • 项目简介登录注册是我们在web开发中最常见的模块,也是我们日常生活中经常接触的功能。用户通过前端表单页面填写内容,通过POST方式提交到后台,然后经过PHP代码处理提交内容后,针对登录或者注册的逻辑继...
  • 项目简介:本课程通过使用 PHP 及 Web 前端技术实现一个网站注册登录入口页面,学习并实践 PHP 编程,GD库,MySQL 扩展,Bootstrap 响应式布局,Cookie/Session 及 Ajax 等知识点。本项目发布在实验楼,分为四部分...
  • Flask后端实践 连载十六 Flask实现微信Web端及APP端登录注册,本文将实现微信Web端和APP端登陆注册,本文基于python3编写。某天,项目经理说,项目上除了本身自带的登陆注册,也需要第三方的登陆注册。方便用户使用...
  • 现在我们开始实现登录功能,这个可以说是Web应用最最最普遍的功能了。 先来说说我们登录的逻辑: 输入用户名、密码(validate进行前端验证)——ajax调用后台action方法——根据用户名调用业务层到数据层查询数据库...
  • web前端,用户注册登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA。 前端加密 需引入4个JS扩展文件,jsbn.js、prng4.js、rng.js和rsa.js。 <html> <head> <title>RSA ...
  • 里面有登录注册页面,个人中心页面,购物车页面,实现搜索功能,欢迎下载
  • 本文按网站前端网页开发周期论述久风手工艺网站页面实现的全过程,重点论述了久风手工艺网站页面开发的分析、手工艺网站页面的设计以及实现过程。系统主要运用HTML、CSS、JavaScript网页制作语言进行布局排版,以...
  • 项目概况 该用户登录系统通过连接SQL Server数据库实现...主要功能实现普通用户的注册登录,管理员用户的登录。 项目文件结构 数据库设计 本系统使用SQL Serve实现输入输出数据的交互,所有数据都保存在名为u...
  • 本项目是个人使用Java写的一个登录注册页面的服务器端web项目,可以与前端,像Androi之类的前端登录注册页面连接,实现前台页面的登录注册功能
  • 里面运用了html还有JavaScript,css,js等功能。可以实现上传照片功能,注册登录功能,播放视频功能等等。作为期末答辩可以拿到90分以上。
  • 分享给大家供大家参考,具体如下:web前端,用户注册登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA。前端加密需引入4个JS扩展文件,jsbn.js、prng4.js、rng.js和rsa.js。RSA Login Test...
  • 今天就来实现你的愿望,让我们一起从零开始,利用Laravel实现Web应用最常见的注册登录功能!所有的课程源码已放在Github上:laravel-start. Race Start ! 首先我们来明确一下我们这个课程需要的东西: Laravel 4.2...
  • 2020/5/12美团web前端岗视频面试总结(一面,大三实习生) 背景:国内某末流211本科。 总结一下今天的美团web前端岗视频...然后问了项目比较通用的登录注册功能实现。我回了v—model的双向绑定。 然后还问了一些小功
  • web开发中,经常会使用验证码功能,例如登录注册,或其他关键功能之前经常会使用。合理使用 验证功能可以防止ddos攻击、爬虫攻击等。  实现效果:  实现原理:  由后台提供生成验证码的接口,前端每次请求会...
  • 最近在思考网站登录注册时,如何保证用户的密码即使在传输过程中被劫持和破解(我常常喜欢将HTTP和HTTPS比作是押运公司,其功能是护送客户端与第三方服务器之间的交互数据,但是即便是强大如HTTPS,恐怕也不可能百分...
  • 本文介绍了以Java作为后台语言,以Tomcat搭建本地服务器,同时连接MySQL数据库实现的一个简单的网页注册和登陆功能实现前端页面主要使用了html,JavaScript 和 Processing。   实现的代码如下。     ...
  • 前端angular js +bootstrap 后端SSM框架,实现功能登录注册、分页、显示学生列表、显示班级列表、添加学生信息、添加班级信息、删除学生信息’
  • //web首页,显示登录注册页面 QQ登录页面    账户:  密码:  验证码 ... 登录 ... 注册 ...//实现注册功能  request.setCharacterEncoding("utf-8");  String na

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 183
精华内容 73
关键字:

web前端注册登录功能实现