PHP ADVANCED

beans_I·2023년 10월 16일

[23-2] 웹프로그래밍

목록 보기
9/13

PHP Date & Function

data(format, timstamp)
: 포멧 형식(d,m,Y,l-week표시), 타임의 기준.
: H(24시간), h, i(분), s, a(am or pm)
https://www.w3schools.com/php/phptryit.asp?filename=tryphp_date1

사용예시)

  1. copyright- 시간
    : https://www.w3schools.com/php/phptryit.asp?filename=tryphp_date_copyright

타임존 확인 설정 : date_default_timezone_set() 대륙-도시를 입력하면 된다. 이를 기준으로 시간 표시를 한다.

1970/01/01 : mktime() 유닉스 타임스탬프 값으로 바꾸어준다. 좌측 날짜를 기준으로 0부터 값을 추가해 만든다 보면된다.

문자열을 타임으로 : 유닉스 타임스탬프로 적었을 때, strtotime을 입력해주면 된다.

파일

1. include file

require : 포함을 시켰을 떄 에러가 있으면 중단. (include 'filename)'
include : 에러 발생 부분만 무시.
예제 1) https://tryphp.w3schools.com/showphp.php?filename=demo_include1

footer.php의 내용은 아래와 같다.

예제2) https://tryphp.w3schools.com/showphp.php?filename=demo_include2

예제 3) https://tryphp.w3schools.com/showphp.php?filename=demo_include3

var.php의 내용

그래서 뭘 쓸까?

차피 에러 처리인데..
include 에러 처리: 해당 부분만 컷
https://tryphp.w3schools.com/showphp.php?filename=demo_include4
require 에러 처리: 에러 발생한 부분부터 날리기
https://tryphp.w3schools.com/showphp.php?filename=demo_include5

2. File Handling

많이 쓰는 부분

readfile() :

파일을 읽어서 출력해주는 함수 .
https://tryphp.w3schools.com/showphp.php?filename=demo_file_readfile

fopen() :

대상 파일 지정, 어떤 형식으로 파일을 오픈할 것인지.
r: read
w: write / 존재하지 않으면 새로 생성. 근데 이전에 있어도 새로 생성.
a: write / 시작포인트가 파일의 끝이라서 이어쓰기가 가능ㅎ다.
x: write / 새로 생성은 불가능.
r+: r+w
w+:

  • or die -> 실패하면 or로 분기 후 die 실행
  • fread($fileNname, $fileSize) : 파일에 대해서 얼만큼 읽을 것인지.
  • 마무리 후 fclose()로 파일을 닫는다.

fread():

fread($fileNname, $fileSize)

fwrite():

fwrite($fileName, mode) : \n 자동적용이 되지 않는다.

그리고 mode에 주의해야 하는데 w로 작성하면 덮어진다. (문서 맨 앞이 포인터)


이렇게 다시 불러와 쓰면은 위에서 썼던게 사라진다.
그래서 보존하려면 a를 쓰자.

fclose():

fclose()

fgets():

오픈한 파일에서 한 줄만을 받는다. 그리고 \n으로 마무리

fgetc():

character만을 받음.
https://tryphp.w3schools.com/showphp.php?filename=demo_file_fgetc

feof(): file end of:

파일 문장의 끝인가.
https://tryphp.w3schools.com/showphp.php?filename=demo_file_fgetc

File Upload

php.ini 에서 file_upload가 on되어있어야한다.

파일의 업로드는 form태그를 이용하게 되는데,
이때 ecntype을 "multipart/form.data"로 설정해주어야 한다. (어떤 형식으로 데이터를 전달할 것인가. )
그리고 input을 받는 부분은 type="file"로 지정해주면 된다.

그러면 php에서 파일의 저장 위치와
타켓 파일의 .basename()으로 (확장자도 포함한 파일이름)

basename은 말 그대로 근본의 값, 경로가 없는 순수 파일의 이름을 리턴해준다. (우리가 흔히 아는 asdf.jpg -> 이렇게 리턴해준다. )

$_FILES 파일에 대한 정보를 담고 있는 배열. [넘겨줄 때의 이름] / [업로드한 파일 이름인 name] (type(업로드된 파일의 타입. 이미지면 jpeg) size(업로드된 파일의 크기) tmp_name(클라에서 보낼때 서버에서 임시 저장되는 이름) error가 올 수 있다. )

pathinfo(): 파일에서 PATHINFO_EXTENSION으로 확장자명을 가지고온다.

업로드 스크립트 작성하기

$check에 getimagesize로 파일에서 name = fileToUpload에서 가져온 값 중 tmp_name을 리턴하는데 이 이미지의 사이즈를 계산. 이미지가 아니면은 false

업로드할때 서버에 이미 해당 파일이 있을 때

file_exists()를 사용

파일의 크기 확인

파일의 종류 혹인

위의 imageFileType이 선언되어있음을 확인하고 보자. (pathinfo())

완성된 코드


move_upload_file(a,b): a를 b의 디렉토리로 이동 후 성공하면 1, 아니면 0 리턴.

쿠키

웹페이지를 벗어나더라고 사용자의 정보를 저장하한다.

주로 path까지만 이용.
예제를 보자.

쿠키의 설정은 파일의 맨 앞에 있어야한다.
setcookie(쿠키의 이름, 쿠키의 값, 30일 동안, 파일의 전체경로 동안)
쿠키는 슈퍼 글로벌 변수인 $_COOKIE에서 name을 key값으로 저장된다.
echo $_COOKIE["usesr"]를 입력하면 Alex Porter가 출력된다.
쿠키의 삭제는 안되고 유지 기간만 조절할 수 있다.

쿠키의 수정은 동일하게 setcookie를 이용하여 다시 조정하면 된다. (업데이트 개념)

추기가 실행된지 확인하려면
테스트 쿠키를 넣고 쿠키 글로벌 변수에 count 함수를 넣어 0보다 큰지 확인해주면 된다.
https://tryphp.w3schools.com/showphp.php?filename=demo_cookie5

SESSION
여러 페이지에 거ㄹ쳐서 변수를 활용하고 저장하고자 할 때 사용하낟.
PHP session ID는 웹클라마다 하나씩 부과되며 클라를 구분하기 위해 사용된다.
서버에 저장하기에 클라에 저장하는 쿠키보다는 보안이 좋다. 즉, 데이터 보관에 월등하다.

세션을 사용하는 방법은
쿠키를 정의하듯 최상단에 sesson_start()을 선언해준다.

https://tryphp.w3schools.com/showphp.php?filename=demo_session1

super글로벌 변수 : $_SESSION

세션은 여러 파일에서 사용이 가능하다.
session1.php에 선언하면은 session2.php에서도 사용할 수 있다는 말씀!

다른 값으로 변수는 배열에서 값을 변환하는 식으로 진행하면 된다.

세션 값 모두 제거: session_unset()

세션 자체를 없애기(종료하기): https://tryphp.w3schools.com/showphp.php?filename=demo_session5
연습하기 : https://www.w3schools.com/php/exercise.asp?filename=exercise_advanced5

CallBAck
함수의 인자로써 또다른 함수를 정의하는 것이다.
수도코드로 func(func1, "이게 콜백이다.")라는 느낌.

함수의 이름을 ""안에 넣는 것을 볼 수 있다.
https://www.w3schools.com/php/phptryit.asp?filename=tryphp_callback_functions

https://www.w3schools.com/php/phptryit.asp?filename=tryphp_callback_functions2

콜백함수는 아래의 내용을 ㅗ학인하는 것이 좋을 듯 하다.

유저정의 콜백함수

https://www.w3schools.com/php/phptryit.asp?filename=tryphp_callback_functions3

에러 핸들링


https://www.w3schools.com/php/phptryit.asp?filename=tryphp_exceptions_throw
throw new exception으로 예외처리를 할 수 있다.
try catch도 가능
https://www.w3schools.com/php/phptryit.asp?filename=tryphp_exceptions_try_catch


finally는 에러가 발생하든 말든 출력하는 부분이다.

New exception

profile
노션으로 옮겼습니다. https://beans-i.notion.site/main?pvs=74

0개의 댓글