happy cat image

everdevel

Make It Yours, 에버디벨

UI 변경

EEOS

에버디벨 책을 학습할 수 있는 클라우드 개발 환경을 제공합니다.
개발환경구축없이 태블릿에서도 개발할 수 있는 책의 예제와 프로젝트
오직 당신을 위한 스토리지, URL, DB, 무제한 트래픽
그리고 웹기반 개발환경을 제공합니다.

더 알아보기

웹애플리케이션을 만들고 싶은데 이것도 알아야 하고
저것도 알아야 한다는데 어떻게 해야할지 모르겠다면

웹프로그래밍 초보자를 넘어 프로그래밍을 처음 접하는 분들을 위해
에버디벨이 1년넘게 작업한

HTML5 + CSS3 + jQuery + MySQL + PHP

한권으로 배우는 웹코딩 시작하기

회원정보를 DB에 저장해 보기.

이전 강좌에서 만든 회원가입 폼에 이어 입력한 값들을 디비에 저장하는 기능을 만들어 봅시다.
만드는 방법 또한 매우 간단합니다. 값들을 받아서 insert into 문을 실행하면 끝이죠.
그럼 한번 만들어 볼까요.

<?php
    include "../include/dbConnect.php";

    $memberId = $_POST['memberId'];
    $memberName = $_POST['memberName'];
    $memberPw = $_POST['memberPw'];
    $memberPw2 = $_POST['memberPw2'];
    $memberNickName = $_POST['memberNickName'];
    $memberEmailAddress = $_POST['memberEmailAddress'];
    $memberBirthDay = $_POST['memberBirthDay'];

    //PHP에서 유효성 재확인

    //아이디 중복검사.
    $sql = "SELECT * FROM member WHERE memberId = '{$memberId}'";
    $res = $dbConnect->query($sql);
    if($res->num_rows >= 1){
        echo '이미 존재하는 아이디가 있습니다.';
        exit;
    }

    //비밀번호 일치하는지 확인
    if($memberPw !== $memberPw2){
        echo '비밀번호가 일치하지 않습니다.';
        exit;
    }else{
        //비밀번호를 암호화 처리.
        $memberPw = md5($memberPw);
    }

    //닉네임, 생일 그리고 이름이 빈값이 아닌지
    if($memberNickName == '' || $memberBirthDay == '' || $memberName == ''){
        echo '생일혹은 닉네임의 값이 없습니다.';
    }

    //이메일 주소가 올바른지
    $checkEmailAddress = filter_var($memberEmailAddress, FILTER_VALIDATE_EMAIL);

    if($checkEmailAddress != true){
        echo "올바른 이메일 주소가 아닙니다.";
        exit;
    }

    //이제부터 넣기 시작
    $sql = "INSERT INTO member VALUES('','{$memberId}','{$memberName}','{$memberNickName}','{$memberPw}','{$memberEmailAddress}','{$memberBirthDay}');";

    if($dbConnect->query($sql)){
        echo '회원가입 성공';
    }
?>

소스를 설명해 볼껀데요.
일단 데이터 들을 받아 줍니다.

$memberId = $_POST['memberId'];
    $memberName = $_POST['memberName'];
    $memberPw = $_POST['memberPw'];
    $memberPw2 = $_POST['memberPw2'];
    $memberNickName = $_POST['memberNickName'];
    $memberEmailAddress = $_POST['memberEmailAddress'];
    $memberBirthDay = $_POST['memberBirthDay'];

우리는 이전에 javascript를 통해서 아이디가 중복된 값인지 패스워드는 일치하는지 등등 검사를 했었습니다.
하지만 여기 페이지에서는 그 기능을 다시 만들어 줘야 합니다. PHP로요.
이렇게 해야 하는 이유는 무엇일까요?
바로 자바스크립트는 클라이언트 사이드 언어 이기 때문입니다. 클라이언트 사이드 언어는 크롬 인스펙터등을 통해서 얼마든지 소스를 조작가능 합니다.
즉, 우리가 만든 기능들을 검사하지 않게 하고 바로 넘어 갈 수도 있다는 것이지요, 물론 웹을 아는 나쁜 사람들일 것입니다.
이러한 사람들이 하는 행위를 방지하기 위해서 PHP에서도 그 과정을 한번 더 거칩니다.

//PHP에서 유효성 재확인

    //아이디 중복검사.
    $sql = "SELECT * FROM member WHERE memberId = '{$memberId}'";
    $res = $dbConnect->query($sql);
    if($res->num_rows >= 1){
        echo '이미 존재하는 아이디가 있습니다.';
        exit;
    }

    //비밀번호 일치하는지 확인
    if($memberPw !== $memberPw2){
        echo '비밀번호가 일치하지 않습니다.';
        exit;
    }else{
        //비밀번호를 암호화 처리.
        $memberPw = md5($memberPw);
    }

    //닉네임, 생일 그리고 이름이 빈값이 아닌지
    if($memberNickName == '' || $memberBirthDay == '' || $memberName == ''){
        echo '생일혹은 닉네임의 값이 없습니다.';
        exit;
    }

    //이메일 주소가 올바른지
    $checkEmailAddress = filter_var($memberEmailAddress, FILTER_VALIDATE_EMAIL);

    if($checkEmailAddress != true){
        echo "올바른 이메일 주소가 아닙니다.";
        exit;
    }

위의 소스에서와 같이 아이디 중복검사를 거치고 패스워드가 일치하는지를 검사하고 공백값이 있는지도 검사합니다.
저 위의 방법에서 걸린 사람들은 어차피 비정상적인 경로로 들어온 경우 이기 때문에 따로 어긋난 짓을 했을때의 행위는 만들어주지 않고 그냥 exit처리만 합니다.
저는 그렇지만 여러분들은 여러분이 원하는 방식으로 하면 됩니다. 비밀번호를 검사하고 비밀번호가 일치하면
$memberPw = md5($memberPw); 이렇게 md5라는 함수에 값을 넣는데요. 이러한 비밀번호가 암호화 처리가 됩니다. 여러분들이 웹 서비스를 만들때 고객분들의 비밀번호가 그대로 DB에 들어가면 안되겠죠? 만약 나쁜 누군가가 여러분이 만든 DB를 해킹한다면 암호화 되지 않은 비밀번호가
뚫린다면 정말 큰일이 납니다. 그렇게 하기 위해서 비밀번호는 개발자도, 회사 사장도, 비밀번호의 주인도 모르는 무언가로 변경되어 저장이 되어야 합니다. 무조건이요.
하지만 일부 쓰레기 같은 회사들은 암호화 하지 않고 저장하는 경우들도 많습니다. 그러니 조심 하세요.

그리고 위의 과정들을 모두 거치면 저장을 합니다.

//이제부터 넣기 시작
    $sql = "INSERT INTO member VALUES('','{$memberId}','{$memberName}','{$memberNickName}','{$memberPw}','{$memberEmailAddress}','{$memberBirthDay}');";

    if($dbConnect->query($sql)){
        echo '회원가입 성공';
    }

짜잔 이렇게 저장이 가능합니다.

강좌로 돌아가기