[PHP] 텔레그램봇으로 정보 수신 받기

PHP
가공된 정보를 텔레그램으로 수진하는것입니다. 네이버 LINE이나 kakaotalk도 있지만 해당 메신저들은 공개된 API가 없어서 우회해서 받아야 하기 때문에 귀찮은 작업이 동반되지만 텔레그램은 봇을 통해서 제가 직접 메세지를 작성해서 보내면은 제가 수진을 할 수도 있습니다. 제가 활용하는것은 RSS수집후 필요한 정보 알림과, 서버의 정보를 일정시간마다 수신하는 방법으로 쓰고 있습니다. 이 방법외에도 봇을 통해서 계속 메세지를 받을 수 있습니다. 뭐 거창한것도 아니며, 제가 PHP로 사용하는 소스 코드입니다.class를 흉내내서 만들어 둔것입니다. ※ PHP (cli)에서 작동합니다. <?php /* https://telegram.me/botfather 접속하여 봇아빠를 채팅창에 호출 하고 다음 커맨드를 입력 ------------------------------- 봇이름 /newbot 봇실제아이디(끝에 bot을 붙여준다) /token /setabouttext 봇정보 안내문구 /setdescription 접속문구 ------------------------------- token이 바로 api */ class telegram { // 기본환경설정 private $tokenKey = '토큰키'; private $baseUrl = 'https://api.telegram.org/bot'; private $sendBool = false; private $messageChatId = ''; private $messageText = ''; /** * @brief * **/ public function…
Read More
[PHP] 카페 게시물 알림 SMS로 받기

[PHP] 카페 게시물 알림 SMS로 받기

PHP
우리나라 굴지의 포털이 네이버 카페의 새글을 알림은 분명히 네이버 앱으로도 받아 볼 수 있습니다. 하지만 ID라는것이 여러사람이 공용으로 사용하기에도 뭐한부분입니다. 카페 입장에서는 대표 ID가 있는데 별도로 관리자 설정을 해주기 위해서는 부담 스러운 부분도 존재하고, 작업사업자이다 보니 몇개월 있다가 나가면은 또 다시 카페의 최고관리자에게 ID삭제 요청등의 귀찮은 일도 생기기 바련입니다. 그외에도 게시물을 자신이 등록할 수도 있는데, 앱을 통해서 하다보면은 앱 알림 인원에게 모두 날아가게 됩니다. 카페에 가입한게 1~2개도 아니고 무수히 날라오기 시작하면은 앱을 구동하고 봐야 하고 귀찮은것도 있다고 생각을 합니다. 제가 이런것을 만들어 달라고 하신분은 단순하게 게시물을 수집하고 언제 등록되었는지 바로 알고 싶다는 정말 단순한 이유에서 였습니다. 아래 사진은 그냥 카페의 일반적인 샘플 사진입니다. (공개된것을 사용할 수가 없어서요) 이렇게 게시판 형태로 되어 있는 부분을 제목을 가지고 개인적으로 SMS를 받기 원하시는 부분이었습니다. 물론 분석 작업과 파싱 작업은 이전에 많이 하여서 약간의 변형과…
Read More

[PHP] curl을 이용한 이미지 다운로드

PHP
curl를 이용해서 웹 이미지 다운로드 이번에는 전체 소스가 없습니다.초기에 만들고 계속 수정에 수정을 거듭하다보니 저 혼자만 사용할 수 있는 조금 난해한 코드들이 넘쳐나게 되 간한히 함수랑 사용방법의 코드만 올려 놓습니다. public function getImage($url) { curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 인증서 체크같은데 true 시 안되는 경우가 많다. curl_setopt($ch, CURLOPT_POST, false); // Post Get 접속 여부 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 60); // TimeOut 값 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //http 응답코드가 302일때 redirect_url 로 따라감 curl_setopt($ch, CURLOPT_MAXREDIRS, 5); //if http server gives redirection responce curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 결과값을 받을것인지 $data = curl_exec($this->ch); $return = base64_encode($data); return $return; } 위에 함수를 사용하면은 웹에서 이미지를 가져 올 수 있습니다.이미지의 접속가능한 URL이 있어야 접속이 됩니다. $curlDataImg = new curlData(); $returnImgBase64 = $curlDataImg->getImage($urlImg); $imageSource = base64_decode( $returnImgBase64 ); 위에 코드를 이용해서 이미지의 바이너리를 확인해…
Read More
[PHP] skechers.com 스크래핑 웹페이지 소스 얻기

[PHP] skechers.com 스크래핑 웹페이지 소스 얻기

CSharp, PHP
# 요구사항 1. 전체 상품을 모두 가져와야 한다. 2. 각 상품의 모든 보여주는 이미즈를 모두 저장해야 한다. 3. 각 상품의 고유한 정보는 정리해서 모두 등록한다. # 작업환경 Visual Stuido 2013 C# WinForm, MySQL PHP 7.0.4 (cli) 초기 작업은 C#으로 이줘졌지만은 이후 작업은 Local에서 순수 PHP (cli)만드로 작업이 되었습니다. 1. 각 상품의 대분류에 따라서 이미지 저장을 달리함. 일단 영문자, - 외에는 모두 제거 하여서 Web상에서 사용할 경우에도 주소를 획일한 시켜드림 각 이미지 파일은 원본 사이트의 순수 이름 그대로 인용하여서 처리 하였습니다. 2. 각 상품상세정보 페이지에서 가져온 원본 소스와 해당 정보를 추리하는 JSON값을 추출하여서 별도로 분리하여서, 웹스크래핑 당시의 전체 웹페이지를 눈으로 확인 할 수 있습니다. 아울러 JSON으로 별도로 저장해서 상품상세페이지에서 정보를 한눈에 볼 수 있도록 파일을 만들어 드렸습니다. 아래의 캡쳐 화면은 원본 사이트의 순서 소스를 그대로 저정한 화면이기때문에 바로 로컬에서 웹페지를 확인해…
Read More

[PHP] fopen 옵션 정리

PHP
[PHP] fopen 옵션 정리 기본적으로 fopne 옵션을 사용할때 사용하는 옵션을 정리해 놓은것입니다.간단하게 쓰이지만 매번 잊어 먹어서 한번 정리를 해 놓습니다. "r" : 읽기 전용 모드. 파일이 없으면 NULL return."w" :쓰기 전용 모드. 파일이 없으면 생성되고 있으면 내용이 없어진다."a" : append모드. 파일이 없으면 생성. 이미 존재하는 파일 끝부분에 file pointer가 위치하게 되며 이 위치부터 뒷쪽으로만 write가능. 읽기는 불가능. fseek등으로 이 부분보다 앞으로 file pointer를 이동시키면 어떻게 될까 ? 아래 내용으로 봐서는 fseek등으로 file pointer를 이동하여도 이와 상관없이 파일 끝부분에 write가 되는 것으로 생각됨. "r+" : 읽고 쓰기 모드, 파일이 없으면 NULL return."w+" : 읽고 쓰기 모드 단, 파일이 없으면 만들고 있으면 기존 내용을 지움. write를 먼저 한 후 동일 파일 포인터로 읽기 수행이 필요한 경우 사용. 보통은 읽기 전용, 혹은 쓰기 전용으로 fopen하므로 w+가 필요한 일은 별로 없을 듯."a+" : append모드,…
Read More

[PHP] HTML문자중 특정 문자 치환하기

PHP
[PHP] HTML문자중 특정 문자 삭제 하기 // 유니코드 삭제 처리 function getDeleteUnicodeStr($str) { $str = preg_replace('@\x{0007}@u', ' ', $str); $str = preg_replace('@\x{0008}@u', ' ', $str); $str = preg_replace('@\x{000E}@u', ' ', $str); $str = preg_replace('/​/i', ' ', $str); return $str; }
Read More
[PHP] SHOEZOO 사이트 스크래핑

[PHP] SHOEZOO 사이트 스크래핑

PHP
[PHP] SHOEZOO 사이트 스크래핑 해당 사이트의 정보를 스크래핑 하여서 가공을 하는 작업입니다. 보시는것처럼 다양한 메뉴가 존재 하지만 원하는 정보를 가져오기 위해서는 각 링크의 속성이나 HTML 태그를 분석해야 합니다. 이번에는 간단하게 할 수 없는것이 브랜드와 사이즈도 있고 사용자가 선택할수 있는 정보가 많습니다. 일단은 목록페이지에서는 각 제품의 링크를 획득한 후에 다시 한번더 제품 상세 페이지에 들어가서 정보를 정확하게 수집을 해야 합니다. 제품 상세페이지를 보시면은 이미지도 5장정도 되고, 사이트를 선택할 수도 있어서 해당 옵션을 모두 가져와서 그에 맞게 각 데이터를 가공해야 합니다. 이 작업이 보기보다 상당히 시간이 소요 되며, 해당 작업을 위해서는 DB를 이용하여서 중복이나 동일이름이지만은 브랜드나 옵션이 다른것을 구분해서 작업을 해야 합니다. 스크래핑을 원하시는분은 공지사항을 참조해주시기 바랍니다.
Read More

[PHP] 티스토리 스킨 텍스트큐브에 적용하기

PHP
[PHP] 티스토리 스킨 텍스트큐브에 적용하기 티스토리용 스킨이 마음에 드는것이 있어서 가져와서 적용을해보니 되지 않는 부분이 너무 많았습니다.스킨파일이 HTML 파일에 대해서는 적절하게 수정을 하면은 사용을 할 수 있지만은 치환자에 대해서는 어떻게 손쓸 방법이 없어서... 결국은 PHP 파일을 수정하게 되었습니다. 해당위치에 파일의 원본을 최대한 보전하면서, 스킨의 기능을 이용하기 위해서 수정한것입니다.그래서인지 속도는 다소 느려지는 편입니다. 파일 위치 : interface/common/blog/list.php <!--?php /// Copyright (c) 2004-2016, Needlworks / Tatter Network Foundation /// All rights reserved. Licensed under the GPL. /// See the GNU General Public License for more details. (/documents/LICENSE, /documents/COPYRIGHT) if (!empty($listView)) { dress('list', $listView, $view); } else if (isset($list) && isset($skin)) { // 블로그 ID 가져오기 $blog_id = $context->getProperty('blog.id'); $listView = $skin->list; $itemsView = ''; foreach ($list['items'] as $item) { // 각 글의 페이지 정보를 획득 하도록 함. list($entries, $paging) = getEntryWithPaging($blogid, $item['id']);…
Read More

[PHP] cafe24 SMS 전송을 class로 만들어 보았습니다.

PHP
[PHP] cafe24 SMS 전송을 class로 만들어 보았습니다. SMS 전송 API를 사용할 일이 있었지만 기존에 소스는 모두 절차형이라서 계속 붙이고 하다보니 짜증이 났습니다.물론 절차형으로 간략히 소개해 놓으면은 좋지만은 스쿨호스팅에서는 class로 만들어서 떡하니 공개해주는데 FORM부터 모두 절차를 따르려고 하니 중간에 수정하기도 귀찮고 제 나름대로 변형을해서 사용하기에 계속 다른곳에 적용하기도 벅차서 그냥 한번 만들어보았습니다. 물론, 100%완벽한거은 아니고 당장 필요해서 만들어서 아직 다듬지도 못하고 이름도 대충대충 해 놓은것이라서 그냥 참고만 해주세요. <?php /** * sms 요청 * * @author * @version 2016 * @package */ class smsCAFE24 { private $smsSendUrl1 = "https://sslsms.cafe24.com/sms_sender.php"; // 전송요청 URL private $smsSendUrl2 = "https://sslsms.cafe24.com/sms_sender.php"; // HTTPS 전송요청 URL private $smsSendClintUrl1 = "https://sslsms.cafe24.com/smsSenderPhone.php"; private $smsReMainUrl = "http://sslsms.cafe24.com/sms_remain.php"; // 전송요청 URL private $smsListUrl = "http://smsapi.cafe24.com/sms_list.php"; // 전송요청 URL" private $userId = 'API ID'; //SMS 아이디. private $secure = 'API KEY'; //인증키…
Read More

[PHP] 여러개의 class를 한 class에서 사용하기

PHP
[PHP] 여러개의 class를 한 class에서 사용하기 class를 잘 만들어 놓아서 재 사용을 높이려고 하는데 한곳에서 여러개의 class를 사용하려고 하면은 상속이 1번뿐이여서 귀찮았습니다.그래서 한곳에서 여러개의 class를 사용하도록 한번 만들어 보았습니다. <?php class AA { public function aa() { echo 'aa class'; } } class BB { public function bb() { echo 'bb class'; } } class CC { public function cc() { echo 'cc class'; } } class DD { var $aaExt; var $bbExt; var $ccExt; public function __construct() { $this->aaExt = new AA(); $this->bbExt = new BB(); $this->ccExt = new CC(); } } class EE extends DD { public function __construct() { DD::__construct(); // parent::__construct(); echo $this->aaExt->aa; echo $this->bbExt->bb; echo $this->ccExt->cc; } } $ee = new EE; -- Result --aa classbb classcc clase 위체서 처럼 서로 다른 클래스를 한곳에서 모두…
Read More

[PHP] MSSQL 함수 목록

Database, PHP
[PHP] MSSQL 함수 목록 정말 PHP + MSSQL을 잘 사용하지 않는 조합이지만은 필요할때는 써야 할 이유가 있습니다.조합 자체가 좋지 않다고 해서 쓰지 말라고 하기 보다는 내가 어떻게 처리를 해 줄수 있을지를 고민을 해봐야 해서....  일단 함수 목록이 필요해서 정리 합니다.매번 PHP 홈페이지 들어가기 귀찮은 이유이기도 합니다.... mssql_bind — Adds a parameter to a stored procedure or a remote stored proceduremssql_close — Close MS SQL Server connectionmssql_connect — Open MS SQL server connectionmssql_data_seek — Moves internal row pointermssql_execute — Executes a stored procedure on a MS SQL server databasemssql_fetch_array — Fetch a result row as an associative array, a numeric array, or bothmssql_fetch_assoc — Returns an associative array of the current row in the resultmssql_fetch_batch — Returns the next batch of recordsmssql_fetch_field — Get field informationmssql_fetch_object — Fetch row as objectmssql_fetch_row…
Read More

[PHP] 텍스트를 이미지로 변환하는 간단소스(한글지원)

PHP
[PHP] 텍스트를 이미지로 변환하는 간단소스(한글지원) 텍스트로 존재하는 문자를 이미지로 변환하는것인데, 간단한것으로 하기에는 좋지만은 복잡해지고 하면은 여러가지로 더 붙어야 할 것입니다.하지만 e-mail등을 그래픽으로 해서 인식을 저하 시키곳에 사용하는것은 괜찮을듯 합니다. <?php function textToImage($text, $fname, $fsize) { $text = iconv("EUC-KR", "UTF-8", $text); // 한글지원 $padding = 10; // 이미지여백 $ttf ="폰트가 있는 서버경로"; $size = imagettfbbox($fsize, 0, $ttf, $text); $xsize = abs($size[0]) + abs($size[2])+($padding*2); $ysize = abs($size[5]) + abs($size[1])+($padding*2); $image = imagecreate($xsize, $ysize); $bcolor = imagecolorallocate ($image, 255, 255, 255); $fcolor = imagecolorallocate ($image, 255, 0, 0); imagefilledrectangle($image, 0, 0, $xsize, $ysize, $bcolor); imagettftext($image, $fsize, 0, $padding, $fsize+$padding, $fcolor, $ttf, $text); imagejpeg($image,$fname, 85); imagepng($image); imagedestroy($image); } textToImage("한글 English 특수문자 ♥","title1.jpg","25"); echo "<img src='title1.jpg'>";
Read More

[PHP] 외부서버의 이미지를 받아서 임시로 보여주고 삭제하기

PHP
[PHP] 외부서버의 이미지를 받아서 임시로 보여주고 삭제하기 실서비스가 이뤄지는 서버가 있지만  서비스 사이트에서 회원중 한분이 자신도 도메인을 가지고 같이 컨텐트를 공유하자는 목적에서 만들어지게 되었다. 물론 실서버의 자료를 다른 방식으로 모두 중간서버에 전송을 해 주면 되지만 웹호스팅을 이용할 경우에 그 많은 자료를 넣을수 없을 경우가 생기게 된다. 그래서 실서버에서 필요한 자료를 중간서버에 요청하여서 다운로드 해 놓았다가 사용자에게 보여주는 방식이다. 실서버는 모든 중간서버를 알고 있기때문에 적절하게 중간서버에게 크론으로 명령을 날려서 지우도록 종용할수도 있고, 회원정보도 xml등을 이용하여서 체크 할 수 있다. 중간서버 프로그램은 절대 중간서버에 저장하는 방식을 지원하지 않는다. 실제 서버에게 모든것을 요청하고 임시로 캐쉬 형식으로 저장해 두기때문에 큰 저장 용량과 실서버의 패치에 따라서 모든 중간서버들이 일일이 대응할 중요성은 없다. 사용언어 : PHP필수 품 : Snoopy.class.php  ( 인터넷에서 검색해서 다운 받도록)목적 :   Server -> Server -> User 로 가는 방식의 서비스 방식을 위해…
Read More

[PHP] 메모리 부족

Linux, PHP
[PHP] 메모리 부족 에러메세지 : Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) 메모리가 부족해서 일어나는 일입니다. 아래의 방법으로 해결이 가능 합니다.방법중에 하나인데 이 방법은 필요한 PHP 파일에서만 작동하기에 전체 메모리를 수정하지 않아도 된다는 점에 있습니다. #메모리 제한 늘리기 ini_set('memory_limit','192M'); #메모리 제한 풀기 ini_set('memory_limit','-1'); 또 다른 방법으로는 php.ini 을 직접 수정해서 웹서버를 재실행하는 것입니다.전체에 적용됩니다. ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 메모리사이즈(숫자)M
Read More