[PHP] PHPExcel 시트 추가하기[PHP] PHPExcel 시트 추가하기
Posted at 2020. 2. 11. 20:06 | Posted in PHP/PHP Library■ PHPExcel 시트 나누고 데이터 삽입하기
# 소스코드
<?php include "./classes/PHPExcel.php"; $objPHPExcel = new PHPExcel(); $rocketPunch = array( // 첫번째 시트에 사용될 데이터 값 "pinkPunch" => array( "1" => "PINK PUNCH" , "2" => "BIM BAM BUM" , "3" => "Love Is Over" , "4" => "Lucid Dream" , "5" => "Favorite" , "6" => "Do Something" ) // 두번째 시트에 사용될 데이터 값 , "redPunch" => array( "1" => "RED PUNCH" , "2" => "BOUNCY" , "3" => "So Solo" , "4" => "Fireworks" , "5" => "Paper Star" , "6" => "Lilac" , "7" => "Girl Friend" ) ); // @breif Worksheet 라는 이름으로 생성되는 기본 시트를 삭제한다. $objPHPExcel -> removeSheetByIndex(0); // @breif 생성할 시트의 순번 $sheetNum = 0; foreach($rocketPunch as $title => $album) { // @breif createSheet( ) 함수로 새로운 시트를 생성한다. $objWorkSheet = $objPHPExcel -> createSheet($sheetNum); // @breif 엑셀 시트 이름 지정 $objWorkSheet -> setTitle($title); // @breif 타이틀 영역 지정 $objWorkSheet -> setCellValue("A1", "NO."); $objWorkSheet -> setCellValue("B1", "Song"); // @breif 엑셀에 데이터 삽입 $row = 1; foreach($album as $key => $val) { $row++; $objWorkSheet -> setCellValue(sprintf("A%s", $row), $key); $objWorkSheet -> setCellValue(sprintf("B%s", $row), $val); } // @breif 각 행의 간격 $objWorkSheet -> getColumnDimension("A") -> setWidth(10); $objWorkSheet -> getColumnDimension("B") -> setWidth(30); // @breif 각 로우의 디자인 $objWorkSheet -> getStyle(sprintf("A1:B%s", $row)) -> getAlignment() -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objWorkSheet -> getStyle(sprintf("A1:B%s", $row)) -> getBorders() -> getAllBorders() -> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objWorkSheet -> getStyle("A1:B1") -> getFont() -> setBold(true); $objWorkSheet -> getStyle("A1:B1") -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("CECBCA"); $objWorkSheet -> getStyle(sprintf("A2:B%s", $row)) -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("F4F4F4"); // @breif 숫자앞에 기본적으로 0을 붙일 수 있게 한다. $objWorkSheet -> getStyle(sprintf("A2:A%s", $row)) -> getNumberFormat() -> setFormatCode("00"); $sheetNum++; } // @breif 문서를 오픈할 시 첫번째 시트로 열리게 설정 $objPHPExcel -> setActiveSheetIndex(0); // @breif 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다. $filename = iconv("UTF-8", "EUC-KR", "울림_로켓펀치"); header("Content-Type:application/vnd.ms-excel"); header("Content-Disposition: attachment;filename=".$filename.".xls"); header("Cache-Control:max-age=0"); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel5"); $objWriter -> save("php://output"); ?> |
# 출력결과
'PHP > PHP Library' 카테고리의 다른 글
[PHP] PHPExcel 날짜 표시 형식 처리하기 (0) | 2020.04.26 |
---|---|
[PHP] SimpleSql 라이브러리를 사용한 손쉬운 쿼리사용 (1) | 2018.04.16 |
[PHP] PHP 메일 발송 (5) | 2018.04.10 |
[PHP] PHPExcel 엑셀 파일 업로드 하고 내용 읽기 (0) | 2018.03.22 |
[PHP] PHPExcel 설치하고 엑셀파일 다운받기 (0) | 2018.03.21 |
[PHP] JSON 데이터 화면에 출력하기[PHP] JSON 데이터 화면에 출력하기
Posted at 2020. 1. 16. 13:53 | Posted in PHP참고 : https://kdevkr.github.io/archives/2018/understanding-http-content-types/
■ JSON 데이터 JSON 타입으로 변환해서 처리하기
PHP 상에서 API를 제공하는 경우 그 형식이 JSON 타입일때
단순히 TEXT 형태로 JSON 데이터를 나열하는것이 아니라.
Content-Type의 헤더를 :application/json으로 페이로드와 함께 HTTP 요청을 하게 되면
서버가 JSON 타입으로 변환해서 처리한다.
① Content-Type:application/json; 을 설정한 경우
# 소스코드
<?php header( "Content-Type:application/json;charset=UTF-8" ); $json = '{ "SlayerS_BoxeR" : { "name" : "임요환" , "species" : "테란" , "birthday" : "1980-09-04" , "team" : "SK텔레콤 T1" } , "YellOw" : { "name" : "홍진호" , "species" : "저그" , "birthday" : "1982-10-31" , "team" : "KTF 매직엔스" } , "Nal_rA" : { "name" : "강민" , "species" : "프로토스" , "birthday" : "1982-03-15" , "team" : "KTF 매직엔스" } }'; echo $json; ?> |
# 출력결과
② Content-Type:text/html; 인경우
# 소스코드
<?php // @breif Content-Type 주석처리 // header( "Content-Type:application/json;charset=UTF-8" ); $json = '{ "SlayerS_BoxeR" : { "name" : "임요환" , "species" : "테란" , "birthday" : "1980-09-04" , "team" : "SK텔레콤 T1" } , "YellOw" : { "name" : "홍진호" , "species" : "저그" , "birthday" : "1982-10-31" , "team" : "KTF 매직엔스" } , "Nal_rA" : { "name" : "강민" , "species" : "프로토스" , "birthday" : "1982-03-15" , "team" : "KTF 매직엔스" } }'; echo $json; ?> |
# 출력결과
위 두개의 결과처럼 똑같이 JSON 데이터를 화면에 뿌려주지만
어떻게 인식하고 처리하는지 여부를 한눈에 확인할 수 있다.
'PHP' 카테고리의 다른 글
[PHP] 서버 접속 가능여부 확인 (0) | 2020.05.29 |
---|---|
[PHP] 배열인지 아닌지를 확인하는 is_array() 함수 (0) | 2019.02.21 |
[PHP] DB 입력 or 출력시 따옴표(') 처리하기 (0) | 2018.10.02 |
[PHP] 변수 or 배열의 정보를 표기하는 함수 (0) | 2018.09.17 |
[PHP] mcrypt 방식 OpenSSL 방식으로 대체하기 (0) | 2018.08.30 |
[PHP] PHP 파일 업로드시 용량 설정 변경[PHP] PHP 파일 업로드시 용량 설정 변경
Posted at 2020. 1. 16. 10:28 | Posted in PHP/PHP Setting참고 : https://webdir.tistory.com/221
참고 : https://zetawiki.com/wiki/PHP_업로드_설정
■ PHP.ini의 파일 업로드 설정 확인하기
$ php -ini | grep php.ini $ sudo vim /etc/php/7.2./cli/php.ini |
※ 기본값은 리눅스 버전 및 PHP 버전등 환경에 따라 조금 다를 수 있다.
#01.
max_execution_time ( 기본값 : 30 )
-. 파일업로드시 작업 처리 최대 제한시간을 설정한다.
-. 지정한 시간보다 길어지는 경우 오류가 발생한다.
-. 30은 30초를 의미한다.
-. 0 또는 -1을 입력하면 무한대로 설정된다.
#02.
max_input_time ( 기본값 : 60 )
-. 스크립트 페이지로 넘어가기 전에 PHP 엔진이 데이털르 업로드 받는 시간을 설정한다.
-. 만일 여러 메가 바이트의 데이터를 전송해야 하는 경우
max_input_time은 높아야 한다.
-. 스크립트에서 set_time_limit( ) 함수를 호출해서
max_input_time의 PHP.ini 파일의 설정을 재정의 할 수 있다.
-. PHP에서 set_time_limit( 0 )으로 설정하면 두가지 시간을 모두 제어할 수 있어
업로드페이지에 이 코드를 삽입하는 것을 추천한다.
#03. memory_limit
( 기본값 : 128 )
-. PHP의 메모리 제한 기본값은 128MB 이다.
-.
post_max_size가 만약 100M를 넘어간다면 memory_limit( 기본값 128M )를 최소 40M 가량 더해 적용해야 한다.
-. PHP엔진이 POST로 전달되는 데이터를 철히나느 경우에는 전달되는 데이터의 일부를 유지하기 위해 메모리가 사용된다.
-.
memory_limit의 값을 너무 높은 값을 설정하는 것은 매우 위험할 수 있는데,
이는 여러개의 업로드들이 동시에 처리되는 경우 사용가능한 모든 메모리를 사용해 버려
다른 관련 없는 스크립트 뿐만 아니라 서버 전에체 영향을 미치게 된다.
-. 0 또는 -1로 설정할경우 메모리 사용의 제한이 없어진다.
#04.
post_max_size
( 기본값 : 8M )
-. POST 방식으로 넘겨질 최대 데이터 사이즈를 설정한다.
-.
post_max_size는 upload_max_filesize보다 20% 크게 지정해야 한다.
통신 비트는 일반적으로 8bit 후 2bit의 별도의 패리티비트( 오류정정 )가 포함되기 때문이다.
#05. file_uploads ( 기본값 : On )
-. 파일 업로드 허용 여부
-. 상태가 Off로 설정되어 있을 경우 업로드 할 수 없다.
#06.
uploa
d_tmp_dir ( 기본값 : /tmp )
-. 업로드 처리시 임시 저장 디렉토리
#07.
upload_max_filesize ( 기본값 : 2M )
-. 최대 업로드 파일사이즈를 지정한다.
-. 원하는 용량만큼 설정하면 된다.
#08.
max_file_uploads ( 기본값 : 20 )
-. 업로드시 한번에 올릴 수 있는 파일의 최대 갯수 제한 설정
■ Apache 및 PHP 재시작
모든 설정 변경이 완료되었으면
아파치를 재시작 한다.
간혹 PHP7 버전 이상 및 설정에 따라
먼저 PHP를 재시작 이후 아파치를 재시작 해야 한다.
'PHP > PHP Setting' 카테고리의 다른 글
[PHP] DB접속 테스트하기 (6) | 2019.07.30 |
---|---|
[PHP] Windows 환경에서 Apache 및 PHP 설치하기 (22) | 2018.08.18 |
[CodeIgniter] 폼 검증하기[CodeIgniter] 폼 검증하기
Posted at 2019. 12. 17. 18:36 | Posted in PHP/CodeIgniter■ 형식 검토
http://www.ciboard.co.kr/user_guide/kr/libraries/form_validation.html
규칙 |
파라미터 |
설명 |
required |
NO |
· 검사 대상이 비어있으면 FALSE를 리턴한다. |
matches |
YES |
· 검사 대상이 파라미터의 값과 일치하지 않을 때 FALSE를 리턴한다. |
is_unique |
YES |
· 파라미터에서 테이블 및 필드 이름이 유일하지 않다면 FALSE를 리턴한다. |
alpha |
NO |
· 검사 대상이 알파벳 이외의 문자를 포함할 때 FALSE를 리턴한다. |
alpha_numeric |
NO |
· 검사 대상이 알파벳이나 숫자가 아닌 문자를 포함할 때 FALSE를 리턴한다. |
alpha_dash |
NO |
· 검사 대상이 알파벳, 숫자, 밑줄(...), 대시(...) 이외의 문자를 포함할 때 FALSE를 리턴한다. |
numeric |
NO |
· 검사 대상이 숫자 이외의 문자를 포함할 때 FALSE를 리턴한다. |
integer | NO | · 검사 대상이 정수 이외의 문자를 포함할 때 FALSE를 리턴한다. |
decimal | YES | · 검사 대상이 소수 이외의 문자를 포함할 때 FALSE를 리턴한다. |
is_natural | NO | · 검사 대상이 자연수 이외의 문자를 포함할 때 FALSE를 리턴한다. ( 0, 1, 2, 3, ... 등인지 검사 ) |
is_natural_no_zero | NO | · 검사 대상이 1 이상의 자연수 이외의 문자를 포함할 때 FALSE를 리턴한다. ( 1, 2, 3 ... 등인지 검사 ) |
valid_email | NO | · 검사 대상이 유효한 이메일 주소가 아닐 때 FALSE를 리턴한다. |
valid_emails | NO | · 검사 대상이 콤마( , )로 구분된 이메일 주소일 경우에 사용 · 유효한 이메일 주소가 아닐 때 FALSE를 리턴한다. ( 여러개의 이메일을 한꺼번에 검사 ) |
valid_ip | NO | · 검사 대상이 유효한 IP 주소가 아닐 때 FALSE를 리턴한다. · IP포맷을 검증하기 위해 "ipv4" 또는 "ipv6"를 구별하는 파라미터를 받을 수 있다. |
codeIgniter/system/language/english/form_validation_lang.php |
defined('BASEPATH') OR exit('No direct script access allowed'); $lang['form_validation_required'] = "The {field} field is required."; $lang['form_validation_isset'] = "The {field} field must have a value."; $lang['form_validation_valid_email'] = "The {field} field must contain a valid email address."; $lang['form_validation_valid_emails'] = "The {field} field must contain all valid email addresses."; $lang['form_validation_valid_url'] = "The {field} field must contain a valid URL."; $lang['form_validation_valid_ip'] = "The {field} field must contain a valid IP."; $lang['form_validation_valid_base64'] = "The {field} field must contain a valid Base64 string."; $lang['form_validation_min_length'] = "The {field} field must be at least {param} characters in length."; $lang['form_validation_max_length'] = "The {field} field cannot exceed {param} characters in length."; $lang['form_validation_exact_length'] = "The {field} field must be exactly {param} characters in length."; $lang['form_validation_alpha'] = "The {field} field may only contain alphabetical characters."; $lang['form_validation_alpha_numeric'] = "The {field} field may only contain alpha-numeric characters."; $lang['form_validation_alpha_numeric_spaces'] = "The {field} field may only contain alpha-numeric characters and spaces."; $lang['form_validation_alpha_dash'] = "The {field} field may only contain alpha-numeric characters, underscores, and dashes."; $lang['form_validation_numeric'] = "The {field} field must contain only numbers."; $lang['form_validation_is_numeric'] = "The {field} field must contain only numeric characters."; $lang['form_validation_integer'] = "The {field} field must contain an integer."; $lang['form_validation_regex_match'] = "The {field} field is not in the correct format."; $lang['form_validation_matches'] = "The {field} field does not match the {param} field."; $lang['form_validation_differs'] = "The {field} field must differ from the {param} field."; $lang['form_validation_is_unique'] = "The {field} field must contain a unique value."; $lang['form_validation_is_natural'] = "The {field} field must only contain digits."; $lang['form_validation_is_natural_no_zero'] = "The {field} field must only contain digits and must be greater than zero."; $lang['form_validation_decimal'] = "The {field} field must contain a decimal number."; $lang['form_validation_less_than'] = "The {field} field must contain a number less than {param}."; $lang['form_validation_less_than_equal_to'] = "The {field} field must contain a number less than or equal to {param}."; $lang['form_validation_greater_than'] = "The {field} field must contain a number greater than {param}."; $lang['form_validation_greater_than_equal_to'] = "The {field} field must contain a number greater than or equal to {param}."; $lang['form_validation_error_message_not_set'] = "Unable to access an error message corresponding to your field name {field}."; $lang['form_validation_in_list'] = "The {field} field must be one of: {param}."; |
■ 입력 길이
규칙 |
파라미터 |
설명 |
min_length |
YES |
· 검사 대상의 길이가 파라미터 값보다 작을 때 FALSE를 리턴한다. |
max_length |
YES |
· 검사 대상의 길이가 파라미터 값보다 클 때 FALSE를 리턴한다. |
exact_length |
YES |
· 검사 대상의 길이가 파라미터 값과 다를 때 FALSE를 리턴한다. |
greater_than |
YES |
· 검사 대상이 지정된 값보다 작거나 숫자가 아닌경우 FALSE를 리턴한다. |
less_than |
YES |
· 검사 대상이 지정된 값보다 크거나 숫자가 아닌 경우 FALSE를 리턴한다. |
■ 폼 검증 예
<?php // @details 필드의 앞뒤 공백제거 | 필수 필드 | 5자 이상 | 12자 이하 | 필드에서 XSS 공격에 해당하는 내용 제거 $this->form_validation->set_rules( "username", "Username", "trim | required | min_length[5] | max_length[12] | xss_clean" ); // @details 필드의 앞뒤 공백 제거 | 필수 필드 | passconf 필드와 매칭되는지 체크 | MD5로 변환 $this->form_validation->set_rules( "password", "Password", "trim | required | matches[passconf] | md5" ); // @details 필드의 앞뒤 공백 제거 | 필수 필드 | 이메일 형식이 맞는지 체크 $this->form_validation->set_rules( "email", "Email", "trim | required | valid_email" ); ?> |
■ 폼 검증 에러메시지를 한글로 표시하기
codeIgniter/application/config/config.php |
<?php defined('BASEPATH') OR exit('No direct script access allowed'); // ~~ 이 하 생 략 ~~ /* |-------------------------------------------------------------------------- | Default Language |-------------------------------------------------------------------------- | | This determines which set of language files should be used. Make sure | there is an available translation if you intend to use something other | than english. | */ // $config['language'] = "english"; $config['language'] = "korea"; // ~~ 이 하 생 략 ~~ |
codeIgniter/system/language/korean/form_validation_lang.php |
defined('BASEPATH') OR exit('No direct script access allowed'); $lang['form_validation_required'] = "{field} 필드가 필요합니다."; $lang['form_validation_isset'] = "{field} 필드는 반드시 필요한 값입니다."; $lang['form_validation_valid_email'] = "{field} 필드는 유효한 이메일 주소를 반드시 포함해야 합니다."; $lang['form_validation_valid_emails'] = "{field} 필드는 모든 유효한 이메일 주소를 반드시 포함해야 합니다."; $lang['form_validation_valid_url'] = "{field} 필드는 유효한 URL을 포함해야 합니다."; $lang['form_validation_valid_ip'] = "{field} 필드는 유효한 IP를 포함해야 합니다."; $lang['form_validation_valid_base64'] = "{field} field must contain a valid Base64 string."; $lang['form_validation_min_length'] = "{field} 필드의 길이는 최소한 {param} 개의 문자를 넘어야 합니다."; $lang['form_validation_max_length'] = "{field} 필드의 길이는 최대 {param} 개의 문자를 넘어서는 안됩니다."; $lang['form_validation_exact_length'] = "{field} 필드의 길이는 정확히 {param} 개의 문자여야 합니다."; $lang['form_validation_alpha'] = "{field} 필드는 알파벳 문자만 포함할 수 있습니다."; $lang['form_validation_alpha_numeric'] = "{field} 필드는 알파벳 문자와 숫자만 포함할 수 있습니다."; $lang['form_validation_alpha_numeric_spaces'] = "{field} 필드는 알파벳 문자와 숫자, 그리고 공백만 포함할 수 있습니다."; $lang['form_validation_alpha_dash'] = "{field} 필드는 알파벳 문자와 숫자, 밑줄, 대시만 포함할 수 있습니다."; $lang['form_validation_numeric'] = "{field} 필드는 반드시 숫자만 포함할 수 있습니다."; $lang['form_validation_is_numeric'] = "{field} 필드는 반드시 숫자만 포함할 수 있습니다."; $lang['form_validation_integer'] = "{field} 필드는 반드시 정수만 포함할 수 있습니다."; $lang['form_validation_regex_match'] = "{field} 필드는 형식이 맞지 않습니다."; $lang['form_validation_matches'] = "{field} 필드가 {param} 필드와 일치하지 않습니다."; $lang['form_validation_differs'] = '{field} 필드는 {param} 필드와 값이 달라야만 합니다.'; $lang['form_validation_is_unique'] = "{field} 필드는 고유값을 포함해야 합니다."; $lang['form_validation_is_natural'] = "{field} 필드는 자연수만 포함할 수 있습니다."; $lang['form_validation_is_natural_no_zero'] = "{field} 필드는 0을 초과하는 자연수만 포함할 수 있습니다."; $lang['form_validation_decimal'] = "{field} 필드는 10진수여야 합니다."; $lang['form_validation_less_than'] = "{field} 필드는 {param} 필드보다 작은 값이어야 합니다."; $lang['form_validation_less_than_equal_to'] = "{field} 필드는 {param} 필드보다 작거나 같은 값이어야 합니다."; $lang['form_validation_greater_than'] = "{field} 필드는 {param} 필드보다 큰 숫자여야 합니다."; $lang['form_validation_greater_than_equal_to'] = "{field} 필드는 {param} 필드보다 크거나 같은 숫자여야 합니다."; $lang['form_validation_error_message_not_set'] = "{field} 필드는 오류 메세지와 일치하여 사용할 수 없습니다."; $lang['form_validation_in_list'] = "{field} 필드는 다음중 하나여야 합니다. : {param}"; |
'PHP > CodeIgniter' 카테고리의 다른 글
CI 서브 폴더 사용 (0) | 2021.02.17 |
---|---|
[CodeIgniter] _rmap을 이용한 화면 상단, 하단 레이어 고정 (0) | 2020.02.12 |
[CodeIgniter] 컨트롤러(Controllers) 사용방법 (0) | 2019.07.31 |
[CodeIgniter] DataBase 접속 설정하기 (0) | 2019.07.25 |
[CodeIgniter] 리눅스 환경에 코드이그나이터 세팅하기 (0) | 2019.07.23 |