javascript Table 로 Excel 파일 생성 다운받기

Progmming/Javascript|2021. 7. 29. 15:49
반응형

table id 를 지정해서

 

해당 테이블을 엑셀 파일로 생성시켜주는 함수.

 

테이블 아이디 , 파일명 ,  시트명을 변수처리함.

 

    var makeToExcel = (function () { 
        var style = "<style> td,th {width:100px;} </style>";
        var uri = 'data:application/vnd.ms-excel;base64,'
            , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->' + style + '<meta http-equiv="Content-Type" content="application/vnd.ms-excel; charset=utf-8"/></head><body><table border="1">{table}</table></body></html>'
            , base64 = function (s) {
                return window.btoa(unescape(encodeURIComponent(s)))
            }
            , format = function (s, c) {
                return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; })
            }
        return function (table, fileName , sheetName) {
            if (!table.nodeType) table = document.getElementById(table)
            var ctx = { worksheet: sheetName || 'Worksheet', table: table.innerHTML }
			console.log(table.innerHTML); 
            let a = document.createElement('a');
        a.href = uri + base64(format(template, ctx));
        a.download = fileName+'.xls';
        a.click();
        }
    })()
	
	makeToExcel('테이블아이디', '파일명' ,'시트명');

댓글()

Visual Studio Code FTP 설치하기

Progmming/PHP|2021. 7. 12. 13:36
반응형

 

확장 탭에서 "ftp-simple"를 검색하고 설치합니다.

 

 

설치 후 F1 을 눌러서 검색창을 열고 ftp 를 검색하면 아래와 같이 검색 됩니다. 

 

 

위와 같이 보이시면 ftp-simple : config - FTP connection setting 을 선택합니다.

 

 

아마도 보시면 아시겠지만 각 항목은 위와 같이 입력합니다.

댓글()

Visual Studio Code 한국어 팩 설치 방법

Progmming/PHP|2021. 7. 12. 13:29
반응형

 

확장 탭 에서 "Korean"을 검색하면 "Korean Language Pack for Visual Studio Code" 가 검색됩니다.

 

이미 설치했기 때문에    치  라고 나옵니다만  Install  이라고 보이실텐데 설치하시면 됩니다.

 

설치 후 VS Code를 재시작해주시면 한글팩이 설치되어 한글로 보이게 됩니다.

댓글()

System.Security.SecurityException: 요청한 레지스트리에 액세스할 수 없습니다.

Progmming/.Net|2020. 12. 15. 10:34
반응형

오류 메시지

 

System.Security.SecurityException: 요청한 레지스트리에 액세스할 수 없습니다.

 

 

해결 방법

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

 

EnableLUA 값 데이터를 0으로 설정.

 

댓글()

그누보드5 완전히 회원삭제 하는 소스

Progmming/PHP|2020. 7. 12. 16:04
반응형

/board( 설치경로)/lib/common.lib.php 에서 member_delete 를 찾아서 

 

 

혹시 기존에 삭제처리해서 Flag 처리된 회원을 삭제해야하는 경우 아래 내용 주석처리 필요.

// 이미 삭제된 회원은 제외
    if(preg_match('#^[0-9]{8}.*삭제함#', $mb['mb_memo']))
        return;

 

함수내 가장 하단에 추가

sql_query(" delete from {$g5['member_table']} where mb_id = '$mb_id' ");

 

 

 

전체 함수 

// 회원 삭제
function member_delete($mb_id)
{
    global $config;
    global $g5;

    $sql = " select mb_name, mb_nick, mb_ip, mb_recommend, mb_memo, mb_level from {$g5['member_table']} where mb_id= '".$mb_id."' ";
    $mb = sql_fetch($sql);

	// 주석처리 
    // 이미 삭제된 회원은 제외
    //if(preg_match('#^[0-9]{8}.*삭제함#', $mb['mb_memo']))
    //    return;

    if ($mb['mb_recommend']) {
        $row = sql_fetch(" select count(*) as cnt from {$g5['member_table']} where mb_id = '".addslashes($mb['mb_recommend'])."' ");
        if ($row['cnt'])
            insert_point($mb['mb_recommend'], $config['cf_recommend_point'] * (-1), $mb_id.'님의 회원자료 삭제로 인한 추천인 포인트 반환', "@member", $mb['mb_recommend'], $mb_id.' 추천인 삭제');
    }

    // 회원자료는 정보만 없앤 후 아이디는 보관하여 다른 사람이 사용하지 못하도록 함 : 061025
    $sql = " update {$g5['member_table']} set mb_password = '', mb_level = 1, mb_email = '', mb_homepage = '', mb_tel = '', mb_hp = '', mb_zip1 = '', mb_zip2 = '', mb_addr1 = '', mb_addr2 = '', mb_birth = '', mb_sex = '', mb_signature = '', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 삭제함\n{$mb['mb_memo']}' where mb_id = '{$mb_id}' ";
    sql_query($sql);

    // 포인트 테이블에서 삭제
    sql_query(" delete from {$g5['point_table']} where mb_id = '$mb_id' ");

    // 그룹접근가능 삭제
    sql_query(" delete from {$g5['group_member_table']} where mb_id = '$mb_id' ");

    // 쪽지 삭제
    sql_query(" delete from {$g5['memo_table']} where me_recv_mb_id = '$mb_id' or me_send_mb_id = '$mb_id' ");

    // 스크랩 삭제
    sql_query(" delete from {$g5['scrap_table']} where mb_id = '$mb_id' ");

    // 관리권한 삭제
    sql_query(" delete from {$g5['auth_table']} where mb_id = '$mb_id' ");

    // 그룹관리자인 경우 그룹관리자를 공백으로
    sql_query(" update {$g5['group_table']} set gr_admin = '' where gr_admin = '$mb_id' ");

    // 게시판관리자인 경우 게시판관리자를 공백으로
    sql_query(" update {$g5['board_table']} set bo_admin = '' where bo_admin = '$mb_id' ");

    //소셜로그인에서 삭제 또는 해제
    if(function_exists('social_member_link_delete')){
        social_member_link_delete($mb_id);
    }

    // 아이콘 삭제
    @unlink(G5_DATA_PATH.'/member/'.substr($mb_id,0,2).'/'.$mb_id.'.gif');

    // 프로필 이미지 삭제
    @unlink(G5_DATA_PATH.'/member_image/'.substr($mb_id,0,2).'/'.$mb_id.'.gif');

    // 추가한 소스. 완전삭제.
    sql_query(" delete from {$g5['member_table']} where mb_id = '$mb_id' ");
}

댓글()

문자열 치환 정규식

Progmming/ASP|2019. 7. 26. 10:41
반응형

0-9 까지 숫자를 제거

Set eregObj = New RegExp: 
eregObj.Pattern = "[0-9]": 
eregObj.IgnoreCase = True: 
eregObj.Global = True: 
str = eregObj.Replace(str, ""):

 

..

댓글()

URL image convert to Base64 String

Progmming/.Net|2019. 5. 9. 09:59
반응형

웹상에 이미지를 Base64 인코딩해서 저장 할 때


VB.net

WebClient wc = new WebClient();
byte[] bytes = wc.DownloadData("https://k.kakaocdn.net/dn/r7sss/btquy1QuriI/TBzrcBzkzzj6SucXKqbYR0/img.png");

' Base64 인코딩
base64Str  = Convert.ToBase64String(bytes)


※ 참고 사이트


https://stackoverflow.com/questions/11801630/how-can-i-convert-image-url-to-system-drawing-image

댓글()

PHP 보안코딩 - Prepared Statements MYSQL 샘플 소스

Progmming/PHP|2019. 2. 13. 15:35
반응형

Prepared Statements MYSQL 샘플 소스코드

기본적으로 보안을 위해 사용한다고만 알고있었으나 


w3schools 자료를 보면 Prepared Statements 는 3가지 장점을 갖습니다.


  1. 준비된 명령문은 쿼리 준비가 한 번만 수행되므로 구문 분석 시간을 줄입니다 (명령문이 여러 번 실행 되더라도)

  2. 바인딩 된 매개 변수는 전체 쿼리가 아닌 매번 매개 변수 만 보내야하므로 서버 대역폭을 최소화합니다.

  3. Prepared statements는 나중에 다른 프로토콜을 사용하여 전송되는 매개 변수 값이 올바르게 이스케이프 될 필요가 없으므로 SQL injection에 매우 유용합니다. 원래 명령문 템플리트가 외부 입력에서 파생되지 않으면 SQL 삽입이 발생할 수 없습니다.
$dbconn = new mysqli("디비 주소", "아이디", "비번", "디비명");

if ($dbconn->connect_errno) {
    echo "Failed to connect to MySQL: (" . $dbconn->connect_errno . ") " . $dbconn->connect_error;
}

if (!$dbconn->query("DROP TABLE IF EXISTS test") ||
    !$dbconn->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$dbconn->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $dbconn->errno . ") " . $dbconn->error;
}


$stmt = $dbconn->prepare("select a,b,c from tbl where a like CONCAT('%',?,'%') ");
$id = "abc";

$stmt->bind_param('s', $id);
$stmt->execute();

$stmt->bind_result($a, $b, $c);


//$stmt->fetch();  

while ($stmt->fetch()) {
	echo $a ."//".$b."//".$c;
}


$stmt->close();
$dbconn->close();



참고 사이트 : 

https://www.w3schools.com

http://php.net

https://stackoverflow.com

https://ko.wikipedia.org

댓글()