W3C PHP 강좌 제3장 입니다. 1장 기초 및 2장 Form도 참고하세요.
다차원 배열
- PHP의 배열(Array)는 key/value의 리스트
- PHP의 다차원 배열은 여러개의 배열을 담은 배열(array containing one or more arrays)
- 2차원 배열은 배열의 배열
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
- echo $cars[0][0]." : in stock ".$cars[0][1]." : sold ".$cars[0][2].".<br />"; 와 같이 참조가능
날짜와 시간
- date(format, timestamp) : timestamp는 옵션. default는 현재시간.
- echo "Today is " . date("Y-m-d") . "<br />"; // 여기에서 Y, m, d, 1 (요일) 등 사용가능
- © 2010-<?php date("Y") ?> // @2010-2014 로 표시됨
- echo "The time is : " . date("h:i:s") . <br />"; // 여기에서 h, i(시간), s, a(오전 오후) 등 사용가능
- date_default_timezone_set() // 시간대 설정
- mktime(hour, min, sec, month, day, year) // 시간 생성
- strtotime("10:30am April 15 1999"); strtotime("tomorrow") // 인간이 사용하는 시간을 저장
Include
- Include (혹은 require)는 지정한 텍스트/코드/등을 읽어들이는 문장으로, php, html 등을 반복적으로 사용할 때 유용함. 두 문장은 기능적으로 동일
- include 의 경우, 에러가 발생하더라도 경고만 하고 계속진행
- require의 경우, 에러가 발생하면 정지
- include 'filename'; 또는 require 'filename'; 으로 사용
- 공통 라이브러리로 사용하거나, 메뉴로 사용하거나, 변수 저장소로 사용하거나...
File Handling
- readfile() : 파일을 읽어서 output buffer로 보냄. (즉, 일반적으로는 화면에 그대로 표시됨)
- fopen("filename", "mode"); // 모드는 r/w/a/x/r+/w+/a+/r+
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open");
// echo fread($myfile, filesize("webdictionary.txt"));
while(!feof($myfile)) {
echo fgets($myfile) . "<br />"; // 한줄 읽기
}
fclose($myfile);
?>
- File upload form
- file_upload.php
- 다만 여기에 파일의 최대크기, file type 등을 체크하는 기능이 필요
} else {
echo "Upload : " . $_FILES["file"]["name"] . "<br />";
echo "Type : " . $_FILES["file"]["type"] . "<br />";
echo "Size : " . ($_FILES["file"]["size"] / 1024) . " KB<br />";
echo "Stored in : " . $_FILES["file"]["tmp_name"];
}
?>
Cookies
- 쿠키는 사용자를 구분하는데 주로 사용된다. 쿠키는 서버에서 사용자 컴퓨터에 심는 작은 파일로서, 컴퓨터가 동일한 요청을 하면 쿠키도 함께 전송된다. PHP를 사용하면 쿠키를 생성할 수도, 값을 불러올 수도 있다.
<?php
$expire = time() + 60*60*24*30;
setcookie("user", "Min Heo", $expire); // user 에 "Min Heo" 부여, 30일 후 해제
?> // setcookie는 반드시 html 앞에 위치해야 한다.
<html>
- setcookie()는 자동으로 URLencode 됨. 원하지 않을때는 setrawcookie() 사용.
- 쿠키를 읽을 때는 별도의 file open 작업이 필요없음.
<?php
echo $_COOKIE["user"]; // "user"의 값
print_r ($_COOKIE); // 모든 쿠키 값을 보는 방법
?>
Session
- 세션... 한번의 접속?? 이때 세션에 따른 정보를 저장해 둘 수 있음
<?php
session_start();
if(isset($_SESSION['views'])) {
$_SESSION['views'] = $_SESSION['views'] +1;
} else {
$_SESSION['views'] = 1;
}
echo 'Pageviews = " . $_SESSION['views'];
?>
PHP Error
- die() 로 처리
- 별도의 에러 처리 루틴을 만듦
- 에러 보고
PHP Filter
- 의심스런 곳에서 입력된 데이터의 유효성 검증 및 필터링
- PHP filter 는 데이터 필터링을 손쉽게 하기 위한 확장
- 대부분의 웹앱은 외부 입력이 필요. 필터를 사용하면 항상 올바른 입력이 들어오도록
- 모든 종류의 외부 데이터는 다 필터링을 해야 함
- form 으로부터의 입력
- 쿠키
- 웹 서비스 데이터
- 서버 변수
- 데이터 쿼리 결과
- Validating Filter
- 사용자 입력의 검증
- 정확한 포맷 확인 (이메일 또는 URL 등)
- 성공시 기대한 타입을 반환, 실패시 FALSE 반환
- Sanitizing Filter
- 문자열에서 특정 문자를 허용/불가
- No data의 포맷 룰
- 항상 문자열을 반환함