[PHP] AES-256-CBC 를 이용한 암호화 및 복호화

프로그래밍/PHP|2022. 4. 11. 08:49
반응형

[코드]

<?PHP
$str = "서버나라 개발왕자";    // 전달할 문자열
$key = "server&develop";    // 암호화, 복호화 하는 부분에서 동일한 키 사용

$en_key = base64_encode(openssl_encrypt($str, 'aes-256-cbc', $key, true, str_repeat(chr(0), 16)));
echo $en_key . "<br>";

$de_key = openssl_decrypt(base64_decode($en_key), 'aes-256-cbc', $key, true, str_repeat(chr(0), 16));
echo $de_key;
?>

 

 

[결과]

eIgTU/2u8qsWmnVorxdDYwdxRN3DMfK8PThERSmkN/I=
서버나라 개발왕자

 

반응형

댓글()

PHP 에서 json 문자열을 예쁘게 출력하려면

프로그래밍/PHP|2021. 11. 11. 15:18
반응형

아래와 같이 header 에 json 타입을 명시해주고  json 문자열을 JSON_PRETTY_PRINT 옵션을 주어 decode, encode 하면 됩니다.

 

sysdocu.php

<?
header('Content-Type: application/json');    // 필수

$data = '{ "result": "success", "data":[ { "ip": "192.168.10.2", "os": "linux" }, { "ip": "192.168.10.3", "os": "windows" } ] }';

$result = json_encode(json_decode($data), JSON_PRETTY_PRINT);

echo $result;
?>

 

결과

{
    "result": "success",
    "data": [
        {
            "ip": "192.168.10.2",
            "os": "linux"
        },
        {
            "ip": "192.168.10.3",
            "os": "windows"
        }
    ]
}

 

반응형

댓글()

PHP 와 MySQL 연동 확인 소스

프로그래밍/PHP|2021. 11. 8. 13:40
반응형

아래는 MySQL 연결이 잘 되었는지 확인하는 소스 입니다.

PHP 8.0, MySQL 8.0 에서 테스트 시 정상 동작 하는것 확인했습니다.

 

# vi dbtest.php

<?php
$conn = mysqli_connect("192.168.2.10", "sysdocu", "12345678", "sysdocudb");
 
if ($conn) {
    echo "MySQL 연결 성공";
} else {
    echo "MySQL 연결 실패";
}
 
$result = mysqli_query($conn, "SELECT VERSION() AS VERSION");
$data = mysqli_fetch_assoc($result);
echo "<br>Version : " . $data['VERSION'];
?>

 

 

추가로 데이터를 가져오는 방법입니다.

한개 행의 데이터를 가져올때는 이런 식으로 사용하고,

 

$sql = "SELECT * FROM members WHERE id='$id' AND passwd='$passwd'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$name = $row['name'];

$id = $row['id'];

$passwd = $row['passwd'];

여러 행의 데이터를 가져올때는 while 문을 사용합니다.

 

$sql = "SELECT * FROM members WHERE id='$id' AND passwd='$passwd'";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_array($result)) {

        $name = $row['name'];
        $id = $row['id'];
        // 반복 출력
        echo $name . "<br>";
        echo $id . "<br>";
}

 

 

 

반응형

댓글()

PHP에서 JSON 배열 삭제

프로그래밍/PHP|2021. 10. 15. 15:39
반응형

PHP를 사용하여 JSON 파일에서 배열을 삭제하려고합니다.

PHP를 사용하여 배열 삭제를 설정하는 방법을 잘 모르겠습니다. jQuery 측면을 처리 할 수 ​​있습니다.

프론트 엔드에서 버튼을 클릭하면 해당 배열이 삭제됩니다.

  1. <button id="harry_0123">harry_0123</button>
  2. <button id="ben_0124">ben_0124</button>
  3.  

다음은 JSON 파일의 예입니다.

  1. {
  2. "harry_0123": {
  3. "id": "0123",
  4. "name": "harry",
  5. },
  6. "ben_0124": {
  7. "id": "0124",
  8. "name": "ben",
  9. },
  10. }
  11.  

다음은 PHP 예제입니다 :

  1. <?php
  2. $json_str = file_get_contents('doc/info.json');
  3.  
  4. $json_arr = json_decode($json_str, true);
  5.  
  6. if(!$json_arr) {
  7. $json_arr = array();
  8. }
  9. $json_str_done = json_encode($json_arr, JSON_PRETTY_PRINT);
  10. file_put_contents('doc/info.json', $json_str_done);
  11.  

 

[출처] https://www.python2.net/questions-1051494.htm

 

반응형

댓글()

PHP 에서 json 형식의 다차원 배열 값 읽고 출력하기

프로그래밍/PHP|2021. 10. 5. 07:25
반응형

PHP 에서 JSON 데이터를 파싱하는 방법이다.

JSON 데이터는 Local File 을 읽어오는 것과 Web 사이트에서 해당 URL 을 읽어오는 방법이 있다.

가장 먼저 파싱해야 할 데이터 형태 파악을 하는 코드부터 살펴보고자 구글링을 했더니 관련 코드가 있어서 주석을 좀 더 추가하고 이해를 돕는 걸 첨가하여 적어둔다.

 

 <?php
// Web JSON 파일 읽어오기
$url = 'http://ip주소/getFileList.php';
$json_string = file_get_contents($url);

// Local JSON 파일 읽어오기
//$json_string = file_get_contents('weather.json');
// 다차원 배열 반복처리
$R = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json_string, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);
// $R : array data
// json_decode : JSON 문자열을 PHP 배열로 바꾼다
// json_decode 함수의 두번째 인자를 true 로 설정하면 무조건 array로 변환된다.

foreach ($R as $key => $val) {
    if(is_array($val)) { // val 이 배열이면
        echo "$key:<br/>";
        //echo $key.' (key), value : (array)<br />';
    } else { // 배열이 아니면
        echo "$key => $val <br />";
    }
}
?>

 

위 코드로 형태파악을 한 다음에 필요한 것을 파싱처리하면 된다.

 

Local JSON 파일을 읽어서 처리하는 걸 예제로 보자.

 [
    {
        "firstName": "길동",
        "lastName": "홍",
        "email": "jdhongv@gmail.com",
        "mobile": "010-1234-1111"
    },
    {
        "firstName": "민아",
        "lastName": "김",
        "email": "minakim@gmail.com",
        "mobile": "010-1234-3333"
    },
    {
        "firstName": "진주",
        "lastName": "마",
        "email": "jjmah@gmail.com",
        "mobile": "010-1234-5555"
    },
    {
        "firstName": "서영",
        "lastName": "이",
        "email": "sylee@gmail.com",
        "mobile": "010-1234-7777"
    }
]

 

<?php
// Local JSON 파일 읽어오기
$json_string = file_get_contents('data.json');
$R = json_decode($json_string, true);
// json_decode : JSON 문자열을 PHP 배열로 바꾼다
// json_decode 함수의 두번째 인자를 true 로 설정하면 무조건 array로 변환된다.
// $R : array data



foreach ($R as $row) {
    print $row['lastName'];
    print $row['firstName'];
    print ' , ';
    print $row['email'];
    print ' , ';
    print $row['mobile'];
    print '<br />';
}
?> 

 

결과

홍길동 , jdhongv@gmail.com , 010-1234-1111
김민아 , minakim@gmail.com , 010-1234-3333
마진주 , jjmah@gmail.com , 010-1234-5555
이서영 , sylee@gmail.com , 010-1234-7777

 

조금 더 복잡한 JSON 파일을 검색한 걸 테스트한다.

{
    "name": "홍길동",
    "alias": "LInk",
    "members": [
        "소원",
        "예린",
        "은하",
        "유주",
        "신비",
        "엄지"
    ],
    "albums": {
        "EP 1집": "Season of Glass",
        "EP 2집": "Flower Bud",
        "EP 3집": "Snowflake",
        "EP 4집": "THE AWAKENING"
    }
}

 

파싱하는 코드를 두가지로 테스트해보면 print_r 에서 결과를 다르게 보여준다.

<?php
// JSON 파일 읽어오기
$json_string = file_get_contents('weather.json');
// 다차원 배열 반복처리
$R = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json_string, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);
// $R : array data
// json_decode : JSON 문자열을 PHP 배열로 바꾼다
// json_decode 함수의 두번째 인자를 true 로 설정하면 무조건 array로 변환된다.

print_r($R);
echo '<br />';

foreach ($R as $key => $val) {
    if(is_array($val)) {
        echo "$key:<br/>";
    } else {
        echo "$key => $val<br/>";
    }
}
?>
<?php
// Local JSON 파일 읽어오기
$json_string = file_get_contents('weather.json');
$R = json_decode($json_string, true); //
// $R : array data
// json_decode : JSON 문자열을 PHP 배열로 바꾼다
// json_decode 함수의 두번째 인자를 true 로 설정하면 무조건 array로 변환된다.

print_r($R); // 배열 요소를 출력해준다.
echo '<br />';
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>PHP JSON parser sample</title>
    </head>

    <body>
        <h3 id="gname">
        <?php
            echo $R['name'];
            if (array_key_exists('alias', $R))
                printf(" (%s)", $R['alias']);
        ?>
        </h3>
        <p>멤버 구성: <span id="members">
            <?php echo implode(', ', $R['members']);?></span>
        </p>
        <h3>앨범 목록</h3>
        <ul id="albums">
        <?php
            foreach ($R['albums'] as $key => $value) {
                printf("<li>%s: %s</li>\n", $key, $value);
            }
            ?>
        </ul>
    </body>
</html>


출처: https://link2me.tistory.com/1408 [소소한 일상 및 업무TIP 다루기]

 

참고 : 배열에 배열 추가


$arrs = array();                  // 전체 배열을 준비하고
array_push($arrs, $arr)); //$arr 배열을 배열에 넣는다 (다차원 배열)

반응형

댓글()

PHP 에서 MySQL 데이터 불러오기 두가지 (한줄, 여러줄)

프로그래밍/PHP|2021. 7. 22. 14:43
반응형

[ 레코드가 한줄일때 ]

 

$conn = mysqli_connect('localhost', 'sysdocu', '12345678', 'sysdocuDB');

$query = "SELECT AVG(age) AS AVG FROM list";
$result = mysqli_query($conn, $query);
$one = mysqli_fetch_array($result);

echo $one['AVG'];

 

 

[ 레코드가 여러줄일때 ] 

 

$conn = mysqli_connect('localhost', 'sysuser', '12345678', 'sysdb');

$query = "SELECT code FROM list";
        if ($result = mysqli_query($conn, $query)) {
                while ($row = mysqli_fetch_row($result)) {
                              echo $row[0];
                              echo $row[1];

                              echo $row[2];

                }
        }

 

반응형

댓글()

td 에서 두가지 배경색 사용하기

반응형

테이블 td 에서 배경을 두가지 색상으로 채우고 싶을때 아래와 같이 사용하면 됩니다.

 

<td style="background:linear-gradient(to right, #e6def7 0%, #e6def7 20%, #ffffff 20%, #ffffff 100%)">
    두가지 배경색 입니다. 왼쪽부터 20% 부분만 #e6def7 색상을 사용하고 나머지는 흰색입니다.
</td>

 

부드럽게 색상이 바뀌는 그라데이션 방법은 별도 포스팅을 참고하세요.

https://sysdocu.tistory.com/1522

 

반응형

댓글()

[JavaScript] checkbox 선택시 바로 이벤트 발생

반응형
<html>
<head>
<title>checkbox</title>
<meta charset="utf-8">
<script>
function check(box){
    if(box.checked == true)
        window.status = box.value + " 드라이브를 체크했습니다." //브라우저의 상태표시줄에 표시
    else
        window.status = box.value + " 드라이브의 체크를 해제했습니다."
}
</script>
</head>
<body>
<h2>드라이브 선택</h2>
<form>
    <input type=checkbox value="C" onClick="check(this)">C 드라이브<br>
    <input type=checkbox value="D" onClick="check(this)">D 드라이브<br>
    <input type=checkbox value="E" onClick="check(this)">E 드라이브<br>
    <input type=checkbox value="F" onClick="check(this)">F 드라이브<br>
</form>
</body>
</html>

 

[출처] https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=smilebanner88&logNo=220774452959

 

반응형

댓글()

파이썬 정규표현식을 이용한 문자 치환하기

프로그래밍/Python|2021. 7. 5. 16:38
반응형

[코드]

import re

str = "아무개 (010-1111-2222)"

result = re.sub(".*\(|\)", "", str)

print(result)

 

 

[결과]

010-1111-2222

 

 

* 해설

re.sub(첫번째, 두번째, 세번째) 칸의 의미

- 첫번째 : 찾을 문자열 (버티컬바 | 로 구분하면 '또는' 이라는 의미이므로 여러개의 문자열을 찾을 수 있습니다.)

- 두번째 : 변경될 문자열 (예제에서는 빈칸)

- 세번째 : 문자열 변수

 

반응형

댓글()

파이썬 show() 로 출력되는 화면을 이미지 파일(png, pdf)로 저장하기

프로그래밍/Python|2021. 7. 5. 08:58
반응형

from matplotlib import pyplot as plt

plt.savefig('foo.png')

plt.savefig('foo.pdf')

 

[출처] https://stackoverflow.com/questions/9622163/save-plot-to-image-file-instead-of-displaying-it-using-matplotlib

반응형

댓글()

JavaScript 에서 refresh 없이 PHP 파일 실행하기

반응형

먼저 아래를 선언한 뒤에

<script id="dynamic"></script>
<script> 
function add() {
        dynamic.src = "modify.html?action=add";
}
</script>

 

이렇게 호출하면 됩니다.

<a href="JavaScript:add()">[추가]</a>

 

반응형

댓글()