Web App Project

로그인 기능 만들기(react, node, mysql)[post란? 검사맡으러 가기]

하얀성 2024. 1. 4. 15:45

1. 폼 만들기

 

2. mysql에 데이터 등록


실행하기

 

로그인 페이지에서 로그인을 시도해봤는데 db에 없다고 나온다.

no record : 명령 전달은 됬으나, db에 없는 내용

success : db에 있어서 무사히 매칭됨.

 

 


 

mysql 과 서버 연결과정 그리고, 서버에서 react로 data를 들고오는 상황을 그려보는게 잘 안되서 헷갈렸던 그런 내용이었음. 

+ git 버전 관리를 통해 수행하는 프로젝트라 commit 관리 부분에서 예상치 못한 오류도 있었지만 무사히 넘어갔고,

commit을 branch에서 또 한다고 덮어 쓰는게 아니라 여러 commit이 남으며, 그 이전 commit 한 것으로 돌아갈 수 있다는 것도 배움.(물론 돌아가고 나서는 그 최신의 내용은 날라감.)

 


코드 설명 추가(헷갈리는 부분)

 

"SELECT * FROM users WHERE email = ? AND password = ?"

물음표(?)는 SQL 쿼리에서 사용되는 "파라미터화된 쿼리" 또는 "준비된 문장(prepared statement)"의 일부입니다. 이 기법은 SQL 인젝션 공격과 같은 보안 위협으로부터 보호하기 위해 사용됩니다.


 

db.query(sql, [req.body.email, req.body.password], (err, data) => { // ... });

 

  1. 첫 번째 매개변수 (SQL 쿼리 문자열):
    • 이 매개변수는 실행할 SQL 쿼리를 문자열 형태로 받습니다. 예를 들어, "SELECT * FROM users WHERE email = ? AND password = ?"와 같은 쿼리가 이 위치에 옵니다.
    • 쿼리에는 물음표(?)를 사용하여 파라미터를 대체할 수 있는 플레이스홀더가 포함될 수 있습니다.
  2. 두 번째 매개변수 (파라미터를 포함한 배열):
    • 이 매개변수는 쿼리에 포함된 플레이스홀더(?)를 대체할 값들을 포함하는 배열입니다.
    • 예를 들어, 사용자로부터 받은 email과 password 값이 배열로 전달되며, 이들은 쿼리의 물음표 자리에 순서대로 대입됩니다. 즉, 첫 번째 ?는 email로, 두 번째 ?는 password로 대체됩니다.
    • 만약 쿼리에 플레이스홀더가 없다면, 이 매개변수는 생략할 수 있습니다.