[PHP] 배열인지 아닌지를 확인하는 is_array() 함수[PHP] 배열인지 아닌지를 확인하는 is_array() 함수

Posted at 2019. 2. 21. 10:40 | Posted in PHP
반응형




■ 해당 변수가 배열인지 아닌지를 체크하는 is_array( ) 함수




# 소스 코드

<?php

$idol = array(

  "twice" => "sana"

, "redvelvet" => "wendy"

, "lovelyz" => "kei"

, "momoland" => "dasiy"

);

// is_array는 배열인 경우 1을 리턴한다.

if(is_array($idol) == 1) {

echo "$idol은 배열입니다.";

} else {

echo "$idol은 배열이 아닙니다.";

}

?> 




# 출력 결과







반응형
//

[PHP] DB 입력 or 출력시 따옴표(') 처리하기[PHP] DB 입력 or 출력시 따옴표(') 처리하기

Posted at 2018. 10. 2. 09:46 | Posted in PHP
반응형




addslashes, stripslashes 함수를 이용한 따옴표 처리



PHP에서 문자열에 따옴표 큰 따옴표( " ), 작은 따옴표( ' )가 들어간 내용을 DB에 입력 및 출력시 addslashesstripslashes 함수를 사용한다.

그런데 HTML에 값을 직접 넣지 않고, PHP에서 echo등을 통해 직접 출력하는 경우 문제가 생겨 간단히 정리하고자 한다.


 ① addslashes : 문자열에 따옴표가 삽입된 경우 문자열 앞에 역슬래쉬(\')를 기호를 붙여 사용한다.

 ② stripslashes : addslashes를 사용한 해당 문자열의 역슬래쉬(\') 기호를 제거한다.


단순하지만 아래 출력 코드와 같이 PHP콛 상에서 input 태그에 값을 넣어 사용하는 경우는 아래와 같이 처리하면 된다.




# 소스코드

<?php
    // 테스트할 따옴표가 들어간 문구
    $str = "Rockin' In Rhythm";

    echo $str;
    echo "<br/><hr/><br/>";

    // addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')
    echo "addslashes : ".addslashes($str);
    echo "<br/><hr/><br/>";

    // stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')
    echo "stripslashes  : ".stripslashes($str);
    echo "<br/><hr/><br/>";

    // value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.
    echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>

<?

// 테스트할 따옴표가 들어간 문구

$str = "Rockin' In Rhythm";


echo $str;

echo "<br/><hr/><br/>";


// addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')

echo "addslashes : ".addslashes($str);

echo "<br/><hr/><br/>";


// stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')

echo "stripslashes  : ".stripslashes($str);

echo "<br/><hr/><br/>";


// value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.

echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>



출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방]

<?

// 테스트할 따옴표가 들어간 문구

$str = "Rockin' In Rhythm";


echo $str;

echo "<br/><hr/><br/>";


// addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')

echo "addslashes : ".addslashes($str);

echo "<br/><hr/><br/>";


// stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')

echo "stripslashes  : ".stripslashes($str);

echo "<br/><hr/><br/>";


// value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.

echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>



출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방]

<?

// 테스트할 따옴표가 들어간 문구

$str = "Rockin' In Rhythm";


echo $str;

echo "<br/><hr/><br/>";


// addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')

echo "addslashes : ".addslashes($str);

echo "<br/><hr/><br/>";


// stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')

echo "stripslashes  : ".stripslashes($str);

echo "<br/><hr/><br/>";


// value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.

echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>



출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방]




# 출력결과




위와같이 input 태그에 value 값으로 넣을경우 \\ 으로 해결할 수 있었다.


단순한 실수 이지만, 생각 이상으로 시간을 잡아먹었던 경우라 정리해 둔다.





반응형
//

[PHP] 변수 or 배열의 정보를 표기하는 함수[PHP] 변수 or 배열의 정보를 표기하는 함수

Posted at 2018. 9. 17. 09:58 | Posted in PHP
반응형




■ 변수나 배열의 값을 문자열로 출력해주는 함수





#01. 변수 or 배열의 값을 사람이 읽기 편하게 출력하는 print_r



# 소스코드

<?php
    $varable = array(
          "본명" => "미나토자키 사나"
        , "출생" => "1996년 12월 29일 오사카 부 오사카시 텐노지 구"
        , "나이" => 21
        , "국적" => "일본"
        , "취미" => "바디미스트 & 향수 모으기, 쇼핑, 먹기"
        , "특기" => "서예, 한국어"
        , "좌우명" => "언제나 앞만보고!!"
    );

    echo "<pre>";
    print_r($varable);
    echo "</pre>";
?>



# 출력결과






#02. 변수 or 배열 값의 속성정보까지 표기하는 var_dump



# 소스코드

<?php
    $varable = array(
          "본명" => "손승완"
        , "출생" => "1994년 02월 21일 서울특별시 성북구"
        , "나이" => 24
        , "국적" => "대한민국"
        , "취미" => "베이킹, 영수증 모으기"
        , "특기" => "춤?"
    );

    echo "<pre>";
    var_dump($varable);
    echo "</pre>";
?>



# 출력결과





#03. 변수 or 배열 처리가능한 문장열로 출력하는 var_export



# 소스코드

<?php
    $varable = array(
          "본명" => "유정안"
        , "출생" => "1999년 01월 22일 서울특별시 중구"
        , "나이" => 19
        , "국적" => "대한민국"
        , "취미" => "영화감상, 쇼핑"
        , "특기" => "영어회화, 발레"
    );

    echo "<pre>";
    var_export($varable);
    echo "</pre>";
?>



# 출력결과






반응형
//

[PHP] mcrypt 방식 OpenSSL 방식으로 대체하기[PHP] mcrypt 방식 OpenSSL 방식으로 대체하기

Posted at 2018. 8. 30. 10:56 | Posted in PHP
반응형





참고 : https://www.codegrepper.com/code-examples/php/encrypted+and+decrypted+in+php

참고 : https://gracefullight.github.io/2017/07/07/PHP-7-1에서-mcrypt-대체하기/





실제 업무중 API 연결과정정중에 문제가 발생하였다.


보안문제로 mcrypt 방식은 사용하지 않기로 하였기때문에 OpenSSL 방식으로 대체하여 해결 하였고.


그 방법은 아래와 같다.




# 암호화(Encrypt)


mcrypt 방식

 $output = mcrypt_encrypt (MCRYPT_RIJNDAEL_128, $key, $val, MCRYPT_MODE_CBC, str_repeat (chr (0), 16));



    /**
    * AES256 암호화 *
    * @param unknown $key 암호화키
    * @param unknown $value 전달받은 데이터
    * @return string
    */






$output = openssl_encrypt(pkcs5_unpad($val), "AES-256-CBC", $key, OPENSSL_RAW_DATA, str_repeat(chr(0), 16));




---------------------------------------------------------------------------------------------------------------




$output = openssl_encrypt(pkcs5_unpad($value), "AES-256-CBC", $key, OPENSSL_RAW_DATA, str_repeat(chr(0), 16));


---------------------------------------------------------------------------------------------------------------


    /**
    * AES256 복호화 *
    * @param unknown $key 복호화 키
    * @param unknown $value 전달받은 데이터
    * @return string
    */


$output = pkcs5_pad(openssl_decrypt($value, "AES-256-CBC", $key, OPENSSL_RAW_DATA, str_repeat(chr(0), 16)));



-----------------------------------------------------------------------------------------------------------------



    /**
    * 패딩 알고리즘
    * mcrypt방식에서 openssl 방식으로 변환을 위한 추가 함수
    */
    function pkcs5_pad($text, $blocksize = 16) {
        $pad = $blocksize - (strlen($text) % $blocksize);
        return $text.str_repeat(chr($pad), $pad);
    }

    function pkcs5_unpad($text) {
        $pad = ord($text{strlen($text)-1});
        if($pad > strlen($text)) {
            return $text;
        }
        if(!strspn($text, chr($pad), strlen($text) - $pad)) {
            return $text;
        }
        return substr($text, 0, -1 * $pad);
    }






반응형
//