vue.js와 laavel을 이용하여 설문조사 사이트 만들기(Laavel 실장편)
카탈로그
몇 차례에 걸쳐 기재했다.
개요
준비 편(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();
}
Reference
이 문제에 관하여(vue.js와 laavel을 이용하여 설문조사 사이트 만들기(Laavel 실장편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yasu_yyy/items/a4ae876b3fd6549c70d5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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;
}
// make token from ID.
public static function MakeToken($id)
{
$str = $id . 'sakesake';
return md5($str);
}
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'];
}
}
}
$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();
}
Reference
이 문제에 관하여(vue.js와 laavel을 이용하여 설문조사 사이트 만들기(Laavel 실장편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yasu_yyy/items/a4ae876b3fd6549c70d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)