출처 : https://www.slaconsultantsindia.com/how-many-php-version-in-market-and-latest-version-of-php/

php 언어 정리

php 코드를 작성하면서 알게된 함수나 변수를 불러오는 코드들을 정리한다.

 

로그인과 같이 input 값을 전달해야하는 경우

아래와 같은 코드를 작성해야한다. 

name, id, class가 정의되어 있다.

이 3가지를 적는 이유는 각자 역할이 다르기 때문인데

name는 form 전송 이벤트가 발생하였을 경우 서버로 데이터를 보낼 때 식별자로서의 역할을 한다.

id 같은 경우 해당 중복이 불가능하고 해당 input값만을 가르킨다. 만약 name이 겹칠경우 에러가 발생할 수 있다.

class 는 여러가지 형식이나 css를 적용할 때 사용하는데 중복 사용이 가능하고 css가 같은 형식의 변화를 줄 때 같은 이름의 class는 모두 같은 형식으로 바꿔준다.

 

<input type="text" size="35" name="userid" id="userid" class="check" placeholder="아이디"  required />

name,id, class를 불러올때는 getInputValue() 라는 함수를 사용한다.

id를 기준으로 값 불러오기

var valuebyID = $('#userid').val()

class를 기준으로 값 불러오기

var valuebyClass = $('.check').val()

name을 기준으로 값 불러오기

vaer valueName = $('input[name=userid]').val();

 

이런식으로 하면 된다.

추가적으로 var와 같은 변수 선언 방식에 대해서도 설명하고자 한다.

var 같은 경우 변수 선언을 해도 문제가 없다. 이는 코드를 작성할 때 해당 변수를 불러올 때

var로 선언된 변수를 불러온다면 가장 가까이 있는 값을 가져오기 때문에 코드가 길어지면 어디가 잘못되었는지 찾기가 힘들어진다. 아래는 이를 보여준 예시로 가까운 name의 변수 값을 가져오는 것을 볼 수 있다.

 

var name = 'yong'
console.log(name) // 결과 : yong

var name = 'seung'
console.log(name) // 결과 : seung

ES6는 이를 보안하기 위해 추가된 변수 선언 방식이 존재한다.

바로 let과 const 이다.

let과 const 이름이 중복될 경우 이미 선언 되었다는 메세지가 나오면서 변수 재선언이 되지 않는다.

그렇다면 둘의 차이가 무엇인지 궁금할 것이다.

그것은 immutable(불변)이다. let 같은 경우 name이라는 변수에 특정 값을 할당할 경우 새로운 값을 name에 넣을 수 있다.

var name = 'yong'
console.log(name) // yong


var name = 'seung'
console.log(name) // SyntaxError 식별 불가 에러

name = 'mario'
console.log(name) // mario

하지만 

const 같은 경우 변수에 집어 넣은 값에 새로운 값을 할당하면 error가 발생하게 된다.

코드를 작성할때는 최대한 var를 배제하고 const 와 let 를 이용하여 코드를 작성해야겠다.

const name = 'yong'
console.log(name) // yong


const name = 'seung'
console.log(name) // SyntaxError 식별 불가 에러

name = 'mario'
console.log(name) // typeError  constan 변수라는 에러 출력

 

'Web > Web 개발' 카테고리의 다른 글

JS, php언어 공부  (0) 2022.04.18
Hash 란?  (0) 2022.04.05
php 를 이용한 로그인 페이지 만들기  (0) 2022.04.03
[web] mysql database 및 table 만들기  (0) 2022.03.31
web 로그인 페이지 만들기 프로젝트 1  (0) 2022.03.30

오랜만에 블로그 쓰네요. 자격증 시험도 있고 웹페이지 개발하느라 대부분 시간 보내다 보니 시간이 부족하네요.

진짜 개발하다가 모르는 거 있으면 정확히 알 때까지는 하는 성격인데 자료가 너무 어렵게 설명되어 있어서 애를 먹었네요.

 

아예 생 기초부터 설명한다는 느낌으로 가겠습니다.

 

출처:https://stock.adobe.com/kr/images/writing-programming-functions-on-laptop-screen-of-web-developing-javascript-code-abstract-computer-script-code-coding-script-text-on-screen-abstract-technology-background/215558743

 

 

기초

프로그램을 만드는 코딩을 한다는 것은 다른 사람들이 공통적으로 약속한 것들을 토대로 만드는 것을 의미한다.

그 약속에 대해 몇가지 적어보려고 한다.

 

함수(function)와 변수(value)

우선 코드를 한번이라도 짜본 경우라면 함수라는 것을 알것이다.

함수란 더하기와 같은 특정 작업을 할 수 있도록 하는 작은 블록이라 생각하면 편하다. 그리고 변수도 생각해야할 것이다. 왜냐하면 더하기를 하는데 맨날 1+1 을 할 수 없기에 값을 변화하면 결과도 바뀌어야하기 때문에

a + b 의 연산을 수행 할 때 a 와 b 를 변수 선언을 하여 연산자로서의 역할을 다하게 하는 것이다.

 

클래스(Class)

이제 조금 더 큰 틀인 클래스에 대해 배워볼 것이다.

Class란 '정의'라고 생각하면 편하다. 예시를 들자면 class란 교실이라는 의미가 아닌가? 교실이라는 것을 class(정의)한다고 하면 교실 안에 존재하거나 일어나는 것들을 포함하여 정의한다는 것을 의미한다. 교실안에는 신장과 무게가 다다른 학생들이 있을 것이고, 안에서는 칠판에 글을 쓰는 행위도 존재할 것이다. 여기서 신장과 무게가 다다른 학생들은 변수를 의미하고 칠판에 글을 쓰는 행위는 함수를 의미하는 것이다. 클래스라는 것은 이 모든 것을 교실이라는 정의 아래에 속하게 만드는 것이다.

 

객체(object)

이제 교실이라는 클래스를 정의했다고 하면 이 정의를 이용해야한다. 객체란 현실화라는 것을 의미한다. 교실에서의 일어날 수 있는 것들을 모두 정리하였고 이 정리된 것을 바탕으로 학창시절 나의 교실에 실제로 적용한다는 것을 말한다. 내가 신이 되어서 나의 학창시절 3학년 4반 안에 학생들의 키와 몸무게를 정하고 어떠한 행동을 할 것인지를 정한다고 생각하면 나는 3학년 4반이라는 구체적인 교실을 만들었다. 이 모든 행위를 객체라고 생각하면 된다.

 

인스턴스라는 개념이 있는데 인스턴스는 이러한 객체들이 나중에 호출이 되어 실행될 때 메모리에 올라가서 작동하기 때문에 메모리에 올라가는 순간을 인스턴스화 됐다고 한다.

 

모듈(module)

모듈은 학교라고 생각하면 편하다. 즉 클래스를 모아서 하나의 학교를 만든 것이다. 그 안에는 다양한 학생들의 각기 다른 행위를 할 수 있을 것이다. 즉 여러 함수(행동)과 학생(변수)를 교실을 모아 더 다양한 작업을 할 수 있도록 하는 것이다.

패키지(package), 컴포넌트(component)

이제 패키지는 학교라는 큰 모듈과  학원이라는 모듈을 합쳐서 더 큰 범위를 만든 것이라 보면된다. 컴포넌트라는 것은 패키지에서 조금 더 확장된 형태로 재사용이 가능하다. 즉 이러한 학교 학원이라는 요소를 다른 현 세계에서만 사용하는 것이 아닌 다른 이세계(?), 평행세계와 같은 곳에 사용할 수 있는 형태라고 생각하면 될거 같다.

 

'Web > Web 개발' 카테고리의 다른 글

[php] 언어 정리  (0) 2022.04.19
Hash 란?  (0) 2022.04.05
php 를 이용한 로그인 페이지 만들기  (0) 2022.04.03
[web] mysql database 및 table 만들기  (0) 2022.03.31
web 로그인 페이지 만들기 프로젝트 1  (0) 2022.03.30

출처:https://k0102575.github.io/articles/2020-03/hash

비밀번호 유출의 대비

기본적으로 우리는 로그인을 하기 위해 아이디와 비밀번호를 적는다. 그 정보들은 서버에 전송되고 서버에 존재하는 수 많은 데이터를 비교하여 같은 정보가 있는지 비교하고 로그인을 승인 할 지 안할 지를 정하게 된다.

이때 서버에 저장된 패스워드가 암호화가 안된 상태라면 서버와 소통하는 과정에서 비밀번호가 노출되거나 누군가 서버에 접속해서 로그인과 관련 데이터에 접근한다면 쉽게 비밀번호와 아이디가 유출될 것이다.

이렇게 되면 다른 사용자의 정보가 외부로 노출되어 막대한 피해를 입힐 수 있다.

그렇다면 이를 막기위해서는 어찌해야할까?

 

Hash를 이용

해쉬라는 단어가 생소할 수 있을 것이다. 해쉬의 사전적 의미는 '잘게 쪼개다'라는 의미를 가지고 있다. 잘게 쪼갠다는 것은 만약 help라는 단어가 있다면 h와 e, l, p 라는 단어를 각기 다른 형태로 만든다는 의미 있다. 다른 형태로 만든다는 것은 특정한 규칙으로 다른 문자로 대칭시키는 것이다.

이렇게 되면 규칙을 모른다면 help라는 단어는 dwqfqqfwq 이런식으로 변환 돼 표면적으로 이해를 하지 못할 것이다.

이런 방법을 비밀번호에게도 적용하게 된다면 만약 비밀번호라는 데이터를 다른 사용자가 습득하게 되더라도 제대로 활용하지 못하게 되는 것이다.

 

 사이트 보안을 철처하게 할 수 있는 나의 생각 

hash라는 암호화 기법은 수많이 존재할 것이다. 그렇다면 하나의 기법을 사용하여 서버의 데이터를 암호화 시킨다면 이는 쉽게 위험에 노출되는 것과 같다고 생각한다. 물론 그 암호화 규칙이 외부에 알려지지 않았을 경우는 상관없지만 만약 중간에 분석이 완료되었다면 문제가 생길 수 있기 때문이다.

이를 최대한 방지하기  위해 많은 암호화 기법을 쓰는 것이다. 1번, 2번, 3번 데이터를 각기 다른 방식으로 랜덤하게 암호화 하고 몇번째에 무슨 암호화 기법이 사용되었는지에 대한 정보를 다음 파일은 따로 보안을 신경써서 저장한다.

그리고 특정 사용자가 데이터를 요청하면 몇번 행에 이 데이터가 있는지 확인하여 거기에 맞는 암호화 기법을 사용하여 데이터를 분석해 내보낸다. 물론 이중으로 확인해야한다는 번거로움은 있지만 최적화를 한다면 충분히 사용가능한 정보이다.

아니면 한번 로그인한 클라이언트 측에 로그인 정보가 유지된다면 쿠키에 그 유저가 사용하는 데이터의 암호화기법 방식을 저장하여 서버와 소통할때 바로바로 변환하여 하는 방식도 있을것이다.

그냥 나의 생각을 끄적여 봤다... 

 

'Web > Web 개발' 카테고리의 다른 글

[php] 언어 정리  (0) 2022.04.19
JS, php언어 공부  (0) 2022.04.18
php 를 이용한 로그인 페이지 만들기  (0) 2022.04.03
[web] mysql database 및 table 만들기  (0) 2022.03.31
web 로그인 페이지 만들기 프로젝트 1  (0) 2022.03.30

출처:http://i1.wp.com/www.traininginchennai.co.in/wp-content/uploads/2015/12/php-training-in-chennai.jpg

저번주에는 코드를 이해하고 짜느라 로그인 페이지를 만들지 못했는데 어제 드디어 완성했다.

기본적인 코드는 https://choco4study.tistory.com/3 이 블로그를 따라 만들었고

아직 대부분의 코드는 보고 따라한 수준이라.. 후에 직접 코드를 짜서 올리겠다. 

홈페이지의 큰 틀은 

index.php(메인 페이지)

login.php로그인 페이지)

login_ok.php(로그인 확인 페이지)

join.php(회원가입 페이지)

join_php(회원가입 승인 페이지)

이렇게 구성된다. 물론 모든 페이지 간 연동은 되어있다.

모든 코드는 설명을 추가하겠다. 조금이라도 이해 안되면 댓글 달아주길 바랍니다~~

 

index.php (나는 main이 아닌 index라는 이름으로 사용함)

<!doctype html> 
<?php session_start(); ?> //session을 시작한다는 의미는 session에 값을 넣으면 서버에 저장된다는 의미
						  // 단 서버에 저장하기 위해서는 <?php 문 사이에 코드를 넣어야한다.
<html lang="kr">
<head>

    
    <link rel="stylesheet" href="./style.css"> //이건 사이트의 스타일을 지정하는것
    <meta charset = "utf-8">
    <title> 해킹사이트 </title> 
</head>

<body>
    <h1>메인페이지</h1>
	//아래 코드는 session['user_id]에 값이 존재한다는 것은 로그인이 되어 있다는 뜻이기 때문에
    // 이를 if 문에 넣어 로그인된 유저 정보가 있으면 환ㅇ 없으면 로그인하는 창(login.php)으로 이동한다는 의미이다.
    <?php 
        if(isset($_session['user_id']) || isset($_session['user_name'])) {
            $user_id = $_session['user_id'];
            $user_name = $_session['user_name'];
            echo "<p>$user_name($user_id)님 환영합니다.</p>";
            echo "<p><button onclick=\"location.href='logout.php'\">로그아웃</button></p>";

        } else {
        	//만약 false시 로그인을 필요로 하는 문구를 넣고 login.php로 이동하여 로그인을 진행하도록함
            echo "<p> 로그인이 필요합니다.</p><br>";
            echo "<p><button onclick=\"window.location.href='login.php'\">로그인</button> <button onclick=\"window.location.href='join.php'\">회원 가입 </button></p>";
        }
    ?>
    //보게되면 서버와 소통하는 부분은 <?php ?>로 묶이게 된다 이 괄호가 없으면 서버와 소통을 못해서 제대로 된 값이 나오지 않는다.
    
</body>
</html>

login.php

<!DOCTYPE html>
<html lang="kr">
    <?php session_start(); ?> '/session이 필요한 페이지는 start를 해주어야한다.
    <head>
	<link rel="stylesheet" href="./style.css">
	<meta charset="utf-8">
        <title>로그인 페이지</title>
    </head>
    <body>
    //보면 if문의 참거짓 뒤에 참이면 실행될 코드와 거짓이면 실행될 코드를 구분하는 {를 <?php로 묶은것을 볼 수 있다.
    //서버와 소통후 다음 코드 부분에서는 서버가 아닌 클라이언트에서 실행되는 부분이라 {를 ?> 뒤에 붙이게 되면
    //페이지에 {를 출력하는 형태가 된다. 그렇기 때문에 특수문자까지 php에서 실행되도록해야한다.
        <?php if(!isset($_SESSION['user_id']) || !isset($_SESSION['user_name'])) { ?>
            <form method='post' action="login_ok.php" autocomplete="off"> 
                <p>로그인</p></br>
                //placeholder는 입력 박스안에 간단히 무엇을 적어야하는지 적어주는 것으로 값을 넣으면 사라진다.
                //type은 텍스트 형식 그리고 입력된 값은 user_id에 저장되고 최대 입력은 50까지 받는 다는 의미
                <p><input type = "text" name='user_id' placeholder="아이디" maxlength="50"  /><p>
		<p><input type = "password" name='user_pw' placeholder="비밀번호" maxlength="50" /></p>
		//아래 줄은 로그인이라는 제출 버튼을 만드는 코드
		<input type="submit" value="로그인" >
        //<a는 하이퍼링크로 다른 페이지와 연결을 해주는 역할을 한다. 다만 형태가 버튼 형식이 아닌
        // 글자를 클릭하면 넘어가는 형태라 만약 버튼으로 만들고 싶으면 location.replace나 location.href를 사용하여 만들면 됨
		<small><a href="index.php">메인으로</a></small>
            </form>
        <?php } else {
             //session에 값이 있다는 것은 로그인이 되었다는 의미이기에 아래 코드 실행
            $user_id = $_SESSION['user_id'];
            $user_name = $_SESSION['user_name'];
            echo "<p>$user_name($user_id)님은 이미 로그인되어 있습니다.";
            echo "<p><button onclick=\"window.location.href='index.php'\">메인으로</button> <button onclick=\"window.location.href='logout.php'\">로그아웃</button></p>";
        } ?>
    </body>
</html>

login_ok.php

//login.php에서 user_id와 user_pw를 post방식으로 넣어줬기 때문에 서버에서 이를 비교하여 해당 값이
//데이터베이스에 있는지 판별하는 작업만 하면 로그인 확인이 끝이 난다. 어차피 모두 서버에서 작동하기 때문에
//전체를 php로 묶음
<?php
	//post 방식으로 받아서 user_id라는 변수에 넣겠다는 의미
    $user_id = $_POST['user_id'];
    $user_pw = $_POST['user_pw'];
    //아래 코드는 connect의 뜻으로 내가 가진 데이타베이스를 접근하기 위해 정보를 입력하는 칸
    // 순서는 (내 address, 계정이름, 비밀번호,접근할 데이타베이스) 순이다. mysql의 계정 값을 넣어줘야함
    $conn = mysqli_connect('localhost', 'root', 'aa', 'logindb');
    // sql은 내가 요청할 자료이다 필요한 건 id와 pw이기 때문에 login이라는 table에서 id pw의 모든 자료를 가져온다.
    $sql = "SELECT * FROM login where login_id='$user_id' and login_pw='$user_pw'";
    //mysqli_query는 요청이라는 의미로 위 설명한 계정정보와 무엇을 요청할것인지를 실행하여 입력한 로그인 정보와 일치하는 값을 가져오는데
    //fetch_array라는 형태의 배열로 값을 가져오게 된다. 이 형태는 각 행 [0], [1]에 순차적으로 값이 들어가 있다
    $res = mysqli_fetch_array(mysqli_query($conn,$sql));
    //res 변수에 값이 있다는 것은 로그인 정보와 일치하는 데이터가 있다는 의미로 일치시 로그인에 성공했다는 창을 띄운다. 
    if($res){
        session_start();
        $_SESSION['user_id'] = $res['login_id'];
        $_SESSION['user_name'] = $res['name'];
        echo "<script>alert('로그인에 성공했습니다!');";
        echo "window.location.replace('index.php');</script>";
        exit;
    }
    else{
    // 값이 없으면 다시 login 페이지로 이동
       echo "<script>alert('아이디 혹은 비밀번호가 잘못되었습니다.');";
       echo "window.location.replace('login.php');</script>";
    }
?>
<meta http-equiv="refresh" content="0;url=index.php">

아래 코드는 mysql의 계정 정보와 데이터 베이스가 연결이 되는지 테스트 하는 것으로  작성한 코드가 데이터베이스와 내가 연결이 안된다 하면 아래 코드로 한번 연결을 확인해 보고 다시 진행하길 바란다.

<?php
   $db_host="localhost";	//DB서버 주소를 입력
   $db_user="root";	//접속할 ID
   $db_password="aa";	// 접속할 ID의 패스워드
   $db_name="logindb";	// 특별히 사용할 DB가 있다면 DB명을 넣음
   $con=mysqli_connect($db_host, $db_user, $db_password, $db_name);	// 변수 $con에 db접속 내장함수와 (인자값 들)을 저장
   if ( mysqli_connect_error($con) ) {	// DB접속 했을 때 오류가 발생한다면
	   echo "MariaDB 접속 실패 !!", "<br>";	// 출력
	   echo "오류 원인 : ", mysqli_connect_error();	// mysqli_connet_error() 내장함수는 DB서버 연결 오류 원인을 반환해주는 함수
	   exit();
   }
   echo "MariaDB 접속 완전히 성공!!";	// 에러가 없을 시 출력
   mysqli_close($con);	// DB 접속 종료
?>

join.php

<!DOCTYPE html>
<?php session_start(); ?>
<html lang="kr">
    <head>
		
	 <link rel="stylesheet" href="./style.css">
	 <meta charset="UTF-8">
	 <title>Join</title>
    </head>
    <body>
        <h2>회원가입</h2>
        <?php if(!isset($_SESSION['user_id']) || !isset($_SESSION['user_name'])) { ?>
        <form method="post" action="join_ok.php" autocomplete="off">
            <p><input type="text" name="join_name" placeholder="Name"required></p>
            <p><input type="text" name="join_id" placeholder="ID"required></p>
            <p><input type="password" name="join_pw" placeholder="password" required></p>
            <p><input type="submit" value="가입하기"></p>
        </form>
        <small><a href="login.php">이미 회원이신가요?</a></small>
        <?php } else {
                $user_id = $_SESSION['user_id'];
                $user_name = $_SESSION['user_name'];
                echo "<p>$user_name($user_id)님은 이미 로그인되어 있습니다.";
                echo "<p><button onclick=\"window.location.href='main.php'\">메인으로</button> <button onclick=\"window.location.href='logout.php'\">로그아웃</button></p>";
        } ?>
    </body>
</html>

join_ok.php

 

<?php
    if (!isset($_POST['join_name']) || !isset($_POST['join_id']) || !isset($_POST['join_pw'])) {
        header("Content-type: text/html; charset=UTF-8");
        echo "<script>alert('기입하지 않은 정보가 있거나 잘못된 접근입니다.')";
        echo "window.location.replace('join.php');</script>";
        exit;
    }
    $join_name = $_POST['join_name'];
    $join_id = $_POST['join_id'];
    $join_pw = $_POST['join_pw'];
    $conn= mysqli_connect('localhost', 'root', 'aa', 'logindb');
    //신규 회원정보 삽입 + ID 재정렬
    $multi = "
        INSERT INTO login(login_id, login_pw, name) VALUES ('{$join_id}', '{$join_pw}','{$join_name}');
        SET @COUNT = 0;
        UPDATE member SET id = @COUNT:=@COUNT+1;
    ";
    //login_ok.php와 동일한 내용
    $res = mysqli_multi_query($conn,$multi);
    if($res){
        echo "<script>alert('회원가입이 완료되었습니다.');";
        echo "window.location.replace('login.php');</script>";
        exit;
    }
    else{
       echo "<script>alert('저장에 문제가 생겼습니다. 관리자에게 문의해주세요.');";
       echo mysqli_error($conn);
    }
?>
//새로고침 후 contetn가 0 이면 main.php로 이동한다는 의미
<meta http-equiv="refresh" content="0;url=main.php">

'Web > Web 개발' 카테고리의 다른 글

[php] 언어 정리  (0) 2022.04.19
JS, php언어 공부  (0) 2022.04.18
Hash 란?  (0) 2022.04.05
[web] mysql database 및 table 만들기  (0) 2022.03.31
web 로그인 페이지 만들기 프로젝트 1  (0) 2022.03.30

현재 kali linux에서는 mysql 사용이 안되고 mariadb로만 사용이 가능하다. mariadb설치시 내에서 사용되는 코드는 mysql과 거의 동일하니 설치만 mariadb로 하면 된다.

 

우리가 만약 로그인 페이지를 만든다면 로그인시 필요한 데이타베이스가 있을터인데 이 데이타베이스는 우리가 직접 만들어줘야한다.

 

만드는 과정은

mariadb를 설치하였다면 아래 코드를 이용하여 만들면 된다. (mysql에서는 모든 명령어 뒤에 ; 붙어야 실행됨

mariadb -u root
#비밀번호 아무거나 쳐도 된다. 상위버젼부터는
#root 계정으로 리눅스 접속시 자동으로 root 계정으로 마리아도 접속됨

create database 데이터명;
use 데이터명
create table 테이블명(
'login_id" VARCHAR(40) NOT NULL,
'login_pw" VARCHAR(40) NOT NULL);

desc login; # 만든 login_id,login_pw가 보이게 된다.

 

만약 자료를 넣고싶다하면 순서대로 aa라는 값이 id 와 pw에 들어가게 된다.

insert into login value("aa", "aa");

select * from login;

이런식으로 database를 만들어 페이지와 연동시키면 된다,

'Web > Web 개발' 카테고리의 다른 글

[php] 언어 정리  (0) 2022.04.19
JS, php언어 공부  (0) 2022.04.18
Hash 란?  (0) 2022.04.05
php 를 이용한 로그인 페이지 만들기  (0) 2022.04.03
web 로그인 페이지 만들기 프로젝트 1  (0) 2022.03.30

Session이란?

세션이란 쿠키와 달리 보안성이 더 높은 정보 저장 방법이다. 쿠키는 컴퓨터 내에 사용자가 사용했던 웹페이지의 로그인 정보 및 파일 정보를 저장하는데 그와 달리 세션은 서버에 정보를 저장한다. 세션이라 함은 사용자가 브라우저를 접속하고 끝내는 지점까지를 세션이라하는데 사용이 끝나는 시점까지 정보들을 서버에 저장 후 접속을 종료시 접속한 컴퓨터에 세션 키 값만을 나두고 서버에 저장 후 종료를 하게된다. 다시 해당 컴퓨터가 접속하면 그 컴퓨터는 세션 키를 가지고 있기 때문에 서버에 있는 데이터를 가져와 사용이 가능하게되는 것이다.

 

페이지 이동하기

만약 웹페이지를 만든다고 가정한다면 그 페이지에는 수많은 페이지가 숨어져 있다. 로그인 버튼을 누르면 나오는 페이지 회원가입을 하면 나오는 페이지등을 생각하시면 쉬울 것이다. 만약 그렇다면 어떠한 코드가 페이지를 이동할 때 주로 사용될까?

가장 많이 사용 되는 코드는 a 태그이다.  anchor로 닻의 약자로 단어 그 자체로 다른 페이지를 닻으로 연결하여 연결시키는 것이다.

보통 <a href="http://주소">이동하기</a> 이런식으로 사용되는데 href는 hypertext reference의 약자로 연결한 주소를 지정하는 속성이다. "이동하기"라는 것은 페이지에 이동하기를 클릭 시 해당 연결 주소로 이동하기 위해 적어놓은 것이다.

연결 방식은 2가지가 더 존재한다.

a 태그를 이용하는 것이 아닌 location.href와 location.replace를 이용하는 것이다.

이 둘을 이용하는 목적은 우리가 클릭을 해야하는 형태가 버튼 형식이거나 글자 형식 일 수 있기 때문에 클릭 하는 대상의 형태를 원하는 걸로 하기 위해 위 둘을 사용하는 것이다. location.href와 locarion.replace의 차이점은 기록이 남냐 안남냐의 차이이다. 만약 a-b-c 이렇게 연결시 a를 클릭시 자동으로 b로 연결되고 c로 연결된다고 생각해보면 우리가 실제로 보는 웹페이지는 a클릭시 c로 이동하는 것만 보일 것이다. 하지만 웹페이지 내에서는 중간 과정이 저장되기 때문에 뒤로가기 하면 b라는 페이지로 넘어가게 된다. 중간 과정을 저장하는 것이 location.href 저장 하지 않는 것은 location.replace이다. 만약 replace를 사용시 뒤로가기하면 c에서 b로 이동하는 것이 아닌 a로 바로 이동하게 된다. b라는 과정을 저장하지 않기 때문에 보여지지 않는 것이다. 그와 반대로 href사용시 b라는 페이지가 보이게 된다.

 

 

'Web > Web 개발' 카테고리의 다른 글

[php] 언어 정리  (0) 2022.04.19
JS, php언어 공부  (0) 2022.04.18
Hash 란?  (0) 2022.04.05
php 를 이용한 로그인 페이지 만들기  (0) 2022.04.03
[web] mysql database 및 table 만들기  (0) 2022.03.31

+ Recent posts