구글 설문지를 사용하던중에, 구글 로그인 없이는 사용이 불가한 것을 알게되었다.

 

그러다 구글 로그인 없이 구글 드라이브 업로드를 찾아보다가 좋은 것을 발견했다!


https://www.labnol.org/internet/file-upload-google-forms/29170/


해당 사이트가서 영상을 보고, 그대로 따라하면 정말로 쉽게 설문지와 같은 폼을 만들 수 있고, 구글 업로드도 가능하다.


단, 구글 드라이브 용 파일 업로드 양식을 장기간 사용하려면 라이센스가 필요하다.

기본버전은 무료이다.

add_action(액션훅)과 add_filter(필터훅)의 차이점은 "실행 시점"과 "용도"에 있다.


add_action 은 워드프레스 내부의 이벤트가 발생할때 실행

ex) 글을 등록하거나 댓긍르 달때 이를 후킹하여 임의의 함수를 호출할 수 있다.


add_filter 은 DB에 저장하거나 화면에 출력하기 전에 콘텐츠 내용을 변경할 때 사용

ex) 포스트나 페이지 내용을 가져와서 화면 출력 전에 콘텐츠를 변경할 수 있다,


=====================================================


add_action : 워드프레스 이벤트 발생 시


[액션훅(add_action) 예제]


1
2
3
4
5
6
<?php
function new_email_comment() {
    wp_mail('test@naver.com''test''<p>TEST massage </p>');
}
add_action('comment_post','new_email_comment');
?>


댓글이 달리면 new_email_comment() 함수를 호출하여 메일을 발송한다.

자주 사용하는 액션훅은 다음과 같다.


* publish_post : 새로운 포스트가 발행될 때

* create_category : 새로운 카테고리가 생성될 때

* switch_theme : 테마를 변경할 때


====================================================


add_filter : 매체에 저장하거나 화면 출력하기 전 콘텐츠 변경


[필터훅(add_filter) 예제]


1
2
3
4
5
6
7
8
<?php
function replace_content($content) {
    $content = str_ireplace('ABC''CBA' , $content);
    return $content
}
add_filter('the_content''replace_content');
?>



콘텐츠가 화면에 출력되기 전, 더 정확히 the_post() 함수를 처리하는 중에 호출되어 문자열을 변경한다.

DB는 변경하지 않으며 화면 출력만 바뀐다.


자주 사용되는 필터훅은 다음과 같다


* the_content : 포스트나 페이지의 콘텐츠가 출력될 때

* the_title : 포스트나 페이지의 제목이 출력될 때

* comment_text : 댓글이 출력될 때

* wp_title : 페이지 제목이 출력될 때



더 자세한 정보는 codex 사이트를 참조한다!

test.html

1
2
3
4
    <form id="uploadForm" method="post" enctype="multipart/form-data" action="excel_upload.php">
        <input name="uploadFile" id="uploadFile" type="file" />
        <input type="submit" name="action" value="Upload" />
    </form>
cs
 
excel_upload.php

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
?php
include $_SERVER["DOCUMENT_ROOT"]."/func/PHPExcel/PHPExcel.php";
 
//-- 읽을 범위 필터 설정
$rangeArr = range('A','L');
class MyReadFilter implements PHPExcel_Reader_IReadFilter
{
    public function readCell($column$row$worksheetName = '') {
        global $rangeArr;
        // Read rows 1 to 7 and columns A to E only
        if (in_array($column,$rangeArr)) {
            return true;
        }
        return false;
    }
}
$filterSubset = new MyReadFilter();
 
$filename = 'test.xlsx';
$upfile_path = './' . $filename;
$path = pathinfo($filename);
$UpFileExt = strtolower($path['extension']);
$inputFileType = '';
 
//파일 타입 설정 (확자자에 따른 구분)
if($UpFileExt == "xls") {
    $inputFileType = 'Excel5';    
}elseif( $UpFileExt == 'xlsx' ){
    $inputFileType = 'Excel2007';
}
 
 
if( file_exists ($upfile_path&& $inputFileType ) {
 
 
    //엑셀리더 초기화
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
 
    //데이터만 읽기(서식을 모두 무시해서 속도 증가 시킴)
    $objReader->setReadDataOnly(false);    
 
    //범위 지정(위에 작성한 범위필터 적용)
    $objReader->setReadFilter($filterSubset);
 
    //업로드된 엑셀 파일 읽기
    $objPHPExcel = $objReader->load($upfile_path);
 
    //첫번째 시트로 고정
    $objPHPExcel->setActiveSheetIndex(0);
 
    //고정된 시트 로드
    $objWorksheet = $objPHPExcel->getActiveSheet();
 
    //시트의 지정된 범위 데이터를 모두 읽어 배열로 저장
    $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
    $total_rows = count($sheetData);
 
//echo "<pre>";print_r($sheetData);echo "</pre>\n";
 
    $kk = 0;
    echo '<table border="1" cellpadding="0" cellspacing="0" width="100%">';
    foreach($sheetData as $rows) {
        if$kk ==0 ){
            echo '<tr>';
            foreach( $rangeArr as $key=>$val ){
                echo '<td>'.$rows[$val].'</td>';            }
            echo '</tr>';
        }else{
            echo '<tr>';
            foreach( $rangeArr as $key=>$val ){
                echo '<td>'.$rows[$val].'</td>';
            }
            echo '</tr>';
        }
 
        $kk++;
    }//end foreach
    echo '</table>';
 
}else{
    echo 'Error!!';
}
 
?>
 
 
 
cs




+ Recent posts