vue.js와 laavel을 이용하여 설문조사 사이트 만들기(Laavel 실장편)

10627 단어 PHPLaravel

카탈로그


몇 차례에 걸쳐 기재했다.
개요
준비 편(Vue.js 프로젝트 초기화 등)
vue.js편(vue.js,vuex의 소개)
Laavel 준비편(Laavel에서 사용하는 기능 등에 대한 설명)
Laavel 실장편(Laavel로 실장할 때의 소스와 구조 등을 소개함)<<<
먼저 프론트 데스크와 서버 디자인을 작성해 주세요.

로그인 작업



로그인 프로필


설문지를 미리 기재하는 전제 조건
  • 이메일 주소와 비밀번호 사전 등록
  • 성공적으로 로그인할 때 클라이언트에게 영패를 발송(클라이언트가 이 영패를 저장)
  • 클라이언트가 서버에 설문지를 보낼 때 영패를 동시에 발송
  • 설문지 등록 동작



    설문지 등록 개요


    고객 POST의 데이터를 읽고 DB에 로그인합니다.

    로그인 처리(인증)


    다음 예제$auth->['psw']에 고객이 입력한 암호가 입력됩니다.
        public static function CheckPsw($auth)
        {
            $ret = [
                'result' => true,
                'id' => 0,
            ];
    
            // get psw from DB.
            $psw = Psw::where('mail', $auth['mail'])->first();
            if($psw !== null)
            {
                // verify psw and hash.
                $ret['result'] = password_verify($auth['psw'], $psw['psw']);
                $ret['id'] = $psw['id'];
            }
            else
            {
                $ret['result'] = false;
            }
    
            return $ret;
        }
    
    password_verify 인증 암호를 사용합니다.password_verify($password, $hash)에 입력한 $password$hash와 일치하는지 확인합니다.
    (암호에서 미리 구한 해싱을 DB에 등록)
    참고 자료

    생성 토큰


    로그인에 성공하면, 영패를 만들고 클라이언트에게 되돌려줍니다.
    고객은 이 영패를 저장하고 설문지를 등록할 때 영패를 사용한다.
        // make token from ID.
        public static function MakeToken($id)
        {
            $str = $id . 'sakesake';
    
            return md5($str);
        }
    
    영패는md5만 영패로 한다.
    이 경우sakesake라는 키워드(별다른 의미 없음)와 아이디로 영패를 만든다.
    나는 이 위에 날짜를 더하는 것이 정말 좋다고 생각한다.(이렇게 되면 매번 같은 영패를 만든다.)

    설문지 내용 불러오기


    설문지의 내용이 DB에 로그인되어 필요에 따라 설문지 내용을 얻습니다.
        private static function init()
        {
            $db = Master::All();
            foreach($db as $value)
            {
                if(isset(Master::$question[$value['id']]) === false)
                {
                    Master::$question[$value['id']] = [
                        'question' => $value['id'],
                        'type' => $value['type'],
                        'answer' => [$value['answer'] => $value['value']],
                    ];
                }
                else
                {
                    Master::$question[$value['id']]['answer'][$value['answer']] = $value['value'];
                }
            }
        }
    
    Master::All(); 마스터표에서 모두 얻어 설문지의 주 데이터로 저장한다.
    이것은 당연히 매번 실행할 필요는 없지만, 지금은 매번 사용자가 로그인할 때마다 얻을 수 있다.
    예를 들어 시작할 때는 DB부터 한 번 읽어도 되지만 시작할 때는 한 번만 하고 어디서 어떻게 써야 좋을지 몰라서 일단 이렇게 했다.

    레코드 추가


    설문지를 등록해야 하는데, 같은 메일주소의 사람이 여러 번 로그인했다면
    최종 등록 결과만 유지됩니다.
    각 메일 주소에 ID가 할당됩니다. 이 ID가 설문 조사에 있는지 확인하십시오.
    존재하면 삭제됩니다.
    저는 그냥 단순히 delete하고 싶어요.
    조사 결과표는 외부 키워드로 단순히 삭제할 수 없기 때문에 이런 방법을 취했다.
    분명 더 좋은 방법이 있을 거라고 생각하지만, 어쨌든 이걸로 움직이면 돼.
            $deleteData = Result::where('id', $id)->whereNotNull('tex_id')->get();
            $deleteArray = [];
            foreach($deleteData as $value)
            {
                array_push($deleteArray, $value['tex_id']);
            }
            Result::where('id', $id)->delete();
            foreach($deleteArray as $value)
            {
                Tex_id::where('id', $value)->delete();
            }
    

    좋은 웹페이지 즐겨찾기