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>태그에서 두가지 속성 만으로도 편하게 구현이 가능할 것 같습니다.



cmd(명령프롬프트)창에서 MySQL 접속하기

서버에 있는 DB를 로컬로 가져오는 작업을 하려는데 phpMyAdmin은 가져오기 제한이 80MB 여서 검색하고 방법을 찾아 php.ini를 수정하고 했지만 재대로 가져오지 못했습니다....ㅠ
cmd에서 가져오기를 하는 방법이 있길래 도전해보았는데 MySQL접속에서도 오류가 나네요 검색을 통해 방법을 찾았습니다.



일반적인 접속방법은
'window키 + R' 로 실행 창이 뜨면 'cmd' 를 입력후 Enter



cmd 화면에서 'mysql -u root -p' 를 입력하고 Enter

그런데 위와 같이 password를 입력하라고 뜨지않고 



이런 화면이 보인다면 접속이 정상적으로 이루어지지 않은 것이에요.

시스템이 mysql이 어디에 설치되있는지 모르는 것이죠. 경로를 등록 해줘야합니다.



바탕화면이나 시작부분에서 '컴퓨터' 를 우클릭 -> '속성'



컴퓨터 속성창에서 '고급 시스템 설정' 메뉴가 보이실거에요.

저는 윈도우7을 사용중이 지만 윈도우10도 비슷할거에요.



'고급' 탭으로 이동후 '환경 변수' 를 눌러주세요.



사용자 변수에서 'Path'를 선택해주시고 '편집'을 눌러줍니다.




편집메뉴에서 기존에 있던 경로값 뒤에  세미콜론( ; ) 을 붙이고 

MySQL이 설치된 경로의 bin 폴더에 가셔서 경로를 복사해 옵니다.

그리고 세미콜론( ; ) 뒤에 붙여넣기 해주시고 확인!


설정이 모두 끝났습니다.


처음으로 돌아가 다시 명령어를 실행시켜보면



위와 같은 화면이 뜨면서 mysql> 이라는 시작부분이 보인신다면 접속이 정상적으로 된 것 입니다.

'Development > MySQL' 카테고리의 다른 글

mysql cmd에서 sql파일 덤프 용량 제한 x  (1) 2018.05.04

in_array("찾을 값", 배열)

첫번째 인자로 들어온 값을 두번째 인자 배열안에서 찾고 찾으면 true 아니면 false 를 반환




<?php

$array = array("빨강","주황","노랑","초록","파랑","남색","보라");


if(in_array("빨강",$array)){

    echo "빨강은 '무지개색' 입니다.";

}


echo "<br>";


$color = "핑크";


if(!in_array($color,$array)){   //배열에서 '핑크'는 없기때문에 false 를 반환합니다. ! 으로 부정을 취해 if문 실행

    echo $color."는 '무지개색' 이 아닙니다.";

}

?>




ucfirst("문자열" or 변수)

반환값은 ucfirst의 인자로 입력한 문자열의 '첫글자'를 대문자로 변경한 문자열이 반환됩니다.




<?php

$str = "aBCDEFG";


echo $str;  //ucfirst 를 사용하지않은 상태

echo "<br>";


echo ucfirst($str);  //변수 $str을 인자로 ucfirst를 사용

echo "<br>";


echo ucfirst("hello");  //ucfirst의 인자로 문자열 사용

echo "<br>";


$str = ucfirst("world"); //ucfirst의 반환값을 변수에 담아 출력

echo $str;

echo "<br>";

?>






<?php

$mysqli = new mysqli('127.0.0.1', 'root', '******', 'DB명');


header( "Content-type: application/vnd.ms-excel; charset=utf-8");

header( "Content-Disposition: attachment; filename = excel_test.xls" );     //filename = 저장되는 파일명을 설정합니다.

header( "Content-Description: PHP4 Generated Data" );


//엑셀 파일로 만들고자 하는 데이터의 테이블을 만듭니다.


$EXCEL_FILE = "

<table border='1'>

    <tr>

       <td>사용자ID</td>

       <td>이름</td>

       <td>성</td>

       <td>E-mail</td>

       <td>Phone</td>

    </tr>

";


$qry = "SELECT * FROM `컬럼명` LIMIT 20";

$res = $mysqli->query($qry);


// DB 에 저장된 데이터를 테이블 형태로 저장합니다.


while ($row = $res->fetch_object()) {

$EXCEL_FILE .= "

    <tr>

       <td>".$row->사용자ID."</td>

       <td>".$row->이름."</td>

       <td>".$row->성."</td>

       <td>".$row->E-mail."</td>

       <td>".$row->Phone."</td>

    </tr>

";

}


$EXCEL_FILE .= "</table>";


// 만든 테이블을 출력해줘야 만들어진 엑셀파일에 데이터가 나타납니다.


echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>";

echo $EXCEL_FILE;

?>




위에 PHP 파일이 저장된 루트 URL로 접속시 바로 파일저장 팝업이 뜨고 파일저장 후 

엑셀파일을 실행시키면 데이터가 잘 저장된 것을 확인 할 수 있습니다.



header 부분은 데이터를 엑셀파일로 내보내는 형식을 지정하며 

하단에 <meta> 태그는 엑셀파일에서 출력되는 데이터의 타입을 지정합니다. 

두가지 부분은 필수!! 



+ Recent posts