-
[SISS/웹 스터디] 2학기 1주차 스터디 - PHP24-2 SISS/웹 2024. 9. 8. 23:50
2학기 1주차 스터디 - PHP 1주차 09/02 ~ 09/08 [PHP] 01 ~ 16
[생활코딩] PHP
→ https://www.youtube.com/playlist?list=PLuHgQVnccGMAMMNByX8Bf1BkVrShBhj1I
* 편집 및 사진 파일 문제 9/9(월) 중으로 수정 예정→ 수정 완료1. 수업소개
- 웹의 등장(1990)으로 정보의 확산 시작
- HTML 이용에의 불만 발생
- 사람의 손으로 하나하나 코드를 치는 것에 대한 불만
- (웹페이지의 통합적 관리 + 양방향 정보 생산)을 위한 움직임
- PHP, JSP, ASP, Django, Ruby on Rails, Node.js 등 개발
- PHP
- 웹 페이지 자동 생성(콘텐츠를 이용하여 자동으로 HTML을 만듦)
2. 수업의 목적
- php의 등장 배경 → 모든 페이지를 수동적으로 수정할 경우 많은 시간이 걸림
- 예시
- 주소
- http://127.0.0.1/index.php?id=HTML → index만을 수정하여 관리할 수 있음 → index에서 id를 통해 페이지를 읽어옴을 알 수 있음
- 파일
- data에 문단 파일 추가만으로 새로운 페이지를 만듦
- 주소
3. PHP 설치
- bitnami wamp
- w → windows
- a → apache
- m → mysql
- p → php
3.1.1. PHP 설치(윈도우)
- bitnami mamp, wamp 모두 지원이 종료되어 맥에서 다운로드 받을 수 없게 됨 → xampp를 다운로드
- xampp 참고 링크
컨트롤 패널에서 Apache를 실행 브라우저를 통해 localhost에 접속 3.1.2. PHP 환경 설정 변경(윈도우)
- php에 사용자의 실수를 알려주는 기능이 있음 → 에러 메시지는 사용자의 비밀번호 등 중요한 정보를 포함할 수 있음 → 해당 기능이 켜져 있을 경우 사용자에게 이러한 정보가 유출될 수 있기 때문에 기본 설정은 Off → php 설정을 직접 바꿔야 함 (근데 xampp는 기본 설정이 On인 듯)
- php 기본 설정 변경 → 설정 후에는 항상 꼭 apache 서버를 재시동해야 적용이 됨 (재시동 시 php.ini을 다시 읽어오므로)
- 에러 메시지
- 로컬 디스크/xampp/php/php.ini (파일 유형이 “구성 설정”)
- 우클릭 하여 [편집] 버튼을 누르기
- ctrl + f 를 통해 “display_errors”를 검색
- 세미 콜론 없는 display_errors를 On으로 변경(display_errors=On)
- opcache (php의 성능을 높여주는 기능)
- 동일한 방법으로 “opcache”를 검색
- opcache.enable=0 으로 수정
- php 파일 수정 시 즉각적으로 반영되지 않도록 함
- 에러 메시지
- 기타
- 컨트롤 패널의 [config]에서 접속자의 사용, 오류 로그를 확인할 수 있음
php.ini 수정 4. PHP의 원리
- php
- 구성 (사진은 아래에 있음)
- 점선 왼쪽(이용자)은 웹 브라우저
- 점선 오른쪽(서버)은 웹 서버(아파치), php(프로그램)가 설치되어 있음
- 상호작용
- 웹 브라우저가 파일을 요청 (주소)
- 웹 서버가 주소를 보고 확장자에 따라 요청을 처리
- .html의 경우 바로 제공 가능
- .php의 경우 php에게 파일 처리를 맡김 → php가 해당 문서를 해석하여 만든 html 파일을 웹 서버에게 제공 → 웹 서버가 웹 브라우저에 생성된 파일을 전달
- 구성 (사진은 아래에 있음)
- 실습
- 로컬 디스크/xampp/htdocs 폴더에 파일을 생성 → html 파일은 실행 시 내용이 동일 → php 파일은 동적으로 내용이 변경 (php가 html 파일 생성 시 현재 시각 반영)
<!-- index.html --> <!DOCTYPE html> <html> <body> 2024-09-08 15:14:01 </body> </html>
<!-- index.php → <?php ?> 안의 내용만 php 내용이고, 나머지는 그대로 출력됨 --> <!doctype html> <html> <body> <?php echo date('Y-m-d H:i:s'); ?> </body> </html>
5. PHP의 데이터 타입
- 숫자 → 정수, 실수
- 문자 → 문자열
5.1. PHP와 숫자
- 정수 및 실수 → 그대로 입력하면 됨
- 기본
- <?php ?> → php문의 시작과 끝
- echo → 출력
- print() 를 이용하여 출력할 수도 있음
- 연산자
- 사칙연산 가능 → +, -, *, /
<!-- number.php 브라우저에 다음 입력 127.0.0.1/number.php --> <!doctype html> <html> <body> <h1>숫자와 산술 연산자</h1> <h2>1+1</h2> <?php echo 1+1; ?> <h2>2-1</h2> <?php echo 2-1; ?> <h2>2*2</h2> <?php echo 2*2; ?> <h2>4/2</h2> <?php echo 4/2; ?> </body> </html>
- 기본
5.1. PHP와 숫자 5.2. PHP와 문자열
- 문자열
- 규칙
- 기본적으로 작은 따옴표(’’), 큰 따옴표(””)를 이용
- 시작과 끝은 동일
- 따옴표를 문자열에 포함할 경우
- 다른 종류의 따옴표로 문자열 앞 뒤를 감싸기
- 이스케이프 문자를 이용
- 연산자
- 결합 연산자 → .
- 문자열 함수
- 문자열 길이 → strlen()
<!-- string.php --> <!doctype html> <html> <body> <h1>문자열과 문자열 연산자</h2> <?php echo "Hello world"; ?> <h2>결합 연산자</h2> <?php echo "Hello "."world"; ?> <h2>문자열 길이</h2> <?php echo strlen("Hello world"); ?> </body> </html>
- 규칙
5.2. PHP와 문자열 6. PHP의 변수
- 변수
- 참고
- lorem을 쓰고 탭을 누르면 무작위 텍스트를 생성해줌
- 규칙
- 변수 이름 앞에는 항상 $ → $a
<!-- variable.php --> <!doctype html> <html> <body> <h1>변수</h1> <?php $name = "siss"; echo "Lorem ipsum dolor sit, ".$name." amet consectetur adipisicing ".$name." elit. Dolor repudiandae ".$name." quos minus animi ullam perferendis. Quia ".$name." perspiciatis possimus pariatur, rerum amet eveniet nostrum nisi magni reiciendis quaerat! Facere, dicta sint ".$name."."; ?> </body> </html>
- 참고
6. PHP의 변수 7.1. PHP의 URL 파라미터
- 입력값을 파라미터로 이용하기
- url을 통해 name을 받아오려면
- (주소 입력) ~/parameter.php?name=입력값
- (php 파일) <?php echo $_GET['name']; ?> (여러 파라미터의 경우에는 &로 구분하여 입력)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> 안녕하세요, <?php echo $_GET['name']; ?>님 </body> </html>
- url을 통해 name을 받아오려면
7.1. PHP의 URL 파라미터 7.2. URL 파라미터의 활용
- 웹1 수업의 파일 활용 → https://github.com/web-n/web1_html_internet
- url 입력으로 가져올 파일을 받아오는 코드 (id)
... <body> <h1>WEB</h1> <ol> <li><a href="index.php?id=HTML">HTML</a></li> <li><a href="index.php?id=CSS">CSS</a></li> <li><a href="index.php?id=JavaScript">JavaScript</a></li> </ol> <h2> <?php echo $_GET['id']; ?> </h2> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Quidem, minima? Optio cumque nostrum, aperiam molestiae exercitationem debitis at natus facilis dignissimos aut dolor suscipit deleniti error sapiente. Autem, natus facere! </body> </html>
8.1. 함수의 사용
- strlen() → 문자열의 길이를 반환
- nl2br → html에서 줄바꿈 문자를 인식하지 못하므로 문자열 내의 \n을 <br>로 변환하는 함수
<!-- function.php --> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>function</title> </head> <body> <h1>function</h1> <?php $str = "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Impedit itaque ad mollitia culpa quam quibusdam consequatur id quia, rem numquam delectus assumenda soluta voluptatibus iusto reiciendis sunt eaque, quaerat temporibus."; echo $str; ?> <h2>strlen()</h2> <?php echo strlen($str); ?> <h2>nl2br</h2> <?php echo nl2br($str); ?> </body> </html>
8.1. 함수의 사용 8.2. 함수의 활용
- 파일 읽어오기
- file_get_contents(”주소”);
- 각각의 목록에 id를 추가하여 로드 시 id 값을 전달 (실제로는 보안 및 규모 문제 등으로 이렇게 사용하면 안 됨) → $_GET[’id’]을 문자열에 연결하여 파일을 읽어옴
... <body> <h1>WEB</h1> <ol> <li><a href="index.php?id=HTML">HTML</a></li> <li><a href="index.php?id=CSS">CSS</a></li> <li><a href="index.php?id=JavaScript">JavaScript</a></li> </ol> <h2> <?php echo $_GET['id']; ?> </h2> <?php echo file_get_contents("data/".$_GET['id']); ?> </body> </html>
8.2. 함수의 활용 9. 제어문 예고
- 시간의 흐름대로 진행되는 일의 순서를 제어함 → 조건문, 반복문
10. 조건문 예고
- index.php 뒤에 id값이 없을 경우 홈 페이지가 나오게 하고 싶다면 → 조건문 이용
11. Boolean과 비교 연산자
- 불 값 → 비교 연산자
- var_dump() → 입력 값의 자료형, 입력 값, 길이를 보여주는 함수
<!-- comparison.php --> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <h1>비교 연산자 & 불</h1> <h2>1==1</h2> <?php var_dump(1==1); ?> <h2>1>1</h2> <?php var_dump(1>1); ?> <h2>1>=1</h2> <?php var_dump(1>=1); ?> </body> </html>
11. Boolean과 비교 연산자 12. 조건문의 형식
- if문
if (불 값) { 실행문1; } else { 실행문2; }
13. 조건문의 활용
- isset() → 값이 있는지 여부를 반환하는 함수
... <body> <h1><a href="index.php">WEB</a></h1> <ol> <li><a href="index.php?id=HTML">HTML</a></li> <li><a href="index.php?id=CSS">CSS</a></li> <li><a href="index.php?id=JavaScript">JavaScript</a></li> </ol> <h2> <?php if (isset($_GET['id'])) { echo $_GET['id']; } else { echo "Welcome"; } ?> </h2> <?php if (isset($_GET['id'])) { echo file_get_contents("data/".$_GET['id']); } else { echo "Hello PHP~!"; } ?> </body> </html>
13. 조건문의 활용 14. 반복문 예고
- 새로운 데이터 파일이 추가되었을 경우 자동으로 이를 보여줄 수 있도록 하자 → 반복문을 이용하여 목록 자동 생성
15. 반복문의 형식
- while 문
while (불 값) { 실행문; }
<!-- loop.php --> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>반복문</title> </head> <body> <h1>while</h1> <?php echo'1<br>'; $i = 0; while ($i < 3) { echo '2<br>'; $i = $i + 1; } echo '3<br>'; ?> </body> </html>
15. 반복문의 형식 16. 배열의 형식
- 배열 → $배열명 = array(원소1, 원소2, ...);
-
- count() → 배열의 원소 수를 반환
- array_push() → 배열에 원소를 삽입배열 함수
-
16. 배열의 형식 - (참고) var_dump()로 배열을 볼 때 우클릭>[페이지 소스 보기]를 누르면 보기 편함
'24-2 SISS > 웹' 카테고리의 다른 글
[SISS/웹 스터디] 2학기 6주차 스터디 - MySQL + PHP (0) 2024.11.03 [SISS/웹 스터디] 2학기 5주차 스터디 - MySQL (3) 2024.10.06 [SISS/웹 스터디] 2학기 4주차 스터디 - MySQL (1) 2024.09.29 [SISS/웹 스터디] 2학기 3주차 스터디 - PHP (0) 2024.09.22 [SISS/웹 스터디] 2학기 2주차 스터디 - PHP (0) 2024.09.14