https://code.google.com/archive/a/apache-extras.org/p/phpmailer    다운로드


<?php


use PHPMailer\PHPMailer\PHPMailer;

use PHPMailer\PHPMailer\Exception;


require_once('./lib/PHPMailer-master/src/Exception.php');

require_once('./lib/PHPMailer-master/src/PHPMailer.php');

require_once('./lib/PHPMailer-master/src/SMTP.php');


$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch


$mail->IsSMTP(); // telling the class to use SMTP


try {


    $mail->Host = "smtp.gmail.com"; // email 보낼때 사용할 서버를 지정

    $mail->SMTPAuth = true; // SMTP 인증을 사용함

    $mail->Port = 465; // email 보낼때 사용할 포트를 지정

    $mail->SMTPSecure = "ssl"; // SSL을 사용함

    $mail->Username   = "test@gmail.com"; // Gmail 계정

    $mail->Password   = "password"; // 패스워드

    $mail->SMTPDebug = 2;

    $mail->CharSet = "utf-8";  //한글깨짐 방지를 위한 문자 인코딩설정

    $mail->SetFrom('test@gmail.com', 'TESTER'); // 보내는 사람 email 주소와 표시될 이름 (표시될 이름은 생략가능)

    $mail->AddAddress('test@naver.com', '받는사람'); // 받을 사람 email 주소와 표시될 이름 (표시될 이름은 생략가능)

    $mail->Subject = 'Email test'; // 메일 제목

    $mail->MsgHTML("mail test"); // 메일 내용 (HTML 형식도 되고 그냥 일반 텍스트도 사용 가능함)


    $mail->Send();


    echo "Message Sent OK";


}catch (phpmailerException $e) {

    echo $e->errorMessage(); //Pretty error messages from PHPMailer

} catch (Exception $e) {

    echo $e->getMessage(); //Boring error messages from anything else!

}

 ?>



// 페이지 네이션

$cnt = (!empty($res->num_rows))?$res->num_rows:"0";  //총 행의 수

$display = 10;          //한페이지에 보여질 데이터의 수

$block_page = 10;       //한 페이지블록에 보여질 페이지 수


$total_page = ceil($cnt/$display);        //총페이지의 수

$total_block = ceil($total_page/$block_page);        //총블록 수


$now_page = (!empty($_REQUEST['page'])?$_REQUEST['page']:1);

$now_block = ceil($now_page/$block_page);


$start_page = $now_block*$block_page - ($block_page-1);

if($start_page <= 1){

    $start_page = 1;

}


$end_page = $now_block*$block_page;

if($end_page >= $total_page){

    $end_page = $total_page;

}


$qry = "SELECT rp.*,tp.sale_whole,tp.name,tp.sale_rate,tp.real_price

        FROM rose_shop.tqi_product AS rp

      

        LIMIT ".(($now_page-1)*$display).",".$display;


<div class="container">

            <form class="myform" action="<?php echo $_SERVER['PHP_SELF']?>" method="GET">

                <input type="hidden" name="page" value="">

            </form>

            <nav style="text-align:  center;">

                <ul class="pagination">

                    <li>

                        <a href="javascript:void(0);" onclick="page(1)" aria-label="Previous">

                            <span aria-hidden="true">&laquo;</span>

                        </a>

                        <a href="javascript:void(0);" onclick="page(<?php echo ($start_page<=1?1:$start_page-1);?>)" aria-label="Previous">

                            <span aria-hidden="true">이전</span>

                        </a>

                    </li>

            <?php

            for ($i=$start_page; $i <= $end_page; $i++) {

            ?>

                    <li><a href="javascript:void(0);" onclick="page(<?php echo $i;?>)" <?php if($now_page == $i)echo "style='color:red'";?>><?php echo $i;?></a></li>

            <?php

            }

             ?>

                    <li>

                        <a href="javascript:void(0);" onclick="page(<?php echo ($end_page>=$total_page?$total_page:$end_page+1);?>)" aria-label="Next">

                            <span aria-hidden="true">다음</span>

                        </a>

                        <a href="javascript:void(0);" onclick="page(<?php echo $total_page;?>)" aria-label="Next">

                            <span aria-hidden="true">&raquo;</span>

                        </a>

                    </li>

                </ul>

            </nav>

        </div>


function page(i) {

        $("input[name=page]")[0].value = i;

        $('.myform')[0].submit();

    }

1. 덤프뜨기 


$> mysqldump -u[사용자아이디] -p 데이터베이스명 [테이블명] > 저장될 파일명 

예) mysqldump -ukamkami -p mydatabase > kamkami.pe.kr.sql 

이렇게 하면 디비(mydatabase)를 몽땅 덤프를 뜨게된다. 

테이블만 덤프를 뜨고 싶다면 

예) mysqldump -ukamkami -p mydatabase member_table > kamkami.pe.kr.member_table.sql 

이렇게 하면 테이블만 덤프를 뜰 수 있다. 

2. 복구하기 

덤프 파일을 가지고 복구를 하는 방법도 간단하다. 
$> mysql -u[사용자아이디] -p [디비명] < 덤프파일명 

예) mysql -ukamkami -p < kamkami.pe.kr.sql 
예) mysql -ukamkami -p mydatabase < kamkami.pe.kr.member_table.sql 



추가팁)

https://cigiko.cafe24.com/terminal-%EC%97%90%EC%84%9C-mysql-%EC%A0%91%EC%86%8D%ED%95%98%EC%97%AC-%EB%8C%80%EC%9A%A9%EB%9F%89-sql-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%84%9C%EB%B2%84-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4/



source명령어의 파일명을 쓸때는 반드시 "\"대신에 "/"를 써주어야된다.


폴더명에 한글이름이 있을경우 실행되지않음을 확인.

php를 이용하여 file을 로컬저장소에 저장하기



간단한 예제 소스입니다.

<?php $file_name = 'msg.txt'; // 저장될 파일 이름 $file = './text/msg.txt'; // 파일의 전체 경로 header('Content-type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $file_name . '"'); header('Content-Transfer-Encoding: binary'); header('Content-length: ' . filesize($file)); header('Expires: 0'); header("Pragma: public"); $fp = fopen($file, 'rb'); fpassthru($fp); fclose($fp); ?>


사용법은 위의 소스코드를 file_down.php 등의 파일로 만들어 두고 

버튼이나 <a> 태그로 눌렀을때 file_down.php 로 이동하게 만들면 화면은 로드되지 않고 바로 파일 다운을 실행합니다.




디렉토리는 이렇게 구성하였습니다. 'text' 폴더안에 msg.txt 파일이 존재합니다.


test.php 에는 file_down.php 를 실행하기 위한 <a>태그만 하나 만들어줍니다.



링크를 누르게 되면 file_down.php 를 실행하게 되고 자동으로 파일이 지정된 폴더로 다운로드 되게 됩니다.



저장 폴더위치는 브라우저 설정에서 변경 할 수 있으며 '크롬' 의 경우 chrome://settings/  -> 고급 -> 다운로드에서 위치를 변경하면 됩니다.



HTML 에서 <input>으로 입력을 받을때 자동커서, Enter 치면 다음 <input>으로 커서를 넘기는

autofocus : 문서가 로드되면 autofocus 가 설정된 <input>에 자동focus를 준다.

required : required 가 설정된 <input>에 입력값이 없을때 <form>을 submit하게 되면 해당 <input>으로 focus를 넘긴다.




간단한 입력 <form>을 작성하여 autofocus 속성과 required 속성이 작동하는걸 보겠습니다.

 
         <form class="" action="index.html" method="post">
            <label for="">A</label>
            <input type="text" required="true" autofocus=""><br />
            <label for="">B</label>
            <input type="text" required=""><br />
            <label for="">C</label>
            <input type="text" required=""><br />
            <label for="">D</label>
            <input type="text" required="">
            <button type="submit" name="button">전송</button>
        </form>
 

autofocus 속성을 첫번째 <input>에 설정을 해준후 문서를 로드하면 자동으로 커서가 깜빡이는 모습입니다.


required 속성을 세번째 <input>에 설정한후 값을 모두 입력하고 '전송'을 하게 되면 <form>설정된 주소로 값을 보내게 됩니다. 

(index.html은 현재폴더에 만들어 두지않아서 Not Found오류가 발생하였습니다.)


만약 세번째 <input>에 값이 비워진상태에서 '전송'을 하게 되면 경고문구와 함께 해당 <input>으로 커서가 이동하게 됩니다.


이 두가지 속성을 모르고 <form>을 작업할때는 자바스크립트로 조금 복잡하게 코딩을 했었는데 찾아보니 

<input> 태그안에서 간단하게 속성만으로 동작할 수 있게 

회원가입이나 로그인 여러 필수 정보를 입력받는 <form>태그에서 두가지 속성 만으로도 편하게 구현이 가능할 것 같습니다.



+ Recent posts