728x90
반응형

IT/PHP | CI 12

[PHP | CI] Spreadsheet 엑셀 라이브러리

1. phpspreadsheet 설치composer require phpoffice/phpspreadsheet 2. 라이브러리 추가(코드이그나이터)- apllication/libraries에 Spreadsheet.php를 추가 (그대로 복붙!)if (!defined('BASEPATH')) exit('No direct script access allowed');// Composer autoload 포함require_once APPPATH . '../vendor/autoload.php';use PhpOffice\PhpSpreadsheet\IOFactory;use PhpOffice\PhpSpreadsheet\Spreadsheet as PhpSpreadsheetObj; // 이름 충돌 방지use PhpOffic..

IT/PHP | CI 2025.06.30

[PHP] 알면 좋은 배열 함수 array_map, array_filter, array_merge , array_diff, array_column, array_unique

array_map() 배열의 각 요소에 사용자 정의 함수를 적용하여 새로운 배열을 반환$numbers = [1, 2, 3, 4];$squared = array_map(function($n) { return $n * $n; }, $numbers);print_r($squared);결과Array( [0] => 1 [1] => 4 [2] => 9 [3] => 16)  array_filter () 배열에서 조건을 만족하는 값들만 필터링하여 새로운 배열을 반환$numbers = [1, 2, 3, 4, 5];$even_numbers = array_filter($numbers, function($n) { return $n % 2 == 0; });print_r($even_numbers);결과Arra..

IT/PHP | CI 2025.02.27

[PHP] $_SERVER['REMOTE_ADDR']의 함정: 실제 사용자 IP를 정확히 파악하는 기술

$_SERVER["REMOTE_ADDR"]를 사용하여 사용자의 IP 주소를 얻는 것은 일반적으로 많이 사용되는 방법입니다. 하지만 이 방법에는 몇 가지 주의사항과 잠재적인 문제가 있을 수 있습니다. 문제점 1. 프록시 서버 또는 VPN 사용일반적으로 $_SERVER["REMOTE_ADDR"]는 사용자의 실제 IP 주소를 반환하지만, 사용자가 프록시 서버나 VPN을 사용하는 경우 이 값은 사용자의 실제 IP 주소가 아닌 프록시 서버나 VPN의 IP 주소를 반환할 수 있습니다. 이로 인해 실제 사용자의 위치를 파악하기 어려울 수 있습니다.  2. 로드 밸런서 또는 리버스 프록시웹 애플리케이션이 로드 밸런서나 리버스 프록시 뒤에 있는 경우 $_SERVER["REMOTE_ADDR"]는 종종 로드 밸런서나 프록시..

IT/PHP | CI 2024.09.10

[PHP] 쿼리 반복문 없이 효율적으로 실행시키기

데이터가 아래처럼 있다고 가정합니다.반복문으로 쿼리를 실행하지 않고 일괄 업데이트 시키려고 합니다.$data = [ ['id' => 1, 'name' => 'John', 'age' => 28], ['id' => 2, 'name' => 'Jane', 'age' => 24], ['id' => 3, 'name' => 'Paul', 'age' => 32], ['id' => 4, 'name' => 'Mark', 'age' => 40],];  소스 - update $ids = array_column($data, 'id');$cases = [];foreach ($data as $row) { $cases[] = "WHEN {$row['id']} THEN {$row['age']}";}$case..

IT/PHP | CI 2024.08.09

[PHP] 객체형 배열 값이 존재하는지 확인하는 법

객체형 배열에서 값이 존재하는지 찾고 싶을 때  내가 보려고 만든 소스 1, 'filter_name' => '칼라' 'reg_date' => '2024-07-22 16:21:10' ], [ 'seq' => 2, 'filter_name' => '사이즈', 'reg_date' => '2024-07-22 16:21:10' ]];// 특정 컬럼의 값이 배열에 있는지 확인$column_to_check = 'seq';$value_to_find = 5;if (value_exists_in_array($column_to_check, $value_to_find, $array)) { echo "$column_to_check 값 $value_..

IT/PHP | CI 2024.07.23

[PHP] 포함된 문자 찾기 str_contains(), str_starts_with(), str_ends_with() 및 strpos()

PHP8 버전에서 추가된 몇가지 함수가 있습니다. 그 중에서 특정 단어나 문자가 포함되어 있는 함수들을 소개해볼까 합니다.1. str_contains()설명: 문자열이 특정 서브 문자열을 포함하는지 확인합니다.사용 예시$string = "Hello, World!";if (str_contains($string, "World")) { echo "Found!";}// 출력: Found!## PHP8미만이라면 추가if (!function_exists('str_contains')) { function str_contains($haystack = '', $needle = '') { return $needle !== '' && mb_strpos($haystack, $needle) !== fal..

IT/PHP | CI 2024.06.22

[PHP/CodeIgniter] ZOOM API 연동하기 (sever-to-sever OAuth) - 2

저는 코드이그나이터로 진행하고 헬퍼를 통해서 만들고 진행해봤습니다. 코드이그나이터를 사용하지 않거나 혹은 다른 프레임워크를 쓰더라도 일반 함수 파일을 만든다고 생각하셔도 됩니다. 토큰 발급 ZOOM API 작업을 수행하기 위해서는 토큰이 먼저 필요합니다. 토큰은 1시간마다 만료되기 때문에 만료되면 새로 발급을 받아줘야 합니다. 1시간마다 스케줄링을 돌리거나 에러가 날 경우 try-catch문을 통해서 새로 발급받고 진행하는 방법이 있으나 해당 부분은 생략하겠습니다. zoom_test_helper.php defined('BASEPATH') OR exit('No direct script access allowed'); define('JOOM_ROOT', dirname(__FILE__) . '/zoom'); ..

IT/PHP | CI 2023.10.13

[PHP/CodeIgniter] ZOOM API 연동하기 (sever-to-sever OAuth) - 1

코로나가 시작되면서 비대면, 온라인 형식이 많아졌는데 그 중 많이 사용하는 것중 하나가 ZOOM입니다. ZOOM은 회의 혹은 실시간 강의용으로 보통 많이 사용되고 생각보다 많은 기능들이 있습니다. 앱 생성 먼저 https://zoom.us/ 에서 회원가입을 합니다. 마켓플레이스 https://marketplace.zoom.us/develop/create로 이동하여 앱 생성을 해줍니다. 앱 이름을 편한대로 만들어 주시고, 간단한 설명 및 연락처 정보등을 입력하여 정보를 추가합니다. 후에 계정아이디와 클라이언트 DI, 시크릿 코드를 받게됩니다. 앱 인증 확인하기 아래 링크로 이동하여 ID와 클라이언트 값이 올바르게 발급되었는지 확인합니다. https://reqbin.com/curl 예제) curl -X PO..

IT/PHP | CI 2023.09.27

[PHP] strpos함수로 특정 키워드(문자열) 포함 여부 체크하기

설명 strpos(string $haystack, string $needle, int $offset = 0): int|false (PHP 4, PHP 5, PHP 7, PHP 8) strpos — 문자열에서 하위 문자열이 처음 나타나는 위치를 찾음 출처 PHP: strpos - Manual A pair of functions to replace every nth occurrence of a string with another string, starting at any position in the haystack. The first works on a string and the second works on a single-level array of strings, treating it as a single..

IT/PHP | CI 2023.07.04
728x90
반응형