Computer/공부정리

230314_include 폴더, 로그인 화면(입력, 확인), DB 준비

이르리의 공부일지 2023. 3. 14. 14:59

 

 

 

메모
1 포함시킨다 개념 2가지

-include: 소스 자체가 include한 부분에 포함되는 것
-import: 갔다 오는 개념, 페이지로 가서 실행한 결과만 웹 화면에 보여준다.


* include
: 코드 포함시키기
- 쓰는 이유: 페이지 수정요소 무한~

- 공통된 영역을 따로 관리(html 파일 따로 include 폴더에 저장)
- 유지보수성이 뛰어남(→개발 효율성)

>include 폴더<
html 파일 생성 후 그 안에 

<h3></h3>
<p></p>
<pre></pre>
같이 text 계열

혹은 

<a href=""></a>
link 계열
2 클래스
-특정 기능 X 특정 형태 O(자세한 형태X, 자세한 data는 사용자가 입력해서 씀)

-함수처럼 기능성, 유지보수성, 재사용성, 편의성 뿐 아니라
 전역변수로 쓸 수 있는 외부참조성 때문
 한 군데에서 데이터 관리하고 원하는 부분을 바꿔쓰도록 공유성 좋음

-멤버변수, 멤버함수
3 index 화면 링크
/
: 도메인까지 입력하겠다.
/index
:도메인
4 입력값 전송방식 2가지(get, post) 
- get : 외부 전송, 보안 프로그램 따로 돈다
- post : 내부 전송, 보안상 필요한 게 있음, python 에서 제공하는 보안옵션 CSRF 검증 키워드 넣어야 함, 안 넣을 시 에러
5 보안 관련

서버영역 저장-세션

개인 저장공간에 저장-쿠키

*쿠키는 함부로 ok 하지 말기, 내 개인공간에 변조 data를 심을 수도

 

 

 


 

 

로그인 화면 웹 서버에 구현
1 index html파일 생성
  >templates\firstapp 하위
1)index.html 생성
2)include 폴더 생성
  >include 폴더 하위
1)<h3></h3> 혹은 <p></p> 혹은 <a href=''></a>
안에 들어갈 내용 
html 파일로 만들어서 넣어두기
  >templates\firstapp 하위

index.html에서 include 폴더에 넣은 파일 내용들 
{%include '[파일경로]'%}
파일 경로 ex. firstapp/nav.html
 
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>::: 수연닷컴 :::</title>
</head>
<body>
    <!-- 제목 -->
    <h3>{% include 'firstapp/include/top.html' %}</h3>
    <hr/>
    <!-- 네비게이션 -->
    <p>{%include 'firstapp/include/nav.html'%}</p>
    <hr/>

    <!-- 페이지 메인 내용 -->
    <p>
        <b>이곳은 메뉴별 메인 내용이 들어가는 곳입니다.</b>
    </p>
    <hr/>
    <!-- 하단 -->
    <pre>{%include 'firstapp/include/bottom.html'%}</pre>
</body>
</html>
2 include 폴더
 
 
  >templates\firstapp\9day 폴더 생성 후

그 안에 

로그인 파일(form, chk 파일) 생성
3 login_form.html 파일 생성
  로그인 입력폼 html 작성
 
<form id="fm" name="fm" method="post" action="#">
            {%csrf_token%}
            아이디 : <input type='text' name='mem_id' value="" placeholder="id" required><br/>
            패스워드 : <input type="password" name='mem_pw' value="" placeholder="pw" required><hr/>
            <br/>
            <button onclick='goLogin()'>로그인</button>
</form>
 
로그인 함수
 
<script type="text/javascript">
        <!-- 로그인 체크 -->
        function goLogin(){
            var fm=document.getElementById("fm");
            if (fm.mem_id.value==""){
                alert('아이디 입력해!')
                fm.mem_id.focus();
                return;
            }
            if (fm.mem_pw.value==""){
                alert('비번 입력해!')
                fm.mem_pw.focus();
                return;
            }

            alert(fm.mem_id.value);
            alert(fm.mem_pw.value);

            fm.action="/first/login_chk/";
            fm.submit();
        }
    </script>
추가 설명 - fm 변수에 id가 fm인 태그 값 가져와서 담는다.
-.focus() 커서를 id가 mem_id, mem_pw인 태그에 이동시킨다.
-.action은 앞 뒤로 //해준다.
 
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>::: 수연닷컴 :::</title>

    <script type="text/javascript">
        <!-- 로그인 체크 -->
        function goLogin(){
            var fm=document.getElementById("fm");
            if (fm.mem_id.value==""){
                alert('아이디 입력해!')
                fm.mem_id.focus();
                return;
            }
            if (fm.mem_pw.value==""){
                alert('비번 입력해!')
                fm.mem_pw.focus();
                return;
            }

            alert(fm.mem_id.value);
            alert(fm.mem_pw.value);

            fm.action="/first/login_chk/";
            fm.submit();
        }
    </script>
</head>
<body>
    <!-- 제목 -->
    <h3>{% include 'firstapp/include/top.html' %}</h3>
    <hr/>
    <!-- 네비게이션 -->
    <p>{%include 'firstapp/include/nav.html'%}</p>
    <hr/>

    <!-- 페이지 메인 내용 -->
    <!-- method : get, post 2가지 방식
            get : url 주소에 전송되는 key/value가 보임
            post : 안 보임 -->
    <!-- action :  -->
    <p>
        <h3>회원 로그인</h3>
        (아이디, 패스워드 입력 페이지)<hr/>
        <!-- 전송 데이터의 보안을 위해 csrf 보안 키 옵션 제시
        form 태그 사용할 시 무조건 제시(사용 안 해도 제시하자) -->
        <form id="fm" name="fm" method="post" action="#">
            {%csrf_token%}
            아이디 : <input type='text' name='mem_id' value="" placeholder="id" required><br/>
            패스워드 : <input type="password" name='mem_pw' value="" placeholder="pw" required><hr/>
            <br/>
            <button onclick='goLogin()'>로그인</button>
        </form>
    </p>
    <hr/>
    <!-- 하단 -->
    <pre>{%include 'firstapp/include/bottom.html'%}</pre>
</body>
</html>
  login_ok.html 파일 생성
  출력html 작성
 
<p>
        <h3>회원 로그인</h3>
        (아이디, 패스워드 입력 페이지)<hr/>
        아이디 :{{mem_id}}
        <br/>
        패스워드 : {{mem_pw}}
    </p>
추가 설명 - 입력폼에서 입력된 정보 출력은 {{}}
- 웹 서버에서 정보는 항상 dict 형
 
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>::: 수연닷컴 :::</title>

    <script type="text/javascript">
        <!-- 로그인 체크 -->
        function goLogin(){
            var fm=document.getElementById("fm");
            if (fm.mem_id.value==""){
                alert('아이디 입력해!')
                fm.mem_id.focus();
                return;
            }
            if (fm.mem_pw.value==""){
                alert('비번 입력해!')
                fm.mem_pw.focus();
                return;
            }

            alert(fm.mem_id.value);
            alert(fm.mem_pw.value);

            fm.action="/first/login_chk/";
            fm.submit();
        }
    </script>
</head>
<body>
    <!-- 제목 -->
    <h3>{% include 'firstapp/include/top.html' %}</h3>
    <hr/>
    <!-- 네비게이션 -->
    <p>{%include 'firstapp/include/nav.html'%}</p>
    <hr/>
    <p>
        <h3>회원 로그인</h3>
        (아이디, 패스워드 입력 페이지)<hr/>
        아이디 :{{mem_id}}
        <br/>
        패스워드 : {{mem_pw}}
    </p>
    <!-- 하단 -->
    <pre>{%include 'firstapp/include/bottom.html'%}</pre>
</body>
</html>

 

 

 


 

 

DB 및 DB 서버 설치
오라클 설치 -기존 11g 삭제
∵ 파이썬 3.7 이상은 연동 안 됨

[삭제 방법]
: 쥐잡듯이 뒤져서 다 지워버린다.

 * C드라이브>app, program files, programdata,...ORACLE 관련 파일 모두 삭제 
 * 시스템 환경변수>ORACLE 관련 PATH 모두 삭제
 * 윈도>service>ORACLE 관련 파일 모두 삭제


-21c 설치
XE(Express 버전) 설치 <-->Enterprise 버전
SQLDeveloper 설치 -기존 서버 있나 확인
   
MySQL 설치 -8.0 버전 설치
∵ 8.0까지가 무료

-깔고 workbench 파일 있으면 완료된 것임.
HeidiSQL 설치 -기존 편집기 있나 확인

 

DB 서버 사용자 생성
오라클 -SQLDeveloper 기존 madang 계정 삭제

-새 접속(계정) 생성

name: system

사용자 : system

비밀번호 : dbdb

테스트--> 완료-->저장, 접속


  <ORACLE 사용자명 C##없이 쓰기>

ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;


<ORACLE 사용자 생성하기>

CREATE USER gwangju_b IDENTIFIED BY dbdb;


- 사용자 비밀번호 변경 시

AFTER USER gwangju_b IDENTIFIED BT 변경 PW;


- 사용자 삭제하기

drop user gwangju_b;



<oracle 접근권한 부여하기>

Grant Connect, Resource, DBA To gwangju_b;


- 권한 회수하기(회수하고자 하는 권한을 REVOKE 뒤에 작성)

Revoke DBA From gwangju_b;


<ORACLE 새 접속 생성>
새 접속 하여 프로젝트명, 이름, 비밀번호 설정 후
테스트=>접속
완료!

MySQL 또는 MariaDB <mysql or mariadb 공통>

*사용자 만들기

create user gwangju_b@localhost identified by 'dbdb';


* 데이터베이스 생성하기

 create database gwangju_b;


* 권한 부여하기

Grant All Privileges On *.* to 'gwangju_b'@'localhost';


*메모리 반영시키기

Flush Privileges;