Old (2021.01 ~ 2021.12)/Programming

위는 ./files 폴더 내의 test.txt 파일을 읽어서 그 내용을 화면에 보여주는 간단한 php 코드다. 실행해보면 test.txt에 작성한 내용이 잘 출력되는 것을 볼 수 있다. 지금은 정상적인 값이 test.txt에 들어있지만, 보안적 관점에서 만약 이 test.txt에 보안적 위협이 되는 값이 저장돼 있으면 어떻게 될까? 예를들면 script 태그로 감싸져 있는 자바스크립트 코드 말이다. echo 명령어는 string 변수의 값을 html 코드로 변환해주는 역할을 한다. 그렇기에 script 태그로 감싸진 문자열이 string 변수 안에 들어있다면, html로 변환하는 과정에서 자바스크립트 코드로 인식이 되고 사용자한테 페이지를 보여줄 때 그 문자열이 실행될 것이다. 위에서 말한대로 test...
배열 php 역시 배열이 존재한다. php의 배열은 c, c++, c# 등의 언어와 다르게 다른 자료형의 값들도 한 배열 안에 넣을 수 잇는데, 이는 python과 비슷하다. 배열 선언 방식은 조금 특이하게 느껴졌는데, 선언 방식은 아래와 같다. $ = array(, ); 이 말고도 아래와 같은 방법도 가능하다. $[] = ; 이 방법의 경우 변수가 미리 선언되지 않아도 가능하다. (선언되어 있는 배열에 대해서 요소를 추가할 때도 가능하다.) array를 써준뒤 괄호안에 배열에 들어갈 요소를 넣어야지 배열을 만들 수 있다. 만들어진 배열에 요소를 추가할 때는 array_push(, );을 통해 넣을 수 있다. count()를 사용한다면 배열의 길이를 구할 수 있다. 이 밖에도 array_search, s..
조건문이란 특정 조건식이 참일 때 특정 코드를 실행해주는 문법을 말한다. 분기를 나눠준다고 생각하면 된다. php의 조건문은 다른 언어들과 비슷하게 if문과 switch문이 있다. if 문 php의 if문은 if, else if, else로 이뤄진다. 구조는 아래와 같다. if() { } else if() { } else { } 예시로 if, else if, else를 하나씩만 사용했는데 else if의 경우 여러 번 사용이 가능하다. else if, else는 단독으로 사용할 수 없고 무조건 위에 if문이 존재해야지만 사용이 가능하다. 필요하다면 조건에 &&(and), ||(or) 연산자를 사용할 수 있다. 아래는 조건문과 $_GET을 이용한 간단한 예시다. GET방식으로 받아오는 val의 값이 무엇이..
GET 방식이란..? get, post 방식에 대한 설명은 다른 블로그 등에 잘 나와있으므로 자세히 하지는 않겠다. get 방식은 url을 통해 다른 페이지로 값을 전달하는 것을 말한다. get 방식으로 값을 전달할 경우 대상 페이지 url 맨뒤에 ?를 작성하고 키와 전달할 값을 넣는다. 여기서 키는 대상 페이지에서 전달된 값을 사용할 때 사용한다. 예) "https://dyp4r.php?id=admin" 위 예시 url은 dyp4r.php 페이지에 키 값은 'id'로 'admin'이라는 문자열 값을 전달하는 것이다. 해당 페이지에서는 키 값인 'id'로 'admin' 값을 사용할 수 있다. 만약 전달하고자 하는 값이 여러개라면 값들 사이를 &으로 구분지어서 전달할 수 있다. 예) "https://dyp..
-php 코드 작성- PHP 코드는 사이에 작성해야 한다. -출력- echo, print() 함수를 이용하면 어떤 문자나 문자열, 값, 변수 등을 화면에 출력할 수 있다. 정확히 말하면 화면에 출력한다기보다는 html 코드로 출력하는 것인데, 이때 출력할 값에 html 태그가 포함돼 있다면 해당 html 태그가 작동한다. 위 예제에서 . 기호는 문자열을 연결해주는 역할을 한다. 파이썬에서 문자열 사이에 + 기호가 있을 때의 작동을 생각하면 된다. 아래는 echo에 을 안 붙였을 때의 결과다. -자료형과 변수- 다른 언어들과 마찬가지로 int, float, string, boolean 등등의 자료형이 존재한다. 파이썬처럼 변수를 선언할 때 타입을 지정해줄 필요 없이 들어가는 값에 맞춰 자료형이 변한다. 변..
Unit 58 자료형 변환하기 -자료형 변환- 자료형을 지정하여 변환하는 것을 명시적 자료형 변환이라고 한다. 이 명시적 자료형 변환을 하는 방법은 변수나 값 앞에 (자료형)을 붙여주면 된다. (자료형) (자료형) #include int main() { float a = 1.23; // float형 변수 선언 int b = (int)a; // a의 형을 int로 바꾼 후 int형 변수 b에 저장 printf("%d", b); // b 출력 } 위 코드는 명시적 자료형 변환을 이용해 float형 변수 a의 값을 b에 저장한 코드다. int형으로 변환된 값 1이 출력되는 것을 볼 수 있다. 예전에는 명시적 자료형 변환 없이 int b = a; 형식으로 써줘도 작동은 했지만 컴파일 경고가 발생했었다. 하지만 ..
Unit 56 구조체 필드 사용하기 지금까지는 여러 자료형을 사용하여 해당 자료형의 크기만큼만 구조체에서 공간을 차지하도록 했는데, 비트 필드를 사용하면 bit 단위로도 값을 저장할 수 있다. 사용은 간단하다. struct { : ; }; 로 멤버를 선언하면 해당 비트만큼의 크기를 가진 멤버가 생성된다. #include typedef struct a { unsigned int a : 1; // 1bit unsigned int b : 2; // 2bit unsigned int c : 4; // 4bit } A; int main() { A a1; a1.a = 1; // a에 1 저장 0000 0001 a1.b = 4; // b에 4 저장 0000 0100 a1.c = 15; // c에 15 저장 0000 1..
Unit 54 공용체 사용하기 -공용체- 공용체는 구조체와 정의 방법은 같지만 멤버를 저장하는 방식이 다른 자료형이다. 구조체는 멤버들이 각각 공간을 차지하지만 공용체는 모든 멤버가 같은 공간을 공유한다. 공용체는 구조체와 달리 union 키워드로 정의하지만 형태는 구조체와 같다. union { }; #define _CRT_SECURE_NO_WARNINGS #include #include typedef union uni { char a[8]; // 8byte int b; // 4byte long long c; // 8byte } A; // 공용체 선언 int main() { A a; // 공용체 변수 선언 printf("%d\n", sizeof(a)); // 공용체 크기 출력 strcpy(a.a, "ab..
Unit 51 구조체 멤버 정렬 사용하기 -구조체 멤버 정렬- cpu가 메모리에 접근할 때 32bit는 4바이트 단위, 64bit는 8바이트 단위로 접근한다. 만약 32bit에서 cpu가 4바이트보다 작은 데이터에 접근한다면 실질적으로 더 작은 바이트만 사용하는 것이지만 사용은 4바이트만큼 해 비효율적이다. 따라서 c언어 컴파일러는 cpu가 메모리의 데이터에 효율적으로 접근할 수 있도록 구조체를 일정한 크기로 정렬을 한다고 한다. 무조건 정렬이 좋은 것은 아니다. 사진 같은 파일을 저장한다 가정할 때, 이런식으로 정렬이 일어난다면 사진이 깨져버릴 수 있다. 이런 경우 정렬을 사용하면 안된다. #include typedef struct stru { char x; // 1byte int y; // 4byte..
Unit 48 구조체 사용하기 -구조체 struct- 구조체는 관련 정보를 하나의 의미로 묶을 때 사용한다. 구조체는 자료를 체계적으로 관리하기 위해 c언어가 제공하는 문법이다. 구조체는 struct로 정의한다. 만드는 것은 struct { }; 으로 하면 된다. 예를 들어 학생 구조체가 있다 가정하면 struct Student { char name[20]; // 이름 int classNum; // 학번 int grade; // 학년 char gender; // 성별 }; 이런식으로 만들 수 있다. 이렇게 구조체로 학생에 사용되는 변수들을 만든다면, 한 학생을 만들 때마다 name1, name2 이런식으로 변수를 여러 개 만들 필요없이 하나로 손쉽게 관리 가능하다. 또한 구조체 안에 들어있는 변수를 멤버..
dyp4r
'Old (2021.01 ~ 2021.12)/Programming' 카테고리의 글 목록