protected Void doInBackground(Void... unused) {
/* 인풋 파라메터값 생성 */
String param = "u_id=" + etid + "&u_pw=" + etpwd + "";
try {
Log.e("check", "start");
/* 서버연결 */
URL url = new URL(
"https://daerojung.cafe24.com/htdocs/login.php");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.connect();
/* 안드로이드 -> 서버 파라메터값 전달 */
OutputStream outs = conn.getOutputStream();
outs.write(param.getBytes("UTF-8"));
outs.flush();
outs.close();
/* 서버 -> 안드로이드 파라메터값 전달 */
InputStream is = null;
BufferedReader in = null;
is = conn.getInputStream();
in = new BufferedReader(new InputStreamReader(is), 8 * 1024);
String line = null;
StringBuffer buff = new StringBuffer();
while ((line = in.readLine()) != null) {
buff.append(line + "\n");
}
data = buff.toString().trim();
Log.e("RECV DATA", data); // 받아오는 데이타
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// 1이면 로그인 성공
if (data.equals("1"))
{
}
// 0이면 비밀번호 불 일치
else if (data.equals("0")) {
// 그 외 없는 아이디
}else {
}
}
<?php
session_start();
$id = $_POST[u_id];
$pw = $_POST[u_pw];
$connect = mysqli_connect("localhost","...","...", "...") or
die( "SQL server에 연결할 수 없습니다.");
$sql = "SELECT IF(strcmp(PWD,'$pw'),0,1) pw_chk FROM users WHERE USERID = '$id'";
$result = mysqli_query($connect, $sql);
// result of sql query
if($result)
{
$row = mysqli_fetch_array($result);
if(is_null($row[pw_chk]))
{
echo "Can not find ID";
}
else
{
echo "$row[pw_chk]";
}
}
else
{
echo mysqli_errno($connect);
}
?>
로그인 구현 중 문제가 생겨 질문올립니다
doInBackground에서 웹서버를 통해 값( 0 or 1 )을 받아오고 값을 onPostExcute로 넘겨서 if문에서 문자열 비교합니다.(db에 맞는 id와 pw가 있으면 1, 비밀번호 불일치 시0 반환)
로그를 찍으면 data가 1로 들어오고 공백문자 제거도 해주었는데
equals를 실행하면 자꾸 else로 들어갑니다.
그래서 data의 길이를 찍어보니 2가 나옵니다. 앞뒤로 다른 문자열을 붙여 확인해 보아도 공백문자가 없는데 길이가2가 나옵니다ㅠㅠㅠ 왜 이런걸까요?
조언 부탁드립니다ㅠㅠ