웹 브라우저에서 index.php를 입력을 하면 이 파일이 있는 웹 서버에 접속을 하게 됩니다. 그럼 웹 서버가 요청한 데이터의 확장자를 보고 php인 것을 확인 후 자신이 처리하지 못하는 것을 알기 때문에 같은 서버에 설치된 php라는 프로그램으로 데이터의 처리를 위임하게 됩니다. 그럼 index.php에 해당하는 파일을 읽어서 php에 해당하는 코드를 php의 문법에 따라 해석해서 동작하게 됩니다. 그런데 그 php코드에 MySQL과 관련된 함수가 들어있다면 SQL문을 MySQL서버에 던지고 이 서버가 데이터를 처리 후 PHP한테 던지면 PHP는 순수한 HTML코드를 생성 후 웹서버한테 던져줍니다. 그리고 웹서버는 웹브라우저를 통해 그 코드를 보여주는 것입니다.
PHP에 함수 중 basename이라는 함수가 있습니다. 이 함수는 파일의 경로에서 파일명만을 추출해주는 함수입니다. 이것을 언제 사용을 하냐면 공격자가 id값으로 여러 디렉토리를 살펴보면서 파일들을 뒤져볼 수도 있습니다. 그것을 미연에 방지하기 위해 현재 디렉토리나 부모 디렉토리의 경로를 살펴보는 .. 을 제외하고 파일명만을 읽어와서 그나마 공격을 방지할 수가 있습니다. 파일과 연결이 되는 부분에 이것들을 사용을 하면 안좋은 생각을 가지고 있는 사람이 접근을 하는 것을 조금 더 방지를 할 수가 있습니다.
PHP에서 Cross Site Scripting을 방지하기 위한 함수가 두가지가 있습니다. htmlspecialchars라는 함수가 있습니다. 그래서 사용자가 내용을 작성할 수 있는 모든 곳에다 다 작성을 해주시면 됩니다. htmlspecialchars를 사용을 하지 않으면 이렇게 script를 작성해서 javascript문법으로 다른 웹페이지로 보내버리거나 더 심한 경우가 생길 수도 있습니다. 그래서 이것을 사용을 하면 어떻게 되는지 간단하게 보여드리겠습니다. 이렇게 작성을 하게 되면 이미지나 줄바꿈이나 몇몇 필수 태그들을 사용을 못할수도 있습니다. 그래서 php에서는 stric태그라는 것이 있습니다. 그것을 사용을 하면 태그를 다 날려버리고 특정 태그들만 사용을 할 수 있도록 옵션을 지정을 할 수 있..
저번에는 글을 만들어 보았는데 이번에는 만든 글을 수정을 해보도록 하겠습니다. 우선 제일 main 홈페이지 코드 create 밑에 이것을 작성해줍시다. 이 update라는 링크는 main페이지에서 항상 보이는 것이 아니라 CSS나 HTML등 글을 눌렀을 때 보여야 하므로 isset 함수로 조건을 걸어서 값이 있을 경우에만 보이게 만들었습니다. 그리고 id값을 GET으로 받아오는데 와 동일한 내용으로 코드를 줄인 것입니다. 이렇게 작성을 하고 index.php를 복사해서 update.php로 이름을 바꿔줍시다. 바꿔준 후 print_description아래에 이 코드를 추가해줍시다. 생성하는 것과 동일하게 제목과 내용을 수정할 수 있게 추가한 것입니다. old_title은 수정한 파일의 이름을 원래 있던 ..
사용자의 정보를 서버쪽으로 전송하는 기능이 form입니다. form name = "title" 입력한 정보가 서버쪽에 title이란 이름으로 전송이 된다는 말 type = "submit" 서버에 데이터 보내기 특징 name의 속성 값을 이름으로 해서 submit버튼을 누르면 submit이 속해있는 form의 action의 파일로 슝하고 데이터를 보내게 됩니다. form은 사용자가 입력한 정보를 URL파라미터로 바꾸는 기계라고 생각할 수도 있습니다. file_put_contents('data/'.$_GET['title'], $_GET['description']); PHP에서 파일을 저장할 때 사용하는 함수 첫번째 인자는 경로이고 2번째 인자는 내용 TIP. title이나 description의 값이 URL..
list의 0번과 1번의 . 과 ..은 무엇이냐면 운영체제에서는 현재 디렉토리라는 약속된 의미로 . 을 쓰고 현재 디렉토리의 부모 디렉토리를 가리키는 것으로 ..을 많이 씁니다. 이 앞에 2개는 사실상 현재 쓸 필요가 없기 때문에 제거를 해줄 것 입니다. 이 코드는 공통점이 있습니다. list의 대괄호 사이의 숫자를 제외하고는 계속 반복되고 있습니다. 이 반복되는 부분을 while문으로 충분히 처리할 수 있습니다. 바꿔보도록 하겠습니다. 이렇게 작성을 하면 위에 웹페이지에서 봤던 것과 똑같은 웹페이지를 볼 수가 있습니다. 그런데 목록이 추가가 되어도 5개까지만 출력이 되고 있습니다. $i < 5를 list의 원소의 숫자로 바꿔주면 됩니다. 저번에 배웠던 count라는 함수를 이용을 하면 됩니다. 그리고 ..
Bitnami폴더 안에 들어가서 php폴더를 열어줍시다. 그 폴더 안에 이 파일을 열어주세요. 그러면 이런 창이 뜨게 되는데 여기서 display_errors를 검색을 해봅시다. 그러면 아래 사진과 같이 값을 넣을 수 있는 display_errors가 나오게 되는데 이 값을 On으로 바꿔주세요 그리고 그 다음으로는 opcache라는 것을 검색을 해봅시다. 이것은 php 서버의 갱신속도를 빠르게 해준다고 합니다. 이것의 값을 0으로 바꿔주시면 초기 설정은 완료가 됩니다. 그리고 Bitnami manager를 들어가서 Apache 서버를 restart해주시면 설정이 적용이 됩니다.
현재 만들고 싶은 것은 폴더에 있는 파일들을 가져와서 리스트에 표시를 하고 싶은 것입니다. 이것을 구글이나 검색엔진에 검색을 해봅시다. php get file list in directory https://www.w3schools.com/php/func_directory_scandir.asp PHP scandir() Function PHP scandir() Function ❮ PHP Directory Reference Example List files and directories inside the images directory: www.w3schools.com 이것을 찾아봤으니 이제 공식문서에서 제대로 한번 찾아봅시다. directory는 scan을 하려는 폴더를 찾는다는 것입니다. 그리고 뒤에 대괄호..
배열은 반복문과 한몸과도 같은 것입니다. 이 배열이 우선 무엇이 있는지 검색부터 해봅시다. site:php.net array https://www.php.net/manual/en/language.types.array.php PHP: Arrays - Manual When creating arrays , if we have an element with the same value as another element from the same array, we would expect PHP instead of creating new zval container to increase the refcount and point the duplicate symbol to the same zval. This is true e..
PHP loop statements 이런식으로 검색을 하시게 되면 여러 다른 홈페이지의 정보들이 다 같이 뜨게 됩니다. 공식 문서의 내용만을 보고 싶으면 앞에 site:php.net 을 쳐주고 검색을 하면 공식문서의 결과만 나오게 됩니다. http://docs.php.net/manual/en/control-structures.while.php PHP: while - Manual A note to anyone nesting a while loop inside a while loop....Consider the example below:$one = array("10", "20", "30", "40");$two = array("a", "b", "c", "d");$i=0;while($i < count($one)..
- Total
- Today
- Yesterday
- HTML
- 관계형데이터베이스
- 조건문
- 안드로이드 스튜디오
- GRID
- 정렬
- 글로
- 선택자
- 객체
- 기초
- PHP&MySQL
- 네트워크 프로그래밍
- visual studio code
- 생활코딩#MySQL
- 알고리즘
- 생활코딩#동영상을#글로#html
- 동영상을
- 언리얼엔진4
- 문자열
- 차이점
- php
- javascript
- 변수
- css
- inline
- C언어
- 생활코딩
- 언리얼엔진
- TAG
- Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |