<?php
error_reporting(E_ALL);
// php 의 오류 레포팅을 모든 오류를 보고 하도록 설정합니다
ini_set('display_errors', 1);
// php오류 메세지를 화면에 표시하도록 설정합니다
include ('dbcon.php');
// 외부파일을 스크립트의 포함시켜서 필요한 설정이나 함수들을 사용 할 수 있습니다.
$android = strpos($_SERVER['HTTP_USER_AGENT'], "Android");
// 사용자 에이전트문자열에서 안드로이드를 찾아서 그 위치를 $android 변수에 저장합니다. 이렇게하면 안드로이드에서 요청이 왔는지 알 수 있습니다.
if ($_SERVER['REQUEST_METHOD'] == 'POST' || $android) {
// 안드로이드 코드의 postParameters 변수에 적어준 이름을 가지고 값을 전달 받습니다.
// 클라이언트의 요청이 post방식이거나 사용자 에이전트에 안드로이드가 포함되어있으면 해당 코드를 실행합니다.
$userId = $_POST['sendId']; //아이디
$userPassword = $_POST['sendPassword']; // 비밀번호
// 아이디와 비밀번호의 길이를 확인합니다.
if (empty($userId)) {
$errMSG = "아이디를 입력하세요!";
} elseif (empty($userPassword)) {
$errMSG = "비밀번호를 입력하세요!";
}
if (!isset($errMSG)) {
// $errMSG 변수 설정이 되어있지 않은 경우만 실행됩니다 즉/ 오류메시지가 없을 때 실행합니다.
try {
// 사용자가 입력한 아이디와 비밀번호를 조회합니다.
$stmt = $con->prepare('SELECT userId, userPassword, userNickname FROM userinfo WHERE userId = ?');
// db에서 아이디, 비밀번호, 닉네임을 가져오는 쿼리를 준비합니다.
$stmt->bindParam(1, $userId);
// 쿼리의 "?"의 대응하는 값을 설정합니다. 여기서는 userId를 대입합니다.
$stmt->execute();
// 준비된 sql문을 실행합니다.
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// 실행된 쿼리의 결과를 가져와서 연관 배열형태로 $row에 저장합니다.
if ($row) {
// 아이디가 일치하는 사용자를 찾았습니다.
// 데이터베이스에 저장된 비밀번호와 입력된 비밀번호를 비교합니다.
// 데이터가 존재하는 경우 실행합니다.
if ($userPassword === $row['userPassword']) {
// 비밀번호가 일치합니다. 로그인 성공 메시지와 사용자의 닉네임을 반환합니다.
$successMSG = "로그인 성공하였습니다. 홈으로 이동합니다.";
$nickname = $row['userNickname']; // 사용자의 닉네임
} else {
// 비밀번호가 일치하지 않습니다. 오류 메시지를 반환합니다.
$errMSG = "아이디 또는 비밀번호가 일치하지 않습니다.";
}
} else {
// 일치하는 아이디가 없습니다. 오류 메시지를 반환합니다.
$errMSG = "아이디 또는 비밀번호가 일치하지 않습니다.";
}
} catch (PDOException $e) {
die("Database error: " . $e->getMessage());
}
}
}
$response = array();
if (isset($errMSG)) {
$response['error'] = $errMSG;
}
if (isset($successMSG)) {
$response['success'] = $successMSG;
}
if (isset($nickname)) {
$response['nickname'] = $nickname;
}
// JSON 응답 전에 URL 디코딩 적용
foreach ($response as &$value) {
// $response의 배열의 값을 URL 디코딩합니다.
$value = urldecode($value);
}
echo json_encode($response);
?>
'PHP' 카테고리의 다른 글
SQL 문 사용하기 / 공부하기 / DB명령어/ 해석하기 (4) | 2024.05.15 |
---|---|
안드로이드 이메일 인증번호 보내기 / PHPMailer / SMTP / Gmail (0) | 2024.05.12 |