Search Results for '전체 분류'


2064 posts related to '전체 분류'

  1. 2019/04/12 특정 DB ENGINE 일괄변경
  2. 2019/04/12 숫자를 한글로 금액 단위 사용시
  3. 2019/04/12 CURL 사용법
  4. 2019/04/12 남은 일수 체크
  5. 2019/04/12 php 소스 그대로 노출되는 경우
  6. 2019/04/01 랜덤 배너 노출 스크립트
  7. 2019/04/01 값이 숫자인지 확인, Is_numeric() 함수
  8. 2019/04/01 페이지 접속시 자동으로 한번만 새로고침 하기
  9. 2019/04/01 동영상 사이트 주소 정규식
  10. 2019/04/01 무료 고해상도 이미지 다운받는 사이트 1
  11. 2019/03/25 홈페이지 쇼핑몰 최적화 방법
  12. 2019/03/22 php코드의 에러를 알려주는 사이트
  13. 2019/03/22 검색엔진최적화(seo) 필수 메타태그
  14. 2019/03/22 if, else 를 줄이는 방법
  15. 2019/03/22 무료 윈머지(WinMerge) 파일비교프로그램 소개
  16. 2019/03/21 그누보드 네아로 로그인 - 정보가 제대로 넘어오지 않아 오류가 발생했습니다.
  17. 2019/03/21 php substr 함수 사용법
  18. 2019/03/20 네아로 아이디만 로그인 유지 아닐경우 세션 날려버리기 로그아웃 하기
  19. 2019/03/15 무료 로고 사이트 추천
  20. 2019/03/13 스마트홈 IOT 추천 블로그
  21. 2019/03/12 특정 페이지만 리다이렉트 하기.
  22. 2019/03/11 로그인후 5분동안 사용없으면 로그아웃 하기 - 그누보드
  23. 2019/03/11 로그인후 5분동안 사용없으면 로그아웃 하기 - 그누보드
  24. 2019/02/19 스토어팜 찜하기 링크 주소
  25. 2019/01/25 adobe 2019 크랙 나왔네요.
  26. 2018/10/08 그누보드 영카트 서브도메인 접속 방법
  27. 2018/10/01 2차 도메인 서브도메인 .htaccess 처리 하기
  28. 2018/09/27 데이터의 크기
  29. 2018/09/27 2017-07이나 2017-7을 정규식으로 표현할 경우
  30. 2018/09/27 기본 정규식 이해
<?php
include_once('./_common.php');
$sql = "SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'dbbame' and engine = 'InnoDB'";
$rs = mysql_query($sql);
while($row = mysql_fetch_array($rs))
{
    $tbl = $row[0];
    $sql = "ALTER TABLE $tbl ENGINE=MyISAM";
    mysql_query($sql);
}
?>
 
 
InnoDB 인 것을 MyISAM으로
2019/04/12 12:04 2019/04/12 12:04
$pricem=$price_sum_tot; 
$trans_kor=array("","일","이","삼","사","오","육","칠","팔","구"); 
$price_unit=array("","십","백","천","만","십","백","천","억","십","백","천","조","십","백","천"); 
$valuecode=array("","만","억","조"); 
$value=strlen($pricem); 
$k=0; 
for($i=$value;$i>0;$i--){ 
    $vv=""; 
    $vc=substr($pricem,$k,1); 
    $vt=$trans_kor[$vc]; 
    $k++; 
    if($i%5 ==0){ 
        $vv=$valuecode[$i/5];
    } else { 
        if($vc) $vv=$price_unit[$i-1];
    } 
    
    $vr=$vr.$vt.$vv; 
}
2019/04/12 12:02 2019/04/12 12:02
cURL (Client URL Library Functions)
제작자 Daniel Stenberg 의 설명을 그대로 변역하면
curl is a comand line tool for transferring files with URL syntax
커맨드라인에서 URL 문법을 사용하여 파일을 전송 프로그램
내가 원하는 주소의 페이지에서 내가 임의의 값을 넣고 그 넣은 값으로 페이지에서 리턴되는 값을 받아오는 역할을 한다.
PHP에서 cURL을 사용하려는 사람들 대부분이 아마도 HTTPS 접속 때문일 것이다.
소켓 또는 그 외 여러가지 접속방법이 있는데 굳이 cURL을 사용하는 건 속도면에서도 빠르고 HTTPS도 쉽게 접속할 수 있기 때문이다.
cURL 모듈을 서버에 설치해야 합니다.(리눅스 - curl.so, 윈도우 - php_curl.dll 확장모듈 필요)
 
cURL로 가능한 일
HTTPS certificates
HTTP POST
HTTP PUT
FTP upload
HTTP Form
cookie
authentication
 
cURL, Client URL Library Functions
curl_init : 세션 초기화, 핸들값 리턴
curl_setopt : 옵션 세팅
curl_exec : curl을 실행
curl_errno : 에러번호를 가져온다.
curl_error : 에러 메시지를 가져온다.
curl_getinfo : 상태 정보를 리턴한다.
curl_close : curl 세션을 닫는다
 
[예제1 : POST방식으로 데이터 전송(simple)]
<?
$post_data = array(
"name" => "홍길동",
"birthday" => "1980-08-20"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, http://www.example.com);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_exec($ch);
?>
 
[예제2: POST방식으로 데이터 전송(function)]
<?
function fetch_page($url,$param,$cookies,$referer_url){
if(strlen(trim($referer_url)) == 0) $referer_url= $url;
$curlsession = curl_init ();
curl_setopt ($curlsession, CURLOPT_URL, \"$url\");
curl_setopt ($curlsession, CURLOPT_POST, 1);
curl_setopt ($curlsession, CURLOPT_POSTFIELDS, \"$param\");
curl_setopt ($curlsession, CURLOPT_POSTFIELDSIZE, 0);
curl_setopt ($curlsession, CURLOPT_TIMEOUT, 60);
if($cookies && $cookies!=\"\"){
curl_setopt ($curlsession, CURLOPT_COOKIE, \"$cookies\");
}
curl_setopt ($curlsession, CURLOPT_HEADER, 1); //헤더값을 가져오기위해 사용합니다. 쿠키를 가져오려고요.
curl_setopt ($curlsession, CURLOPT_USERAGENT, \"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\");
curl_setopt ($curlsession, CURLOPT_REFERER, \"$referer_url\");
ob_start();
$res = curl_exec ($curlsession);
$buffer = ob_get_contents();
ob_end_clean();
if (!$buffer) {
$returnVal = \"Curl Fetch Error : \".curl_error($curlsession);
}else{
$returnVal = $buffer;
}
curl_close($curlsession);
return $returnVal;
}
?>
 
[예제3 : 파일 전송]
<?
$post_data['data[0]'] = "@image/img_01.jpg";
$post_data['data[0]'] = "@image/img_02.jpg";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, http://www.example.com/upload.php);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$postResult = curl_exec($ch);
?>
[예제4 : https 접속]
<?
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,"https://www.test.com"); //접속할 URL 주소
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 인증서 체크같은데 true 시 안되는 경우가 많다.
// default 값이 true 이기때문에 이부분을 조심 (https 접속시에 필요)
curl_setopt ($ch, CURLOPT_SSLVERSION,3); // SSL 버젼 (https 접속시에 필요)
curl_setopt ($ch, CURLOPT_HEADER, 0); // 헤더 출력 여부
curl_setopt ($ch, CURLOPT_POST, 1); // Post Get 접속 여부
curl_setopt ($ch, CURLOPT_POSTFIELDS, "var1=str1&var2=str2"); // Post 값 Get 방식처럼적는다.
curl_setopt ($ch, CURLOPT_TIMEOUT, 30); // TimeOut 값
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // 결과값을 받을것인지
$result = curl_exec ($ch);
curl_close ($ch);
echo $result;
?>
 
[예제5 : curl을 이용한 Gmail 로그인]
$src = "https://".$gmailId.":".$gmailPw."@mail.google.com/mail/feed/atom";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, 'My Agent Name');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$res = curl_exec($ch);
curl_close($ch);
/** 결과는 Atom xml 형식이다. DOM 또는 xml 파싱 function을 이용해서 파싱하면 됩니다. **/
echo $res;
?>
 
[예제6 : cURL을 이용한 웹페이지 가져오기]
<?php
function get_content($url) {
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)';
$curlsession = curl_init ();
curl_setopt ($curlsession, CURLOPT_URL, $url);
curl_setopt ($curlsession, CURLOPT_HEADER, 0);
curl_setopt ($curlsession, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curlsession, CURLOPT_POST, 0);
curl_setopt ($curlsession, CURLOPT_USERAGENT, $agent);
curl_setopt ($curlsession, CURLOPT_REFERER, "");
curl_setopt ($curlsession, CURLOPT_TIMEOUT, 3);
$buffer = curl_exec ($curlsession);
$cinfo = curl_getinfo($curlsession);
curl_close($curlsession);
if ($cinfo['http_code'] != 200)
{
return "";
}
return $buffer;
}
?>
 
curl_close
기능 : cURL 세션을 닫는다.
구문 : curl_close(resource ch)
cURL 세션을 닫고, 리소스를 비워준다. 또한 cURL 핸들은 삭제된다.
 
기능 : 마지막 에러 번호를 리턴해 준다.
구문 : curl_errno(resource ch)
만일 연산 후 어떠한 에러도 발행하지 않았다면 0(zero)을 리턴한다.
 
Error Code
There exists a bunch of different error codes and their corresponding error messages that may appear during bad conditions. At the time of this writing, the exit codes are:
1 - Unsupported protocol. This build of curl has no support for this protocol.
2 - Failed to initialize.
3 - URL malformat. The syntax was not correct.
잘못된 형식의 도메인
5 - Couldn't resolve proxy. The given proxy host could not be resolved.
6 - Couldn't resolve host. The given remote host was not resolved.
해당 도메인을 못찾는다는 뜻
네임서버가 제대로 등록되어 있는지 확인하고 도메인도 정확한지 확인할 것.
7 - Failed to connect to host.
8 - FTP weird server reply. The server sent data curl couldn't parse.
9 - FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn't exist on the server.
11 - FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.
13 - FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.
14 - FTP weird 227 format. Curl couldn't parse the 227-line the server sent.
15 - FTP can't get host. Couldn't resolve the host IP we got in the 227-line.
17 - FTP couldn't set binary. Couldn't change transfer method to binary.
18 - Partial file. Only a part of the file was transferred.
19 - FTP couldn't download/access the given file, the RETR (or similar) command failed.
21 - FTP quote error. A quote command returned error from the server.
22 - HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f/--fail is used.
23 - Write error. Curl couldn't write data to a local filesystem or similar.
25 - FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading.
26 - Read error. Various reading problems.
27 - Out of memory. A memory allocation request failed.
28 - Operation timeout. The specified time-out period was reached according to the conditions.
30 - FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!
31 - FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers.
33 - HTTP range error. The range "command" didn't work.
34 - HTTP post error. Internal post-request generation error.
35 - SSL connect error. The SSL handshaking failed.
36 - FTP bad download resume. Couldn't continue an earlier aborted download.
37 - FILE couldn't read file. Failed to open the file. Permissions?
38 - LDAP cannot bind. LDAP bind operation failed.
39 - LDAP search failed.
41 - Function not found. A required LDAP function was not found.
42 - Aborted by callback. An application told curl to abort the operation.
43 - Internal error. A function was called with a bad parameter.
45 - Interface error. A specified outgoing interface could not be used.
47 - Too many redirects. When following redirects, curl hit the maximum amount.
48 - Unknown TELNET option specified.
49 - Malformed telnet option.
51 - The peer's SSL certificate or SSH MD5 fingerprint was not ok
에러 메시지) SSL: certificate subject name 'www.test.co.kr' does not match target host name 'test.co.kr'
해결1) 인증서 발급받은 주소로 호출하거나
해결2) 설정으로 제어
$soapClient->setOpt('curl', CURLOPT_SSL_VERIFYHOST, 0);
52 - The server didn't reply anything, which here is considered an error.
53 - SSL crypto engine not found
54 - Cannot set SSL crypto engine as default
55 - Failed sending network data
56 - Failure in receiving network data
58 - Problem with the local certificate
59 - Couldn't use specified SSL cipher
60 - Peer certificate cannot be authenticated with known CA certificates
인증서 신뢰 검증에 실패한 경우다. (통합인증서, 번들과 관련 있는 듯)
에러 메시지) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
해결) 신뢰 검증을 하지 않도록 설정.
상호 서버가 신뢰된다면 굳이 신뢰성을 검증하지 않아도 된다.
$soapClient->setOpt('curl', CURLOPT_SSL_VERIFYPEER, 0);
61 - Unrecognized transfer encoding
62 - Invalid LDAP URL
63 - Maximum file size exceeded
64 - Requested FTP SSL level failed
65 - Sending the data requires a rewind that failed
66 - Failed to initialise SSL Engine
67 - User, password or similar was not accepted and curl failed to login
68 - File not found on TFTP server
69 - Permission problem on TFTP server
70 - Out of disk space on TFTP server
71 - Illegal TFTP operation
72 - Unknown TFTP transfer ID
73 - File already exists (TFTP)
74 - No such user (TFTP)
75 - Character conversion failed
76 - Character conversion functions required
77 - Problem with reading the SSL CA cert (path? access rights?)
78 - The resource referenced in the URL does not exist
79 - An unspecified error occurred during the SSH session
80 - Failed to shut down the SSL connection
XX - There will appear more error codes here in future releases. The existing ones are meant to never change
 
curl_error
기능 : 그 현재의 세션에 대한 마지막 에러 메시지를 되돌려 준다.
구문 : curl_error(resource ch)
만일 cURL 연산 후 에러를 발생하면 에러메시지를 되돌려 주며, 에러가 발생하지 않으면 빈문자열을 되돌려 준다.
 
 
curl_init
기능 : 세션을 초기화하고 curl_setopt(), curl_exec() 그리고 curl_close 함수들과 함께 사용하기 위해 CURL 핸들값을 리턴해준다.
구문 : resource curl_init([string $url])
옵션 Url 매개변수가 포함되어 있다면 CURLOPT_URL 옵션은 매개변수의 값을 셋팅할 것이다.
curl_setopt()를 이용하여 셋팅할 수 있다.
리턴 : 핸들값 or False
예제 : 새로운 curl세션을 초기화하고 웹페이지를 페칭한다.
< ?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
 
curl_exec
기능 : 세션을 싱행한다.
구문 : curl_exec(resource ch)
이 함수는 cURL 세션을 초기화하고 세션의 옵션들을 셋팅한 후에 불려져야만 한다.
본 함수의 목적은 단순히 미리 정의된 cURL 세션을 실행하기 위한 것이기 때문이다.
 
 
curl_getinfo
기능 : 특정 전송에 대한 정보를 받는다.
구문 : crul_getinfo(resource ch [, int opt])
 
 
 
curl_setopt
CURLOPT_FOLLOWLOCATION
TRUE to follow any "Location: " header that the server sends as part of the HTTP header (note this is recursive, PHP will follow as many "Location: " headers that it is sent, unless CURLOPT_MAXREDIRS is set).
FOLLOWLOCATION 옵션 설정. 위치 헤더가 존재하면 따라간다.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, tru
 
CURLOPT_HEADER
TRUE to include the header in the output.
헤더 정보를 받기 원한다면 이 옵션을 추가한다.
VALUE : 1 OR true
curl_setopt($ch, CURLOPT_HEADER, false);
 
CURLOPT_NOBODY
TRUE to exclude the body from the output.
본문의 정보를 받기 원하지 않는다면 이 옵션을 추가한다.
CURLOPT_POST
TRUE to do a regular HTTP POST. This POST is the normal application/x-www-form-urlencoded kind, most commonly used by HTML forms.
전송 메소드를 설정한다.
VALUE : 1-POST, 0-GET
curl_setopt($ch, CURLOPT_POST,1);
CURLOPT_RETURNTRANSFER
TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
REQUEST 에 대한 결과값을 받을 건지 체크
(WRITERUNCTION 콜백을 사용하는 대신, curl_exec 함수을 위한 반환 값으로 원격지 내용을 받는다.)
#Resource ID 형태로 넘어옴 :: 내장 함수 curl_errno 로 체크
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
CURLOPT_SSL_VERIFYPEER
FALSE to stop cURL from verifying the peer's certificate. Alternate certificates to verify against can be specified with the CURLOPT_CAINFO option or a certificate directory can be specified with the CURLOPT_CAPATH option. CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2).
인증서 체크같은데 true 시 안되는 경우가 많다.
default 값이 true 이기때문에 이 부분을 조심 (https 접속시에 필요)
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
CURLOPT_PORT
An alternative port number to connect to.
CURLOPT_SSLVERSION
The SSL version (2 or 3) to use. By default PHP will try to determine this itself, although in some cases this must be set manually.
SSL 버젼 (https 접속시에 필요)
curl_setopt ($ch, CURLOPT_SSLVERSION,3);
 
CURLOPT_TIMEOUT
The maximum number of seconds to allow cURL functions to execute.
REQUEST 에 대한 결과값을 받는 시간타임 설정한다.
curl_setopt($ch, CURLOPT_TIMEOUT,100);
CURLOPT_POSTFIELDS
The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path.
POST 메소드라면 파라미터 값들을 이 옵션에 정의하면 된다.
curl_setopt($cu, CURLOPT_POSTFIELDS,$vars); // 보낼 데이타 형식은 GET 방식으로 설정
ex) $vars = "arg=$arg1&arg2=$arg2&arg3=$arg3";
CURLOPT_REFERER
The contents of the "Referer: " header to be used in a HTTP request.
리퍼러 정보를 설정
CURLOPT_URL
The URL to fetch. This can also be set when initializing a session with curl_init().
접속할 url정보를 설정
curl_init()에서 url를 설정하면 별도 설정이 필요없다.
curl_setopt($ch, CURLOPT_URL, 'http://www.exsample.com');
CURLOPT_USERAGENT
The contents of the "User-Agent: " header to be used in a HTTP request.
에이전트 정보를 설정
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
2019/04/12 12:01 2019/04/12 12:01
// 선택 옵션에서 숫자만
$use_io_days =  preg_replace("/[^0-9]*/s", "", $row[io_id]);
 
​// 해당일만큼 증가 후 종료일로 지정 - 현재일과 차이
$use_date =  (strtotime(date('Y-m-d', strtotime("+".$use_io_days."day", strtotime($row['pay_datetime'])))) - strtotime(G5_TIME_YMD)) / 86400;  //  G5_TIME_YMD​
2019/04/12 12:00 2019/04/12 12:00
# vi /etc/php.ini
1. short_open_tag = On 
<? 
echo "사용가능";
 ?> 
 
2. short_open_tag = Off
<?php
echo "사용가능";
 ?> 
 
2번 흐름 - 보안상 이점
2019/04/12 11:59 2019/04/12 11:59
<script type="text/javascript">
  var result = Math.floor(Math.random() * 8) + 1;
if(result == '1'){
document.writeln("<a href='' target='_blank'><img src='' height='600' width='160' border='0'></a>");
}
else if(result == '2'){
document.writeln("<a href='' target='_blank'><img src='' height='600' width='160' border='0'></a>");
}
else if(result == '3'){
document.writeln("<a href='' target='_blank'><img src='' height='600' width='160' border='0'></a>");
}
else if(result == '4'){
document.writeln("<a href='' target='_blank'><img src='' height='600' width='160' border='0'></a>");
}
else if(result == '5'){
document.writeln("<a href='' target='_blank'><img src='' height='600' width='160' border='0'></a>");
}
else if(result == '6'){
document.writeln("<a href='' target='_blank'><img src='' height='600' width='160' border='0'></a>");
}
else  {
document.writeln("<a href='' target='_blank'><img src='' height='600' width='160' border='0'></a>");
}
</script>
2019/04/01 11:34 2019/04/01 11:34
변수 $sam를 is_numeric() 함수를 이용해 숫자형 데이터인 경우 true를 아닌 경우에는 false를 반환

<?php
  $sam="12345";
  // 숫자 타입의 데이터를 선언
  if (is_number($sam)) {
    echo '숫자 입니다.';
  }
  else {
    echo '문자 입니다.';
  }
?>
결과는 (숫자 입니다)
2019/04/01 11:33 2019/04/01 11:33
<?php
if (!$_COOKIE['reload']) {
 setcookie("reload",time()+60*60*24); // 하루동안만..
 echo "<meta http-equiv='Refresh' CONTENT='0'; URL=".$_SERVER['PHP_SELF']." />";
 }
?>
페이지 접속시 자동으로 한번만 새로고침 리로드 하기
2019/04/01 11:29 2019/04/01 11:29
카카오팟 영상 정규식
 
https?:\/\/|www\.)play-tv.kakao.com\/channel\/[0-9]+\/(livelink|cliplink)\/([A-Za-z0-9]+
 
트위터 정규식
 
http(s)?:\/\/(.*\.)?twitter\.com\/(\w+)\/?status\/(\w+)
 
비메오 정규식
 
https?:\/\/|www\.)vimeo.com\/([A-Za-z0-9]+
 
데일리모션 정규식
 
https?:\/\/www\.)dailymotion.com\/video\/([A-Za-z0-9]+
 
유튜브 정규식
 
https?:\/\/www.youtube.com\/watch\?v=([a-zA-Z0-9\-_]+
 
인스타그램 정규식
 
https?:\/\/www\.)?instagram\.com(\/p\/\w+\/?
 
2019/04/01 11:27 2019/04/01 11:27
https://unsplash.com/

분류도 다양합니다. 그급스러운 이미지 많이 있네요 추천 합니다.
2019/04/01 11:13 2019/04/01 11:13
PageSpeed Tools > Insights 

웹페이지를 자동으로 분석해서 이미지, 자바스크립트, CSS 등 최적화된 파일을 제공합니다.
https://developers.google.com/speed/pagespeed/insights/?hl=ko

DevTools 에서 사용하면 편합니다. 
Online JavaScript/CSS/HTML Compressor 
JavaScript, CSS, HTML 압축
http://refresh-sf.com
http://gnustudy.com/bbs/board.php?bo_table=sitelink&wr_id=26
2019/03/25 09:43 2019/03/25 09:43
http://phpcodechecker.com/

2019/03/22 11:35 2019/03/22 11:35
소용없다! 필요있다 라는 주제로 인터넷에서 돌고 돌아지만 지금은 인정할수 밖에 없는 메타태그 인것 같습니다
검색엔진최적화 seo에 첫걸음인것 같습니다

기본적으로 많이 사용되는 메타태그

1 <meta name="robots" content="index, follow"> 
: 검색 로봇이 문서와 링크를 모두 긁어 가라는 뜻
2 <meta name="description" content="사이트 설명글"> 
: 내 사이트 콘텐츠 설명글!
3 <meta name="keywords" content="태그">  
: 내 사이트에 주요 콘텐츠! 예) 맛집,게임
4 <meta name="Author" content="작성자">
: 사이트 운영자 이름,명칭
5 <meta name="title" content=""> 
: 사이트 타이틀 이름
2019/03/22 11:34 2019/03/22 11:34
if (isset($sql)) {
    // $sql가 있을 경우
    $sql1 = $sql;
} else {
    // $sql가 없을 경우
    $sql1 = "no";
}

 소스가 일반적입니다. 이렇게 사용하면 대략 5줄을 작성하게되는데

$sql1 = isset($sql) ? $sql : "no";

이런 식으로 5줄을 1줄로 줄일 수 있습니다.
2019/03/22 11:30 2019/03/22 11:30
사용자 삽입 이미지

패치 할때 일일이 비교해서 반영해야 합니다. 그런 불편함을 덜어 줄수 있는 프로그램 입니다.
윈머지 프로그램은 수정한 부분만 찾아서 변경 가능합니다.

http://winmerge.org/downloads/?lang=en

위 링크를 통해 다운 받을수 있습니다. 
개인적으로 Beyond Compare 프로그램 좋지만 유료 입니다. 
2019/03/22 11:20 2019/03/22 11:20
if(!trim($mb_id) || !trim($token_value)) {
alert_close("정보가 제대로 넘어오지 않아 오류가 발생했습니다.");
}

위 소스에서 문제가 생긴다. 네이버에서 더이상 enc_id 제공하지 않아서 생기는 문제로 보인다.


/plugin/login-auth/login_with_naver.php 파일 60라인의 $mb_id = $xml->response->enc_id; 를 $mb_id = $xml->response->id; 로 변경하면 해결 된다.
2019/03/21 15:46 2019/03/21 15:46
$mb_id=substr("abcd", 0, 3);
echo("'$mb_id'");
$mb_id=substr("abcd", 2, 3);
echo("'$mb_id'");
$mb_id=substr("abcd", -1);
echo("'$mb_id'");
 
결과 'abc'  'cde'  'd' 로 나온다.
2019/03/21 13:07 2019/03/21 13:07
<?php 
@session_save_path($DOCUMENT_ROOT."/data/session");
@session_start();
if(substr($member[mb_id], 0, 2) != 'n_') {
    unset( $_SESSION["ss_mb_id"] );
    echo "<script>";
    echo "alert('네이버 아이디로 로그인해 주세요.');";
    echo "history.go(-1);";
    echo "</script>";
    exit;
}
?>

그누보드 기반으로 제작 할때 사용하면 됩니다.


2019/03/20 21:50 2019/03/20 21:50
무료 로고 제작 툴 해치풀(Hatchful)
2019/03/15 21:12 2019/03/15 21:12
https://yourjune.tistory.com

스마트홈 IOT 추천 블로그  소개합니다. 
2019/03/13 18:02 2019/03/13 18:02
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !/bbs/board.php.?+bo_table=grouppurchase&wr_id= [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
# force http:// for selected URLs
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} /bbs/board.php.+?bo_table=grouppurchase&wr_id= [NC]
RewriteCond %{THE_REQUEST} /bbs/board.php.+?bo_table=grouppurchase&wr_id= [NC]
ewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
2019/03/12 13:02 2019/03/12 13:02
<? 
/////////////////////5분 후 자동 로그아웃 ///////////// 
if($member[mb_id]) 
    $checktime = mktime(date("H"),date("i")-30,date("s"),date("m"),date("d"),date("Y")); // 시간지정 
    if($_SESSION['ss_login_time'] && ($_SESSION['ss_login_time'] < $checktime)) { 
        // 페이지를 연 시점이 되어있고, 저장된 시간이 특정시간 이전일때 
        goto_url($g4['bbs_path']."/logout.php",$urlencode); // 강제 로그아웃 
    } else { 
        // 로그인 타임(페이지를 연 시간)이 없거나, 특정시간을 넘기지 않은 경우는 시간재저장 
        $login_time = mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")); // 현재시간 저장 
        set_session("ss_login_time", $login_time); 
    } 
?> 
2019/03/11 14:14 2019/03/11 14:14
<? 
/////////////////////5분 후 자동 로그아웃 ///////////// 
if($member[mb_id]) 
    $checktime = mktime(date("H"),date("i")-30,date("s"),date("m"),date("d"),date("Y")); // 시간지정 
    if($_SESSION['ss_login_time'] && ($_SESSION['ss_login_time'] < $checktime)) { 
        // 페이지를 연 시점이 되어있고, 저장된 시간이 특정시간 이전일때 
        goto_url($g4['bbs_path']."/logout.php",$urlencode); // 강제 로그아웃 
    } else { 
        // 로그인 타임(페이지를 연 시간)이 없거나, 특정시간을 넘기지 않은 경우는 시간재저장 
        $login_time = mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")); // 현재시간 저장 
        set_session("ss_login_time", $login_time); 
    } 
?> 
2019/03/11 14:14 2019/03/11 14:14
http://storefarm.naver.com/main/callback/login?__targetUrl=%2Fmain%2Fsubscription%2Fsubscribe%2F386131&__method=POST&isAdultCheck=false

위 빨간색 부분만 변경해서 사용하면 됩니다.


2019/02/19 15:06 2019/02/19 15:06
[##_1L|2217797541.zip||_##][##_1L|2217797541.zip||_##][##_1C|2217797541.zip||_##]https://free.appnee.com/adobe-creative-cloud-2019-all-products-universal-crack-patches-collection/
adobe 2019 크랙 나왔네요.

[##_1C|1303857153.jpg|width="680" height="717" alt="사용자 삽입 이미지"|_##]
[##_https://youngsam.net/owner/entry/edit/1C%7C2217797541.zip%7C%7C_##]
[##_1L|2217797541.zip||_##][##_1L|2217797541.zip||_##][##_1C|2217797541.zip||_##]
2019/01/25 11:57 2019/01/25 11:57
그누루트의 shop.config.php 파일에 제일 하단에 추가

//도메인이 www.sigongschool.com 이면 쇼핑몰 루트 인덱스가 작동하도록... 
if($_SERVER['HTTP_HOST'] == "www.sigongschool.com") { 
$default['de_root_index_use'] = 1; 
}
2018/10/08 12:47 2018/10/08 12:47
.htaccess 파일로 계정내에 rewrite를 설정하시면 원하시는 2차도메인으로 연결이 가능합니다.
 
subdomain.my.com  2차도메인을 subdomain 명의 디렉토리로 연결하실 경우 www폴더 하위에 .htaccess파일을 아래와 같이 설정해보시기 바랍니다.
 
==================.htaccess 파일 예=========================
RewriteEngine On
RewriteBase /
RewriteCond $1 !^(subdomain)/
RewriteCond %{HTTP_HOST} ^subdomain\.my\.com [NC]
RewriteRule ^(.*) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.my\.com(.*) /$1/$2 [L]
===========================================================
2018/10/01 13:58 2018/10/01 13:58
8 bit (비트) 1 byte 
1024 byte (바이트) 1 kilobyte 
1024 kilobyte (킬로바이트) 1 megabyte 
1024 megabyte (메가바이트) 1 gigabyte 
1024 gigabyte  (기가바이트) 1 terabyte 
2018/09/27 19:05 2018/09/27 19:05
2017-07을 정규식으로 표현하면  아래와 같이 됩니다.
[0-9]{4}-[0-9]{2}
이때 [ ]사이에 있는 0-9는 0부터 9를 포함한 0,1,2,3,4,5,6,7,8,9중 하나의 문자가 있어야 한다는 뜻이고 
{수}는 그러한 앞의 조건에 맞는 문자가 그 수만큼 연속으로 있어야 한다는 뜻입니다.
그럼 
2017-7을 정규식으로 표현하면
[0-9]{4}-[0-9]{1,2}  
위와 같이 됩니다.
{1,2}는 1~2개 만큼 연속으로 있어야 한다는 뜻입니다. 
2018/09/27 19:02 2018/09/27 19:02
기본 정규식 이해
  정규식(Regular Expression)은 문자열의 패턴을 기술하는 일종의 미니 언어로, 텍스트 처리 작업이 많은 웹 프로그래밍에서는 필수적인 기능이라고 할 수 있다. 루비에서는 정규식 리터럴이 신택스 레벨에서 지원되기 때문에, 정규식의 사용이 무척 편리하다. 루비에서 정규식은 다음과 같은 방법으로 선언된다.
 >> /Perl/
 => /Perl/
 
 정규식은 /.../ 의 형태로 작성되는데, 위의 정규식은 Perl이라는 텍스트를 인식하는 패턴이다. 정규식을 사용하면, 주어진 텍스트의 일부를 치환하는 것이 가능하다.
 >> “Perl is cool. I like Perl!”.sub(/Perl/, “Ruby”)
 => “Ruby is cool. I like Perl!”
 
위의 코드에서 문자열의 sub 메소드는 원래 문자열에서 /Perl/패턴에 일치하는 첫 번째 부분을 Ruby로 치환해 주고 있다. 문자열에서는 패턴이 일치하는 모든 부분을 Ruby로 치환하고 싶다면, gsub 메소드를 사용한다.
 >> “Perl is cool. I like Perl!”.gsub(/Perl/.”Ruby”)
 => “Ruby is cool. I like Ruby!”
 
하나의 정해진 문자열이 아니라 특정 패턴을 인식하는 정규식을 작성하는 것도 가능하다. 다음은 Perl 문자열과 PHP 문자열을 동시에 매칭하는 정규식이다.
 >> /P(erl|HP)/
 => /P(erl|HP)/
 
정규식에서 | 는 or의 의미를 가진다.
 >> “Perl is cool. I like PHP!”.gsub(/P(erl|HP)/, “Ruby”)
 => “Ruby is cool. I like Ruby!”
 
특정 문자 그룹을 매칭하고 싶다면 [...] 패턴을 사용할 수 있다.
 >> “innvation”.sub(/[aeiou]/, “*”)
 => “*nnvotaion”
 >> “innovation”.gsub(/[aeiou]/, “*”)
 => “*nn*v*t**n”
 
[...] 패턴에는 문자의 범위를 사용할 수도 있다.
 >> “The password is 9428.“.gsub(/[0-9]/,”*”)
 => “The password is ****.”
 
[...] 안에서 처 번째로 사용된 문자가 ^라면, 역패턴이 매칭된다.
 >> “I love Seoul!”.gsub(/[^a-zA-Z]/,”*”)
 => “I*love*Seoul*”
 
 
. 는 모든 문자를 매칭하는 패턴이다. . 하나의 문자를 매칭하게 된다.
 >> “Ruby is cool.”.sub(/.ool/,”fun”)
 => “Ruby is fun”
 
특정 패턴이 반복되는 것을 매칭할 때는 + or * 이 사용된다. + 는 특정 패턴이 1회 이상 반복하는 것을 매칭하고, * 는 특정 패턴이 0회 이상 반복하는 것을 매칭한다.
 >> “Ruby is coooool.”.sub(/o+/, “oo”)
 => “Ruby is cool.”
 
만약 하나 이상의 문자가 반복되는 패턴을 인식하려면, 괄호를 사용할 수 있다.
 >> “1001001001888”.sub(/(001)+/, “”)
 => “1888”
 
앞서 설명한 정규식을 조합해서 사용할 수 있다.
 >> “The password is 9428.”.sub(/[0-9]+/,”*”)
 => “The password is *.”
 
정규식이 텍스트의 치환에만 사용되는 것은 아니다. 주어진 문자열이 특정 패턴을 가지고 있는지 아닌지를 테스트하는 것도 정규식의 중요한 용도 중의 하나이다.
>> “A year has 365 days.” =- /[0-9]+/
=> 11
 위에서는 문자열의 =- 연산자를 이용하여 해당 문자열에 숫자가 있는지 없는지를 테스트하고 있다. =- 연산자는 문자열의 몇 번째 인덱스에서 패턴매칭이 일어났는지를 리턴한다. 만약 패턴 매칭에 실패하면 nil이 리턴된다. 루비에서는 nil과 false외의 모든 값은 true로 인식되기 때문에, =- 연산자는 조건문에서 사용될 수 있다.
 
>> if “A year has 365 days.” =- /[0-9]+/
>>      puts “There is a number in the starting!”
>> end
There is a number in the starting!
=> nil
 
=- 연산자로 문자열의 패턴을 인식하는 경우, 괄호를 사용하여 패턴이 매칭된 부분을 읽어들일 수 있다.
  >> if “A year has 365 days.” =- /[0-9]+/
  >>      put $1
  >> end
  365
  => nil
 
 위에서는 /[0-9]+/ 패턴에 매칭된 문자열이 $1 변수에 저장되고 있다. 만약 패턴에서 두 개 이상의 괄호가 사용된다면, 각 괄호에 의해 매칭된 문자열이 차례로 $1, $2, $3, … 변수에 저장된다.
 
  >> if “210.163.138.100” =- /([0-9]+)\. ([0-9]+)\. ([0-9]+)\. ([0-9]+)/
  >>     puts $1
  >>     puts $2
  >>     puts $3
  >>     puts $4
  >> end
 210
 163
 138
 100
 => nil
 
위의 정규식에서 \. 패턴은 실제의 . 문자를 매칭하고 있다.
2018/09/27 19:02 2018/09/27 19:02