반응형

WEB언어/PHP 38

[php] Date Format 일자/날짜 포멧 변경하기 총정리 strtotime() , DateTime::createFromFormat()

php 프로그램을 하다 보면, 날짜 포맷을 변경은 너무도 많이 쓰이는 기능 중에 하나입니다. 각 나라마다 날짜의 표현 형식이 다릅니다. 미국은 "월/일/년도", 한국은 "년도. 월. 일." 형식을 많이 사용합니다. 요즘은 html5 속성인 date를 통해서 기본 일자 입력 폼을 지원함에 value값을 세계 표준형으로 변경해서 넘겨줘야 하는 일도 있습니다. 표시: 10/30/2019 => 넘겨주는 값: 2019-10-30로 변경해서 주는 부분 특히, 미국의 경우 각 주(State)마다 시간이 다른 곳이 발생하면서, 시간 개념의 php 함수들을 많이 사용합니다. 지역별 LA시간, NewYork시간를 받아서 처리해야 할 때가 있습니다. 이런 Date에 대한 내용중에 가장 많이 사용하는 것들을 정리해 보려고 합..

WEB언어/PHP 2019.10.31

[PHP] 소수점 이하 2 자리까지 표시하기 (예: $ 1.10 )

미국 화폐는 센트(0.01)가 최소 기본 단위로, 소수점 이하 2자리까지 표시가 되어야 하는 경우가 많습니다. 소수점 2자리 표시 처리를 위한 방법과 예제 1) sprintf() 함수를 이용하는 방법 2) (추천) number_format를 이용한 방법 520.00 참고: [php] 소수점 이하 2자리까지 표시 php - 확인 - 파이썬 소수점 자리수 버림 code.i-harness.com 2) (추천) number_format 를 이용한 방법 .75를 0.75로 변경하는 포멧 방식 number_format ('.75', 2); //결과는 0.75가 출력됩니다. number_format(float $number [,int $decimals=0]) : string 또는 number_format(float ..

WEB언어/PHP 2019.10.23

PhpStome UI 다크모드 사용하기 (JetBrain제품들 다 지원- Darcula)

요즘 iPhone의 iOS 13에서부터 Display에 Dark 모드가 추가되었습니다. macOS Mojave, Windows 10이 Dark 모드를 지원을 하기 시작했다. 요즘 OS 기기들이 다들 Dark 모드를 지원하는 트렌드가 되어가고 있네요 심지어, IOS에 instagram 앱도 Dark 모드가 지원하는 것을 보게 되었습니다. 제가 가장 많이 사용하는 PhpStome도 Dark 모드가 있었는데 라는 생각이 들어서 찾아보니. 예전에는 PhpStome만 다크 모드라서, 어색했는데. 이제는 대부분의 OS와 많은 SW가 Dark모드 지원으로 어색하지가 않네요. Darcula라는 UI Theme가 NetBeans에도 있네요.

WEB언어/PHP 2019.10.10

[PHP] break / return / exit 차이점

$arr = array('one', 'two', 'three', 'four', 'stop', 'five'); foreach ($arr as $val) { if ($val == 'stop') { break; /* You could also write 'break 1;' here. */ } echo "$val \n"; } break = 루프 탈출 - for, foreach, while 등 여러 번 반복되는 루프의 경우에 해당됨 - 루프 이후에 등장하는 코드를 계속 실행함 - if문은 반복문이 아니라 조건 충족시 1번만 실행되는 코드이므로 해당없음 return = 함수 탈출 또는 인클루드 탈출 - 함수 안에서 쓰면 함수 실행을 종료하고, 그 함수를 호출했던 지점으로 돌아가서 계속 실행함 - 함수 밖에서 쓰면 ..

WEB언어/PHP 2019.07.31

[PHP] 하나 은행 환율 API를 통한 JSON

KEB 하나은행의 환율 API을 값을 기반으로 PHP 화면을 만들어 보았습니다.jQuery Mobile에 추가하기 위해서, PHP버전용으로 작업을 했습니다. 아래의 jQuery용에서 Onload등 jQuery Mobile 환경에서 처리가 안되는 부분들이 있어서, PHP로 변경 작업을 진행했답니다. PHP의 curl_init()을 이용한 환율변환 PHP버전 소스 function get($url){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); if(curl_errno($ch)){ throw new Exception(curl_error($ch)); } curl_close($ch); ..

WEB언어/PHP 2018.12.06

PHP7에서 mysql_connect 를 mysqli_connect 로 사용

PHP7에서 mysql_connect를 사용할 수 없어서 변경을 해줘야 합니다. PHP7환경에서 mysql_connect() 를 사용하려면, mysqli_connect(), PDO::__construct()를 사용해야 합니다. 추가로 변경해야 하는 것들 mysql_connect will be replaced by mysqli_connect mysql_error will be replaced by mysqli_error and/or mysqli_connect_error, depending on the context mysql_query will be replaced by mysqli_query For instance: with mysql, you have to use the mysql_select_db o..

WEB언어/PHP 2018.12.05

PHP 현재 자신의 파일명 가져오기 basename($_SERVER['PHP_SELF']);

현재 자신의 파일명을 가져올때 사용되는 함수 You can use basename() and $_SERVER['PHP_SELF'] to get current page file nameecho basename($_SERVER['PHP_SELF']); /* Returns The Current PHP File Name */ 출처: https://stackoverflow.com/questions/13032930/how-to-get-current-php-page-name (주의) $_SERVER['PHP_SELF'] 함수는 요청되는 URL의 기준으로 가져오기에 변조 될 수 있음을 주의해야 합니다.

WEB언어/PHP 2018.05.15

php 이미지 자르기(crop) 만들기

PHP 에서, 이미지 자르기를 오픈 소스를 찾던중에 괜찮아서 남겨둠.다음에 작업후에, 더 상세한 내용은 남겨둬야 할듯 싶다. JCrop Jcrop creates an interface to crop an image. However, actually creating a new, cropped image file is obviously beyond the scope of a client-side plugin. It may also be the most challenging part of implementing such a process in your web application (now that you've found Jcrop). Jcrop Home • Download • Manual • Examples ..

WEB언어/PHP 2018.05.09

[펌] PHP 7.0에서 새로 나온 NULL 병합 연산자 - ??

PHP7 에서 새롭게 나온 연산자에 대한 글을 가져와습니다. 출처: https://mytory.net/2017/11/13/php-7.0-null-coalescing-operator.html 경우에 따라 3항 연산자보다 편하게 사용할 수 있는 ?? 연산자를 소개한다. php7의 여러 기능중 정말 쏠쏠하게 써 먹는 기능이 ?? 연산자(operator)다. 아래처럼 활용한다.$user = $_GET['user'] ?? ''; $name = $name ?? ''; $is_print = $config['is_print'] ?? false; 좀더 자세히전에는 $_GET['user'] 같은 것을 받을 때 이게 세팅돼 있는지 검사부터 해야 했다. 아래처럼 말이다.$user = ''; if (!empty($_GET['u..

WEB언어/PHP 2018.04.14

PHP의 Composer 한글 메뉴얼 + PHP개발자 글

개인적으로 PHP의 Composer를 사용해 본적은 없지만, 관심이 있어 기록해본다. Composer ?composer 는 php 를 개발하는데 있어서 패키지간의 의존성을 관리하는 의존성 관리자입니다. node.js 의 npm, ruby의 bundle과 같은 역할을 수행합니다. php를 개발하는데 있어서 다양한 패키지들을 설치하고 의존성을 관리하며 Autoload를 사용하는데 Composer가 꼭 필요하다고 할 수 있습니다.PHP 5.3.2+ 이상이면 Composer가 구동될 수 있습니다.출처: http://xpressengine.github.io/Composer-korean-docs/ ======================검색중에 발견되 포스트, 제목처럼 놓치지 말아야 할 것들인 것 같다. 당신이 P..

WEB언어/PHP 2018.01.05

[PHP]문자열 필터링 함수 eregi 등의 취약점

PHP 5.3+의 환경의 eregi를 통해서 문자열 검증을 하는 경우가 잘 못 처리되는 경우가 있다. (POSIX Regex 필터)그중에도, HTTP(GET)요청에 %00 (null)을 입력으로 입력하면, 해당 정보를 제대로 처리 못하는 경우가 있다. test.php 해당 환경에서는 오류없음PHP5.3+환경에서 필터가 비정상적인 것을 알 수 있다.다음과 같은 PHP 5.3+ 환경에서는 POSIX Regex함수들을 PCRE Regex로 변경하는 것이 필요하다. 아래는 대체 함수들 리스트 입니다. Function replacements POSIX PCRE ereg_replace() preg_replace() ereg() preg_match() eregi_replace() preg_replace() eregi..

WEB언어/PHP 2017.12.19

gmail 계정으로 이메일 보내기 + AWS에서 PHP를 이용한 SMTP를 통해 이메일 전송

Gmail 계정을 통해서, 이메일 보내기 // Pear Mail Library require_once "Mail.php"; $from = ''; $to = ''; $subject = 'Hi!'; $body = "Hi,\n\nHow are you?"; $headers = array( 'From' => $from, 'To' => $to, 'Subject' => $subject ); $smtp = Mail::factory('smtp', array( 'host' => 'ssl://smtp.gmail.com', 'port' => '465', 'auth' => true, 'username' => 'johndoe@gmail.com', 'password' => 'passwordxxx' )); $mail = $smtp-..

WEB언어/PHP 2017.12.16

[PHP] 접속자 IP 알아내기 함수.

PHP에서 접속자의 IP를 찾는 함수 입니다.IP주소를 얻는 가장 쉬운 방법은 $_SERVER['REMOTE_ADDR'] or $_SERVER['REMOTE_HOST'] 사용입니다. 그러나, 때로는 접속자의 IP가 올바르지 않게 얻어질 수 있기에,다른 변수를 사용해서 IP주소를 가져오도록 합니다. 아래의 2가지 방법은 결과는 동일합니다. getenv() is used to get the value of an environment variable in PHP.// Function to get the client IP address function get_client_ip() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP..

WEB언어/PHP 2017.12.12

PHP 객체지향 방식

초기 PHP가 생겼을때는 PHP에는 Object 개념이 없었지만, 요즘은 PHP의 Object개념을 많이들 사용합니다. PHP의 객체 지향 방식 내용class Property {public $name;public $price;public $address_primary;public $address_secondary;public $city;public $state;public $zip; public function setName($foo){//$name = $foo;//Not access$this->name = '['.$foo.']';// OK}public function getName() {return $this->name;} public function setZip($foo){$this->zip = $f..

WEB언어/PHP 2017.11.30

[PHP] HTTP와 HTTPS에 따라 URL변경하기

PHP에서 http와 https를 확인하고 넘겨주는 방법. (간단한 소스이지만, 유용합니다.)$actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]"; 다음과 같이 실행하면,현재 https://가 지원하는 서버라면, "https://도메인이름" 넘기고, 지원하지 않는다면 "http://도메인이름"으로 넘기게 되겠죠.실질적으로 넘겨주는 부분은 이렇게 만들어 주면 되겠죠. header('Location:'.$actual_link);

WEB언어/PHP 2017.10.26

[PHP] Notice: Undefined variable 초기값이 없을때 나는 오류

PHP 에러중에 "Undefined variable" 나타날때, 해당 값의 변수의 초기값이 없을때, 나타난다. 해당 방법을 없애는 것은 경고 메시지를 보이지 않게 하던지. 해당 변수값의 초기값을 주면 해결된다. 또는 내가 무심결에 소스에 Error보기 설정이 되어 있을때도 에러나 날수 있습니다. // we will do our own error handling error_reporting(E_ALL); ini_set("display_errors", 1); 참고로 저의 경우 retune $tmp; 을 넘길때, $tmp값을 선언하지 않았을때, 에러가 났다. $tmp가 array타입이라서 $tmp = []; 로 선언해 줬습니다. 아래는 에러에 대한 설명들이 잘 나와 있어서 배껴둡니다. 출처: https://s..

WEB언어/PHP 2017.10.25

(따옴표) Single쿼텐션 없애기 / 엔터 없애기 / GET방식 & 와 + 전송하기

Singe quote를 없애는 PHP함수는 addslashes를 많이 사용한다. Ruby's 를 Ruby\'s 로 변환시켜준다. string addslashes ( string $str )Returns a string with backslashes before characters that need to be escaped. These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).참고: http://php.net/manual/en/function.addslashes.phphttp://php.net/manual/en/function.mysql-real-escape-string.php 또하나 Ja..

WEB언어/PHP 2017.10.13

PHP mysql_real_escape_string사용하지 않는 방법

PHP에서는 SLQ Injection을 위해서, mysql_real_escape_string를 많이 사용했다.그러나, PHP 5.5부터 사용이 규제 되었고, PHP 7.0에서는 사라져 버렸다. 해당 부분을 처리하기 위한 방법Its pretty simple really:$db = new PDO($dsn, $user, $password); $stmt = $db->prepare('INSERT INTO table1 VALUES(?,?)'); $stmt->execute(array($keyword, $guideline)); $stmt->close(); $stmt2 = $db->prepare('SELECT * FROM table2 WHERE keyword= ?'); $stmt->execute(array($keywor..

WEB언어/PHP 2017.10.13

[PHP] addslashes(), stripslashes() 그리고, get_magic_quotes_gpc()

addslashes() 함수와 그와 반대되는 stripslashes() 함수 DB 작업을 하기 위해서 쿼리를 작성하게 되는데, 이때 DB 시스템은 작은따옴표 ' 와 큰따옴표 " 그리고 백슬래시 / 그리고, NULL byte를 문자열을 구분하는 등의 기준으로 이용하게 됩니다. 그런데, 하나의 문자열 안에 따옴표가 들어가 있게 되면, 예상치 못하게 오류가 발생하게 됩니다. 그래서, 문자열을 데이터베이스에 저장할 수 있는 포맷으로 변화시켜줄 필요가 있습니다. 예를 들면, I'm a boy를 문자열로 지정해서 'I'm a boy' 이렇게 쿼리로 전송되게 되면, I 뒤의 작은따옴표 때문에 오류가 발생하게 됩니다. 그래서, 내부에 위치하게 될 따옴표들을 기준을 가지고 다르게 표현을 해 줘야합니다. 흔히들 이스케이프..

WEB언어/PHP 2017.07.19

[php] Last Week, This Week, 지난주 다음주 알기, 지난주 일요일

PHP의 Last Week, This Week 알아내기 [Last Week] $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); echo $start_week.' '.$end_week; [This Week] $previous_week = strtotime("this week +1 day"); 예: 오늘이 2017-06-16 이라면, ..

WEB언어/PHP 2017.06.17

PHP 5.x 에서 PHP 7으로 업그레이드시 작업

PHP 5.x 에서 PHP 7으로 Migration(Upgrade) 작업해야 할 사항들. PHP 7이 속도 향상의 크게 영향을 주기에, 사이트에 소스 Upgrade도 한번 쯤 생각하게 만듭니다.해당 부분은 PHP7으로 업그레이드 할때, 변경해야 하는 사항들 메뉴얼에 나온 부분들 입니다. Migrating from PHP 5.6.x to PHP 7.0.xhttp://php.net/manual/en/migration70.php Migrating from PHP 5.6.x to PHP 7.0.x ¶Table of Contents ¶Backward incompatible changesNew featuresDeprecated features in PHP 7.0.xChanged functionsNew functio..

WEB언어/PHP 2017.06.15

PHP 다음달 구하기 mktime(0,0,0,date("m")+1,15,date("Y")))

다음달 / 이전달 구하기 아래의 해당 함수는 월에 대한 이슈가 발생 합니다. 1월29일부터 1월30일까지는 Feb(3월)로 넘어가는 오류가 발생 (ex:2017년1월30일=>2017년3월2일로 나옵니다.) 아래의 strtotime()함수보다는 아래방식이 더 안정적인 것 같습니다. date("Y년 m월 d일",mktime(0,0,0,date("m")-1,15,date("Y"))) ; 이전달 15일 date("Y년 m월 d일",mktime(0,0,0,date("m")+1,15,date("Y"))) ; 다음달 15일 PHP date()함수를 이용한 다음달 구하기 입니다 . (해당 방식은 1월과 3월에 오류가 있습니다. +31 days, Feb뛰어 넘네요.) strtotime을 이용한 방법 date('m', s..

WEB언어/PHP 2016.08.01

(PHP) HTML tag 제거 + 특정 HTML tag 허가(Allow)

[ 특정 HTML 제거 ]특정 HTML 태그들이 간혹 문제를 일으킬 때가 있다.예를 들어, "태그와 같은 경우 특히 문제를 발생 시키는 경우가 많다. RegEx 을 통한 제거를 해주시면 됩니다.$html = 'Approval form test tag Remove (NEW LINE) carriage return line feed'; //$pattern = "//i";$pattern2 = "//i";$html = preg_replace($pattern,"",$html);$html = preg_replace($pattern2,"",$html); print "$html\n"; 결과:Approval form test tag Remove (NEW LINE) carriage return line feed 참고: Us..

WEB언어/PHP 2016.02.12
1 2
반응형