여름방학을 맞아 웹해킹 멘토링을 시작하였다.
첫 과제로 가상머신에 우분투를 설치는 과제를 수행하였고, 두번째 과제로 HTML과 PHP, DB를 배우고 Write-up을 하는 활동을 수행하게 되었다.
HTML은 저번 웹해킹 스터디 과제로 write-up을 한 적이 있으므로 PHP와 DB에 대해서 포스팅해보겠다.
https://opentutorials.org/course/3130
WEB2 - PHP - 생활코딩
수업소개 이 수업은 https://opentutorials.org 를 만들어가면서 PHP에 대한 지식과 경험을 동시에 채워드리기 위한 목적으로 만들어진 수업입니다. 수업대상 이 수업은 1억개의 웹페이지를 생산하면서 발생할 수 있는 생산성의 한계를 극복하고 싶은 분들을 위해서 만들어졌습니다. 1억개의 웹페이지로 이루어진 웹사이트에서 웹페이지의 구조를 바꾸려고 할 때 생길 수 있는 문제를 상상할 수 있다면, 이 수업에 참여할 마음의 준비가 된 것입니다. 수업에 참여조건 HTML이 무엇인지 전혀 모르신다면 이 수업을 보시면 안됩니다....
opentutorials.org
- 수업의 목적
기존 HTML과 더불어 PHP를 사용했을 때 생산성이 대폭 향상된다. 이러한 이유를 탐구하고 PHP라는 기술이 어떻게 구현되는지에 대해 알아본다.
- PHP 설치
윈도우 64bit의 Bitnami WAWP를 설치하여 php 프로그램을 설치한다.
- PHP의 원리
웹 브라우저가 웹 서버에게 html 확장자 명의 파일을 보내면, 웹 서버가 이를 처리하지만 웹 브라우저가 웹 서버에게 php 확장자명의 팡링르 보내면 웹 서버는 이 명령을 php에 인수하여 html 형태로 읽어서 웹 브라우저로 처리한다.
+ php는 동적이다. php의 문법에 따라 작성된 내용은 html 로 변환될 때 얼마든지 내용이 변할 수 있다.
- PHP의 데이터 타입
php의 숫자와 문자 타입을 활용하는 법에 대해서 알아보았다.
먼저 숫자에 관한 내용이다.
python의 print 역할을 하는 echo를 이용해 다음 코드를 쓰면 출력 화면에는
이렇게 표시가 된다.
연산도 가능하다.
이 코드는
다음과 같은 결과를 출력하도록 한다.
그 다음으로 문자열을 출력하는 방법을 알아보자.
이 코드를 출력한 화면은
다음과 같다.
코드를 해석해보자.
처음 echo "Hello, World" 부분은 위에서 언급한 것처럼 문자열을 그대로 출력한다.
그리고 "Hello"."world"와 같은 표현은 두 문자열을 합쳐서 출력시키는 역할을 하고, strlen함수는 인자에 들어간 문자열의 문자 갯수가 얼마인지 세어서 출력하는 역할을 한다.
- PHP의 변수
다음은 atom에서 제공하는 lorem 함수(아무 문자열이나 출력)를 사용해서 "tempor"이라는 특정 문자를 변수로 지정한 코드이다.
출력은 다음과 같다.
변수 name 대신에 tempor이 출력된 것을 확인할 수 있다.
-PHP의 URL 파라미터
파라미터는 '변수'라는 뜻이다.
변수를 사용하여 우리는 하나의 코드로 무한한 개수의 웹페이지를 생성할 수 있다.
코드는 다음 과 같다.
<?php echo $_GET['변수']; ?>
이 형태의 코드를 사용해
다음과 같은 웹페이지를 만들 수 있다.
parameter.php?name=egoing&address=인천
이렇게 &를 이용해서 두가지 변수를 나타낼 수도 있다.
- URL 파라미터의 활용
연결할 주소를 지정하는 href 태그를 사용해 HTML, CSS, JavaScript의 텍스트를 눌렀을 때 밑의 lorem 아무말이 뜨도록 한다.
이때 변수 id를 사용해서 주소창에 127.0.0.1/index.php?id=CSS 와 같이 쳤을 때 밑의 화면이 나오게끔 할 수 있다.
- PHP 함수의 사용
PHP 함수에 대해 알아보았다.
strlen함수는 문자열의 길이를 출력하는 함수이고, n12br은 \n부분을 <br>로 출력하는 함수이다.
이걸 어떻게 활용하여 웹 페이지를 구성할 것인가?
다음과 같이 data라는 새 디렉토리를 만들고 세 가지 파일을 만들었다.
이제 이 파일에 적힌 내용을 index.php 코드 내에서 불러오고 싶은데, 이때 file_get_contents 함수를 사용하면 편리하다.
이렇게 하면 외부 파일의 내용을 웹페이지로 불러들일 수 있다.
- PHP 조건문
만약 웹페이지 주소에 id값이 정해져 있다면 그 페이지 내용을 출력하고, 없다면 "Welcome"을 출력하는 프로그램을 만들자.
조건문과 isset 내장함수를 이용해 이를 구현할 수 있다.
이렇게 말이다.
- PHP의 반복문
while 반복문에 대해 알아보자.
2 라는 숫자를 3번 반복하는 프로그램을 짜보자.
파이썬처럼 for i in range(2): 과 같은 코드는 쓰지 못한다.
여기서 while 문을 사용할 수 있는데, 변수 i를 설정해준 다음 while 문 안에서 i 를 1씩 늘려주고, i가 3이 되었을 때 반복문을 빠져나오도록 프로그래밍한다.
실행 결과는 다음과 같다.
- PHP 배열
배열을 만들기 위해선 먼저 변수를 설정하고 array 함수를 사용해 준다.
당연히 첫 인수가 0번째인 것이고, count 함수를 통해 인자의 개수를 셀 수 있다.
여기서 var_dump 는 변수의 정보를 출력하는 함수이다.
array_push 함수를 사용하면 파이썬의 append처럼 배열 안에 인자를 추가할 수 있다.
실행 결과는 다음과 같다.
- PHP 함수의 형식
함수를 정의하는 기본 문법에 대해 알아보자.
'function'을 쓰면 프로그램은 사용자가 함수를 정의할 것임을 눈치채고, 그 다음에 쓰는 'basic'이라는 텍스트를 함수의 이름으로 인식한다.
따라서 결과는 다음과 같다.
이렇게 인자를 넣어서 sum 함수를 만들어낼 수도 있다.
return을 사용하면 함수의 결괏값을 타 파일에 넣는 것도 가능하다.
이렇게.
- PHP 함수의 활용
함수를 활용하여 긴 코드를 효율적으로 여러번 쓰는 방법을 제시한 강의였다.
쉬운 내용이라 따로 사진을 첨부하진 않겠다.
- PHP에서 FORM과 POST
form 은 서버로 데이터를 전송할 때 사용한다.
다음 코드를 살펴보자.
input type = "text" 는 텍스트 입력 위 한 줄의 입력 필드를 정의하는 것이다.
textarea 태그는 여러 줄의 텍스트를 입력하는 창을 만드는 기능을 하며, submit 필드까지 만들어주면 밑의 그림과 같은 출력화면이 만들어진다.
title에 'PHP'를 입력하고
description에 'php is..'를 입력했다고 하자.
submit를 눌렀을 때 form.php의 내용이 실행 된다.
이 내용이 실행되면
사용자가 form.html 정보를 form.php 로 전송하였는데
전송된 title과 description에 관한 정보를 사용할 수 있게 된다.
결과적으로 data파일에 php라는 이름으로 'php is..'의 description이 있는 파일이 생성된다.
'Other > Web Hacking' 카테고리의 다른 글
IGRUS 웹해킹 4주차 과제 #PHP #워게임 (0) | 2021.01.28 |
---|---|
IGRUS 웹해킹 3주차 과제 #워게임 (0) | 2021.01.28 |
IGRUS 웹해킹 2주차 과제 #워게임 (0) | 2021.01.27 |
웹 해킹 멘토링 과제 #HTML (0) | 2021.01.27 |
IGRUS 웹 해킹 1주차 과제 (0) | 2021.01.27 |