개발/php

php5.X -> php 8.X 로 버전 변경하면서 생기는 오류 해결 방법

업데이트중  [오류 1]  Warning: Undefined array key변경전if ($_COOKIE["hd_pops_{$nw['nw_id']}"]) 변경후 if (isset($_COOKIE["hd_pops_{$nw['nw_id']}"]))   [오류 2]  Deprecated: Optional parameter $skin_dir declared before required parameter $bo_table is implicitly treated as a required parameter in /evread/www/lib/latest.lib.php on line 7 변경전function latest($skin_dir, $bo_table, $rows, $subject_len, $cache_time, ..

[php 에러] Call to undefined function create_function() 해결 방법

Uncaught Error: Call to undefined function create_function() 에러는 create_function() 가 php8.x부터는 지원하지 않아 발생하는 오류이다.  create_function 부분을 function을 다르게 정의해서 수정하면 된다. 수정전add_action( 'plugins_loaded', create_function( '', 'global $BBCode; $BBCode = new BBCode();' ) ) 수정 후function my_hacked_function(){ global $BBCode; $BBCode = new BBCode();}add_action( 'plugins_loaded', 'my_hacked_function'); ..

[php] explode 배열 최소값, 최대값 구하기 min(), max()

explode 배열 최소값, 최대값 구하기 보통 데이터가 array 배열로 되어있으면 min(), max()함수를 써서 바로 최소값 최대값을 구할 수 있다.$arr = array(1,2,3,4,5,6,7); $price1 = min($arr);$price2 = max($arr);  하지만 데이터가 이미 구분자로 합쳐서 들어가져있다면 (예 : 100000|1500000|200000|130000)배열로 변경한 후에 최소값, 최대값을 구할 수 있다.$str = $view['sp_price'];$sub_str = explode("|", $str);$new_str = array();foreach ( $sub_str as $row ) { $arr = explode( ',', $row );}echo min($a..

[php] DB 텍스트 특수문자 (<, >, &, ", ' 등) 인식 / html 변환

DB 데이터 자체에는 특수문자를 포함한 데이터가 잘 들어가지는데, 불러올 때 꺽쇠나 특수문자가 들어간 부분은 삭제되고 보여지는 오류가 있어 해결할 수 있는 방법을 알아보았다.를 태그로 인식하지 않게 하기 위해서는 htmlspecialchars() 함수를 써주면 된다. htmlspecialchar()PHP 4, PHP 5, PHP 7, PHP 8 사용가능 어떤 문자들은 HTML에서 특별한 정의를 지니는데 그 의미를 보존하려면 HTML엔티티로 표현해야한다. 이 함수는 이러한 변환을 거친 문자열을 반환해준다. CharacterReplacement& (앰퍼샌드)&amp;" (쌍따옴표)&quot;' (따옴표)&#039 (부등호)&it;> (부등호)&gt;  사용예시[예시코드1]$entity= "내용내용";echo..

[php] Undefined variable, Undefined index 에러 해결

php 에서 Undefined variable, Undefined index 에러메세지는 값(변수)이 제대로 정의되지 않아 발생하는 오류이다. 값이 없는 경우를 대비해서 아래처럼 미리 지정을 해주어야한다. [에러 해결방법] isset()를 사용한 변수 선언 에러메세지가 Undefined variable : XX in /web/home/, Undefined index : XX in /web/home/ 이런식으로 뒤에 어떤 변수에 대한 오류인지 뜰텐데, 해당 변수를 isset()함수를 사용하여 값을 정해줘야한다. 해당 변수에 대한 값이 있으면 해당값을 보여주고 아니면 공백으로 값을 전달할 수 있도록 해야한다. $value = isset($_POST['value']) ? $_POST['value'] : '';..

[php] 입력 필드 쪼개기 (체크박스 값 DB 저장)

체크박스 또는 여러개의 입력필드 내용을 한 필드안에 저장해서 사용해야하는 경우가 있다. 아래와 같이하면 필드 하나에 데이터를 저장해 관리할 수 있다. 글쓰기 페이지 코드 'wr_1'라는 필드를 쪼개서 사용할 것이다. 값을 받을 체크박스 name은 임의로 관리하기 편한 이름으로 지정하면 된다. (type1~type4) * wr_1 : 값을 저장할 필드 (type1~type4에서 받은 값을 wr_1에 한번에 저장한다) * type1~type4 : 임의로 값을 받을 필드 (DB에 해당 필드 없음) [코드 설명] - 상단의 $wr1 = explode("|", $write['wr_1']); 와 체크박스 태그 안의 checked 부분은 글쓰기 페이지를 수정 페이지로도 사용하는 경우에 필요하다. 해당 값이 있는 경우..

[그누보드/영카트] 아이코드 SMS 문자 여러명한테 보내기

그누보드 SMS 기본 코드 그누보드에서 SMS을 보내기 위해서는 기본적으로 아래 코드를 사용한다. 이 방식은 1개의 번호에서 1개로 보내는 방식이다. include_once(G5_LIB_PATH.'/icode.sms.lib.php'); $sql = " select cf_phone from sms5_config"; $row = sql_fetch($sql); $send_hp_mb = $row['cf_phone']; // 보내는 전화번호 $recv_hp_mb = "01000000000"; // 받는 전화번호 $send_hp = str_replace("-","",$send_hp_mb); // - 제거 $recv_hp = str_replace("-","",$recv_hp_mb); // - 제거 $send_numb..

[php] mysql 결과 카운트 / 행 개수 구하기

테이블의 데이터 총개수를 구하고 싶을 때 아래와 같이 함수를 사용해 개수를 구할 수 있다. [방법1] sql_num_rows() 함수 사용 테이블 행 개수는 sql_num_rows 함수로 간편하게 구할 수 있다. 쿼리문으로 데이터도 가져오면서 개수도 세야 할 때 유용하게 사용이 가능하다. sql_num_rows 함수는 리절트 셋(result set)의 총 결과 값 개수를 숫자로 반환한다. php5 이상부터는 mysqli_num_rows로도 사용 가능하다. $sql = " SELECT * FROM table ----- "; $result = sql_query($sql); //sql_query($db_conn, $selSql); $count = sql_num_rows($result); echo $count;..

[php] iconv 함수 문자 인코딩 / 한글 깨짐 현상 해결

서로 다른 곳에 있는 데이터를 가져오는 경우 캐릭터셋이 맞지 않으면 아래처럼 문자가 깨져보이게 된다. 이 경우에는 아래처럼 iconv 함수를 사용하여 문자 인코딩을 해주면 된다. iconv함수 iconv(기존 Charset, 변환할 Charset, 문자열); 나의 경우에는 웹 DB(UTF-8)에 있는 데이터를 엑셀로 출력하는 코드를 만들고 있었는데 한글문자열 부분만 아래처럼 변경해주면된다. 문자열을 UTF-8에서 UHC로 변경해주는 함수이다. iconv('UTF-8', 'UHC', 문자열); UHC란? UHC(또다른 이름으로는 CP949)는 확장완성형 (Unified Hangul Codeset)의 줄임말인데, EUC-KR에서 표현하지 못한 글자까지 인코딩의 영역을 확장한 캐릭터셋이라고 한다. EUC-KR..

[php] csv 파일 다운 한글 깨짐 해결 방법

온라인상에서 csv파일로 데이터를 다운받게하면 종종 한글이 깨져보일 때가 있다. 메모장으로 열어서 EUC-KR로 변경한 뒤 저장한다음 엑셀로 여는 방법도 있지만, 일일히 변경해서 열려면 번거롭다. 한글이 깨져보이지 않고 csv 파일을 다운 받을 수 있도록 아래 코드들을 추가하여 해결이 가능하다. 1) charset을 UTF-8로 설정한다. header('Content-type: text/csv; charset=utf-8'); 2) header아래쪽에 echo "\xEF\xBB\xBF"; 한줄(엔티안이라고 부른다고 한다)을 추가한다. echo "\xEF\xBB\xBF"; * 참고로 \xEF\xBB\xBF 이 문자는 UTF-8을 16진수로 표기한 것인데, 특정 문구를 넣어서 문서가 제대로된 캐릭터셋 값을 가..

[그누보드] 아이코드 SMS 문자보내기

글등록시, 회원가입 완료 시 등 여러 상황에서 활용 가능한 문자보내기 코드. 발신번호는 아이코드에서 미리 등록한 발신번호만 가능하고, 환경설정에서 문자 사용 체크되어있는지 꼭 확인 필요! (발신번호 사전등록하기 : http://www.icodekorea.com/callback_reg/number_register.php) $sms_contents = "문자내용"; // 핸드폰번호에서 숫자만 취한다 $receive_number = preg_replace("/[^0-9]/", "", $row['mb_hp']); // 수신자번호 $send_number = preg_replace("/[^0-9]/", "", $sms5['cf_phone']); // 발신자번호 if ($config['cf_sms_use'] == '..

[php] 에러메시지 나타내기 / php 오류 찾기

php 코드작업을 하다가 제대로 작동안할 때, 일부러 에러메세지를 출력하여 어디서 오류가 났는지 확인 할 수가 있다. 아래 코드를 파일 안에 넣어준다. 그러면 아래처럼 코드를 추가한 페이지에 에러메세지가 뜨게 된다. 이 에러메세지를 확인한 후, 알맞게 코드를 수정하면 된다. 아래 메세지의 경우에는 변수들이 제대로 정확히 정의되지 않아서 발생한 에러이다. 반대로 에러메세지가 뜨는 경우, 뜨지 않게 하려면 아래 코드를 추가하면 된다.

[php] Warning: Illegal string offset 'file' 오류수정

파일을 수정한 적도 없는데, 어느 날 갑자기 게시판 글 수정 페이지에서 파일 에러 문구가 떴다. Warning: Illegal string offset 'file' in /web/home/xxx/html/skin/board/basic/write.skin.php on line 156 Warning: Illegal string offset 'source' in /web/home/xxx/html/skin/board/basic/write.skin.php on line 157 Warning: Illegal string offset 'size' in /web/home/mymoodae/html/skin/board/basic/write.skin.php on line 157 글 신규 등록시에는 뜨지 않는 에러인데, 첨부..

[php] PHPExcel 엑셀로 데이터 다운받기

1. PHPExcel 다운받기 PHPExcel은 데이터를 엑셀로 다운받을 수 있게 해주는 라이브러리이다. https://github.com/PHPOffice/PHPExcel 홈페이지에서 다운받거나 아래 파일을 다운 받는다. 2. 다운로드 파일 코드 별도의 php파일을 만든 후, 파일 상단에 include_once('/PHPExcel.php');를 넣어 PHPExcel.php을 불러온다. include_once('/PHPExcel.php'); 그 다음으로 SQL문 등 데이터를 가져오는 구문들을 넣어주고 $rows[] = array(1열데이터,2열데이터, 3열데이터, 4열데이터, 5열데이터); 이런식으로 array()안에 데이터를 콤마로 구분하여 넣어준다. 나는 세개의 시트로 나누어서 다운받게 할 예정이라 ..