第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

發(fā)送Ajax請(qǐng)求后如何檢查用戶是否登錄成功?

發(fā)送Ajax請(qǐng)求后如何檢查用戶是否登錄成功?

PHP
qq_花開(kāi)花謝_0 2023-06-24 15:53:44
一般來(lái)說(shuō),在向 PHP 后端發(fā)送 JS ajax 請(qǐng)求后,我是否需要添加 http_response_code(201); 在檢查用戶提交的數(shù)據(jù)在 PHP 代碼中是正確的之后,我可以在 axios 中使用 then() 嗎?如果提交的數(shù)據(jù)有問(wèn)題我需要添加 http_response_code(401); 所以 catch() 部分將被觸發(fā),這個(gè) http_response_code 是必須的嗎?(我的意思是它是如何工作的?)因?yàn)槲铱赡芟霗z查它是否是內(nèi)部服務(wù)器錯(cuò)誤(500)或只是未經(jīng)授權(quán)的用戶錯(cuò)誤(401)以向用戶顯示方便的錯(cuò)誤消息。這就是專業(yè)項(xiàng)目中的做法嗎?例子 :JS:axios.post('http://localhost/PHPFiles/UserAuthentification.php',null,config)                    .then((response) => {                        if(response.status == 200)                        this.GetData();                    })                    .catch((error) => {                        if (error.response.status == 401) {                              this.ShowUnauthorizedUserMessage();                            }                        if(error.response.status == 500){                              this.ShowServerErrorMessage();                            }                    });PHP:<?php$serverName = "localhost";$userName = "root";$userPassword = "";$dataBase = "todosdbs";try{$con = new mysqli($serverName,$userName,$userPassword,$dataBase);$data = json_decode(file_get_contents('php://input'),false);$stmt = $con->prepare("SELECT userid,username,userpassword,useremail FROM users WHERE useremail = ?");$stmt->bind_param("s",$data->currentUserEmailText);$stmt->execute();$result = $stmt->get_result();}catch(exception $e){    http_response_code(500);    die("server error");}if($result->num_rows>0){    try{    $row = $result->fetch_array(MYSQLI_ASSOC);    }catch(exception $e){        http_response_code(500);        die("server error!");     }    $pass = $row['userpassword'];    if(password_verify($data->currentUserPasswordText,$pass)){        http_response_code(200);    }    else{        http_response_code(401);        die("Unauthorized User!");    }}else{    http_response_code(401);    die("Unauthorized User!");}?>http_response_code(number) 也是如此;您如何從 PHP 后端檢查客戶端接下來(lái)要執(zhí)行哪些代碼?最后一個(gè)問(wèn)題是 201 代碼是否正確,用于通知客戶端請(qǐng)求已在 PHP 后端成功實(shí)現(xiàn)(如我的示例或其 200 中所示)?
查看完整描述

2 回答

?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以這樣做,但是對(duì)于僅驗(yàn)證用戶/通行證而言,執(zhí)行基于服務(wù)器的錯(cuò)誤代碼可能有點(diǎn)嚴(yán)厲。我個(gè)人只是將響應(yīng)保留在活動(dòng)狀態(tài),就像您點(diǎn)擊要查找的頁(yè)面并且該頁(yè)面知道要做什么一樣,我將其保留為并只發(fā)回一個(gè)200json 數(shù)組,如下所示:


die(json_encode([

    # $valid would be a boolean based on your login/pass validation success

    'success' => $valid,

    # Depending on success, show appropriate msg

    'alert' => ($valid)? 'Successful login' : 'Invalid Username or Password',

    # Send back data if necessary

    'data' => false

]));

所以它可能看起來(lái)更像是:


/functions.php


<?php

function connect()

{

    return new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

}


function getUser($username, $con)

{

    $stmt = $con->prepare("SELECT * FROM users WHERE useremail = ?");

    $stmt->bind_param("s", $username);

    $stmt->execute();

    $result = $stmt->get_result();

    

    if($result->num_rows == 0)

        return false;


    return $result->fetch_array(MYSQLI_ASSOC);

}


function userValid($user, $password)

{

    return password_verify($password, $user['userpassword']);

}


function ajaxResponse($success, $data = false, $msg = false)

{

    die(json_encode([

        'success' => $success,

        'data' => $data,

        'msg' => $msg,

    ]));

}

/config.php


<?php

define('ROOT_DIR', __DIR__);

define('DB_HOST', "localhost");

define('DB_NAME', "todosdbs");

define('DB_USER', "root");

define('DB_PASS', "");

include(ROOT_DIR.'/functions.php');

/PHPFiles/UserAuthentification.php


<?php

include(__DIR__.'/../config.php');

# Send json header since that is what is returning

header('Content-Type: application/json');


try{

    # Fetch the database connection

    $con = connect();

    # Fetch the post

    $POST = json_decode(file_get_contents('php://input'),false);

    # Fetch the user, inject username and db

    $user = getUser($POST->currentUserEmailText, $con);

    # Stop if username invalid

    if(!$user) {

        ajaxResponse(false, false, "Invalid user");

    }

    # Check validation

    $response = (userValid($user, $POST->currentUserPasswordText))? [

        'success' => true,

        'data' => $user,

        'msg' => 'User logged in successfully'

    ] : [

        'success' => false,

        'data' => false,

        'msg' => 'Invalid username or password'

    ];

    # Report back

    ajaxResponse(...$response);

}

catch(\Exception $e) {

    # Report back error if it occurs

    ajaxResponse(false, false, $e->getMessage());

}


查看完整回答
反對(duì) 回復(fù) 2023-06-24
?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

使用 HTTP 狀態(tài)代碼(2xx 表示成功,4xx 表示錯(cuò)誤,...)非常適合提供有關(guān)請(qǐng)求進(jìn)行情況的總體了解。通常,您還希望在響應(yīng)正文中添加其他詳細(xì)信息,并進(jìn)行編碼,以便客戶端可以輕松讀取它們(例如 JSON),以便向客戶端提供有關(guān)錯(cuò)誤的更清晰提示(并區(qū)分所有可能的結(jié)果?。?/p>

例如,成功響應(yīng)可能具有 200 狀態(tài)代碼并具有以下正文:?{"type":"sucess", "message": "User logged in successfully"}

雖然無(wú)效的登錄嘗試通常會(huì)導(dǎo)致 403 狀態(tài)代碼,并且響應(yīng)可能如下所示:?{"type":"error", "message": "Invalid username or password"}

但是,假設(shè)您想要說(shuō)明具有給定電子郵件地址的帳戶是否存在(例如 Trello),那么您將為這兩個(gè)響應(yīng)使用 403 狀態(tài)代碼,但具有不同的正文:

{"type":"error",?"message":?"There?is?no?account?corresponding?to?the?given?email"}
{"type":"error",?"message":?"Invalid?password"}

使用 401 狀態(tài)代碼表示需要進(jìn)行身份驗(yàn)證才能訪問(wèn)資源,如果用戶瀏覽到此頁(yè)面,通常瀏覽器會(huì)顯示這樣的登錄提示(但這不適用于 ajax 請(qǐng)求)。失敗的登錄嘗試應(yīng)該得到 403 狀態(tài)代碼。您可以查看維基百科以獲取有關(guān)狀態(tài)代碼的詳細(xì)信息以及有關(guān)瀏覽器如何解釋它們的一些提示。

旁注:在成功登錄的情況下,您似乎不會(huì)返回任何令牌,也不會(huì)設(shè)置 cookie,您肯定希望這樣做以確保用戶在后續(xù)請(qǐng)求中登錄。

如果您正在尋找身份驗(yàn)證示例,可以查看 oAuth2 服務(wù)器或Firebase 身份驗(yàn)證 API。


查看完整回答
反對(duì) 回復(fù) 2023-06-24
  • 2 回答
  • 0 關(guān)注
  • 200 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)