iT邦幫忙

0

APP輸入帳密如何跟Mysql帳密作驗證

  • 分享至 

  • xImage

現在Mysql帳密是已經寫好的狀態,不須另外註冊,個人是用Andorid Studio寫程式,有做好的是傳送資料過去PHP有收到,但不會做驗證的功能,想問各位如何不用註冊的情況下可以做驗證的方法

以下是我的程式碼
https://ithelp.ithome.com.tw/upload/images/20190520/20117758AEwPTaKcBT.pnghttps://ithelp.ithome.com.tw/upload/images/20190520/201177582OWyPOPLaX.pnghttps://ithelp.ithome.com.tw/upload/images/20190520/20117758EYGwkGnKSE.pnghttps://ithelp.ithome.com.tw/upload/images/20190520/20117758GpHXbCQGrC.png

神威 iT邦研究生 4 級 ‧ 2019-05-21 10:17:52 檢舉
有點不懂你的意思.....你的意思是說mysql帳密都建好了,使用者透過APP,若mysql有這組帳密就可登入,這樣嗎?
如果是這樣的話,你就只要把你的mysql帳密跟你app輸入的帳密做比對即可
wolf21315 iT邦新手 5 級 ‧ 2019-05-22 15:13:25 檢舉
不好意思敘述有問題 現在卡在PHP如何做比對和PHP結果回傳到APP那裏
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
dragonH
iT邦超人 5 級 ‧ 2019-05-21 09:17:29
最佳解答

看不懂你的文字敘述...

不過看你的code

應該是想做一個登入介面吧

帳密驗證是後端的事(php)

app需要做的就是收到php驗證完後的結果

來觸發相對應的activity

所以你的問題是php那邊不會寫判斷

還是app收不到結果呢

看更多先前的回應...收起先前的回應...
wolf21315 iT邦新手 5 級 ‧ 2019-05-22 15:11:46 檢舉

不好意思文字描述有問題 是PHP不會寫判斷然後如何回傳到APP那裏

dragonH iT邦超人 5 級 ‧ 2019-05-22 15:15:48 檢舉

那你可能要上個你的php code 來改會比較快

wolf21315 iT邦新手 5 級 ‧ 2019-05-22 17:27:59 檢舉

https://ithelp.ithome.com.tw/upload/images/20190522/201177587eIu8RplFq.png 還請您幫我看一下感謝

dragonH iT邦超人 5 級 ‧ 2019-05-22 17:34:56 檢舉

那個..可以貼文字嗎/images/emoticon/emoticon06.gif

那你這樣app拿不到的response嗎

wolf21315 iT邦新手 5 級 ‧ 2019-05-23 00:33:09 檢舉

你說在程式碼下註解嗎?
在GET的時候拿不到

dragonH iT邦超人 5 級 ‧ 2019-05-23 10:11:07 檢舉

幫你改好了

你有些 function 沒有照他的規範使用

我就照官方doc改一下

或許可能實務沒人這樣用

但作為練習應該ok


<?php
	$con = mysqli_connect("localhost", "root", "", "myDB");
	$respone = array("success" => false);
	header("Content-type:application/json");
	if (mysqli_connect_errno()){
			echo "Failed to connect to MySQL: " . mysqli_connect_error();
	}
	if (!isset($_POST["user"]) || !isset($_POST["user"])) { // $_POST["user"] 和 $_POST["user"] 為必要資訊
			$respone["msg"] = "missing params";
			http_response_code(400);
			echo json_encode($respone);
			return false;
	}
	$user = $_POST["user"];
	$pwd = $_POST["pwd"];
	$sql = mysqli_prepare($con, "select user_id, password from user where user_id = ? and password = ?");
	mysqli_stmt_bind_param($sql, "ss", $user, $pwd);
	mysqli_stmt_execute($sql);
	mysqli_stmt_store_result($sql);
	mysqli_stmt_bind_result($sql, $user, $pwd);
	http_response_code(401);
	if (mysqli_stmt_fetch($sql)) {
			$respone["success"] = true;
			http_response_code(200);
			// $respone["user_id"] = $user;
			// $respone["password"] = $pwd;
	}
	echo json_encode($respone);
?>

情況1
帳號或密碼未送到後端時

php回傳的結果

// status code 400
{
    "success": false,
    "msg": "missing params"
}

情況2
帳號或密碼都有送到後端, 但是帳號或密碼錯誤

php回傳的結果

// status code 401
{
    "success": false
}

情況3
帳號或密碼都有送到後端, 且帳號密碼皆正確

php回傳的結果

// status code 200
{
    "success": true
}

app那在針對這些情況去觸發相對應的activity就好

然後密碼 通常沒人存明碼在 database 了

通常會加密 salt後才存入

wolf21315 iT邦新手 5 級 ‧ 2019-05-23 13:33:06 檢舉

好的感謝我再試試看

wolf21315 iT邦新手 5 級 ‧ 2019-05-28 18:06:24 檢舉

我想請問一下http_response_code() 是不是要用header語法才能呈現出來

dragonH iT邦超人 5 級 ‧ 2019-06-13 00:14:17 檢舉

沒通知 現在才看到...

http code 本來就是header的一部分喔

我要發表回答

立即登入回答