實現(xiàn)簡單登陸注冊功能流程分析

一:思路分析

  • 用戶前端注冊賬號時懂傀,我們前端需要使用ajax訪問后端文件(下面以php文件舉例)经瓷,通過php文件操作服務(wù)器里面的數(shù)據(jù)庫恤磷,當然我們得提前建立好數(shù)據(jù)庫與表、編寫php文件訪問數(shù)據(jù)庫歌殃,將前端所需數(shù)據(jù)做輸出。前端則通過ajax訪問php文件哥童,獲取數(shù)據(jù)php文件中輸出的返回數(shù)據(jù)挺份。最終使用js操作編寫所需呈現(xiàn)給用戶的效果。若用戶前端登錄贮懈,登錄成功以后將信息保存至cookie中匀泊。后面通過讀取cookie中數(shù)據(jù),將首頁登錄字更換為用戶賬戶名朵你。

二:關(guān)于建立數(shù)據(jù)庫與建表

  1. 這里使用Navicat來建立數(shù)據(jù)庫與表各聘,我們打開Navicat,點擊連接抡医,然后填寫新建鏈接中信息(連接名隨意取躲因,用戶名隨意仍缇础)。
    數(shù)據(jù)庫中新建連接
  2. 然后我們點擊新建數(shù)據(jù)庫建立數(shù)據(jù)庫(數(shù)據(jù)庫名可以隨意填寫大脉,需要注意字符集排序規(guī)則的格式)搞监,完了以后點擊確定。
    新建數(shù)據(jù)庫

    新建數(shù)據(jù)庫2
  3. 我們打開建好的數(shù)據(jù)庫镰矿,在點擊圖下方的新建表琐驴,填寫我們后面所需要用到的數(shù)據(jù),一般情況賬戶名設(shè)置為不重復(fù)秤标,完了以后ctrl+s保存設(shè)置表名绝淡,當然我們也可以最開始就設(shè)置好表的名字。
    打開建好的數(shù)據(jù)庫

    填寫表的信息1

    設(shè)置列不重復(fù)

    設(shè)置表名

三苍姜、編寫PHP文件訪問服務(wù)器中數(shù)據(jù)庫

  1. 首先通過php文件對建立連接數(shù)據(jù)庫牢酵,設(shè)置編碼,選擇數(shù)據(jù)庫衙猪。然后在php文件里編寫SQL語句操作數(shù)據(jù)庫馍乙,做判斷將前端數(shù)據(jù)做返回。
//建立連接垫释,選擇數(shù)據(jù)庫的conn.php文件
<?php 
    //鏈接
    mysql_connect("localhost:3306","root","");
    mysql_query("set names 'utf8'");
    mysql_query("set character set 'utf8'");
    mysql_select_db("liyi");
 ?>
//這個是cors跨域php文件示例潘拨,該文件為login.php文件
<?php
    //添加請求頭
    header("Access-Control-Allow-Origin:*");
    $username=$_GET["username"];
    $password=$_GET["password"];
    //鏈接數(shù)據(jù)庫
    require "conn.php";
    //編寫SQL語句
    $sql = "SELECT username,password FROM users WHERE username='$username' AND password='$password'";
    $result = mysql_query($sql);

    if( $row = mysql_fetch_array($result,MYSQL_ASSOC)){
        $r = array("res_code"=>1,"res_err"=>"","res_body"=>$row);
        echo json_encode($r);//向前端返回數(shù)據(jù)
    }else{
        $r = array("res_code"=>-1,"res_err"=>"用戶名或密碼錯誤");
        echo json_encode($r);//向前端返回數(shù)據(jù)
    }
    mysql_close();
 ?>
//register.php文件
<?php
    //CORS跨域添加請求頭
    header("Access-Control-Allow-Origin:*"); 
    $username=$_POST["username"];
    $password=$_POST["password"];
    require "conn.php";
    $sql = "INSERT INTO users(username,password) VALUES('$username','$password')";
    $result = mysql_query($sql);
    if($result){
        $arr=array("res_code"=>1,"res_err"=>"");
        echo json_encode($arr);//向前端返回數(shù)據(jù)
    }else{
        $arr = array("res_code"=>-1,"res_err"=>"錯誤:".mysql_error());
        echo json_encode($arr);//向前端返回數(shù)據(jù)
    }
    mysql_close();
 ?>

四:前端通過ajax訪問獲取數(shù)據(jù)

  1. 前端通過ajax訪問獲取到數(shù)據(jù)以后,做判斷將所需內(nèi)容渲染至頁面饶号。下面是使用jQuery發(fā)起ajax請求訪問php文件獲取返回數(shù)據(jù)铁追。做登錄與注冊操作,登錄成功我們使用cookie將用戶信息保存至cookie中茫船。
//登錄頁面代碼示例
$.cookie.json=true;//這里使用了jquery中的cookie插件琅束,這個設(shè)置是將保存至cookie中的數(shù)據(jù)為json文本的形式做保存
$("#login").click(function(){
    const data = $("#sign_user").serialize();
    $.getJSON("http://localhost:80/php2/login.php",data,function(data){
        if(data.res_code==1){
            $("#prompt").html("登錄成功");
            location="/index.html";
            $.cookie("login_user",data,{path:"/",expires:7});
        }else{
            $("#prompt").html("用戶名或密碼錯誤");
        }
    })
    return false;
})
//當點擊注冊時
$.cookie.json=true;//這里使用了jquery中的cookie插件,這個設(shè)置是將保存至cookie中的數(shù)據(jù)為json文本的形式做保存
$("#register").click(function(){
    const data = $("#register_form").serialize();
    //獲取驗證框的value值
    const value= $("#checkout").val();
    //判斷是否和圖片上文字相同
    if(value == $(".code").data("content")){
        //判斷密碼和再次輸入密碼是否相同
        if($(".confirm").val()==$(".re-confirm").val()){
                //發(fā)起ajax請求
            $.post("http://localhost:80/php2/register.php",data,function(data){
                if(data.res_code==1){
                    console.log(1)
                    $(".prompt1").html(`禮易賬號注冊成功`);
                    location="/html/login.html";
                }else{
                    $(".prompt1").html(`禮易賬號已被注冊算谈,請更換賬戶名`);
                }
            },"json")
        }else if($(".confirm").val()!==$(".re-confirm").val()){
            $(".prompt1").html(`兩次輸入的密碼不相同涩禀,請再次確認`);
        }
    }else if(value !== $(".code").data("content")){
        $(".prompt1").html(`驗證碼輸入錯誤,請重新輸入`);
    }
    return false;
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末然眼,一起剝皮案震驚了整個濱河市艾船,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌高每,老刑警劉巖屿岂,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鲸匿,居然都是意外死亡爷怀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門带欢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來运授,“玉大人烤惊,你說我怎么就攤上這事∮蹼” “怎么了柒室?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逗宜。 經(jīng)常有香客問我伦泥,道長,這世上最難降的妖魔是什么锦溪? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮府怯,結(jié)果婚禮上刻诊,老公的妹妹穿的比我還像新娘。我一直安慰自己牺丙,他們只是感情好则涯,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冲簿,像睡著了一般粟判。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上峦剔,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天档礁,我揣著相機與錄音,去河邊找鬼吝沫。 笑死呻澜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的惨险。 我是一名探鬼主播羹幸,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辫愉!你這毒婦竟也來了栅受?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤恭朗,失蹤者是張志新(化名)和其女友劉穎屏镊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痰腮,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡闸衫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诽嘉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔚出。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡弟翘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出骄酗,到底是詐尸還是另有隱情稀余,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布趋翻,位于F島的核電站睛琳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏踏烙。R本人自食惡果不足惜师骗,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讨惩。 院中可真熱鬧辟癌,春花似錦、人聲如沸荐捻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽处面。三九已至厂置,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魂角,已是汗流浹背昵济。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留野揪,地道東北人砸紊。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像囱挑,于是被迫代替她去往敵國和親醉顽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361