[CodeIgniter] 컨트롤러(Controllers) 사용방법[CodeIgniter] 컨트롤러(Controllers) 사용방법

Posted at 2019.07.31 16:39 | Posted in PHP/CodeIgniter




참고 : http://www.ciboard.co.kr/user_guide/kr/general/controllers.html





■ 컨트롤러란 무엇인가?



컨트롤러는 URL과 상호작용하는 클래스 파일이라고 할 수 있다.


파일명(File.php)과 클래스(File)명의 첫글자는 항상 대문자 이여야 한다.


클래스명은 컨트롤러 파일명과 동일해야 한다.



 ./application/controllers/Blog.php

<?php

if(!defined("BASEPATH")) { exit("No direct script access allowed"); }


class Blog extends CI_Controller {

public function index() {

echo "사악미소의 현대마법의 IT공방";

}

}


/* END of file Blog.php */

/* Location : ./application/controllers/Blog.php */




# 출력결과 : http://code-igniter.com/index.php/blog/










■ 함수 호출하기




이전 예제에서 호출된 함수는 index( )였는데, index( ) 함수는 URI에서 두번째 새그먼트가 전달되지 않은 경우 기본적으로 실행이 된다.


이번에는 URI에 새그먼트 값을 추가하여 Blog라는 클래스에 comments( )라는 함수를 호출해 보자.


 ./application/controllers/Blog.php

<?php

if(!defined("BASEPATH")) { exit("No direct script access allowed"); }


class Blog extends CI_Controller {

public function index() {

echo "사악미소의 현대마법의 IT공방";

}

public function comments() {

echo "방문해 주셔서 감사합니다";

}

}


/* END of file Blog.php */

/* Location : ./application/controllers/Blog.php */




# 출력결과 : http://code-igniter.com/index.php/blog/comments




그럼 위와 같이 새로운 메세지가 출력되는 것을 확인 할 수 있다.








■ URI 세그먼트 값을 함수에 전달하기




 ./application/controllers/Products.php

<?php

if(!defined("BASEPATH")) { exit("No direct script access allowed"); }


class Products extends CI_Controller {

public function shoes($sandals, $id) {

echo sprintf("sandals : %s", $sandals);

echo "<br/>";

echo sprintf("id : %s", $id);

}

}


/* END of file Products.php */

/* Location : ./application/controllers/Products.php */





# 출력결과 : http://localhost/index.php/products/shoes/sandals/123










■ 기본 컨트롤러 정의



코드이그나이터에서는 새그먼트 없이 사이트의 루트 URI만 요청될때 실행되는 기본 컨트롤러를 지정할 수 있다.


기본 컨트롤러를 지정하려면 ../application/config/routes.php 파일의 $route[ 'default_controller' ] 의 값을 설정해 주면된다.


 ./application/config/routes.php

<?php

if(!defined("BASEPATH")) { exit("No direct script access allowed"); }


      /* 주 석 생 략 */


$route['default_controller'] = "First";

$route['404_override'] = "";

$route['translate_uri_dashes'] = FALSE;



이제 First.php 파일을 controllers 디렉토리에 생성하고.


아래와 같은 코드를 작성해 보자.



 ./application/controllers/Blog.php

<?php

if(!defined("BASEPATH")) { exit("No direct script access allowed"); }


class First extends CI_Controller {

public function index() {

echo "https://www.google.co.kr";

}

}


/* END of file First.php */

/* Location : ./application/controllers/First.php */





# 출력결과 : https://localhost




단순히 http://localhost라는 기본 주소를 입력하는 것만으로도


http://localhost/index.php/first 를 호출한것과 같은 결과를 얻을 수 있다.









■ 함수요청 재맵핑하기




일반적으로 URI의 두번째 새그먼트는 컨트롤러내의 어떤 함수를 실행할 것인가를 결정하낟.


이런 일반루틴을 재정의 하여 원하는 액션으로 바꿀 수 있다.



 http://code-igniter.com/index.php/rmapping/zerg 

<?php

if(!defined("BASEPATH")) { exit("No direct script access allowed"); }


class Rmapping extends CI_Controller {

public function _remap($method) {

if($method === "zerg") {

$this->zerg();

} else if($method === "protoss") {

$this->protoss();

} else {

$this->terran();

}

}

public function zerg() {

echo "군단의 심장";

}

public function protoss() {

echo "공허의 유산";

}

public function terran() {

echo "자유의 날개";

}

}


/* END of file Rmapping.php */

/* Location : ./application/controllers/Rmapping.php */




# 출력결과 : http://localhost/index.php/rmapping/zerg




위와 같이 출력되는 것을 확인 할 수 있다.




※ 참고


../application/config/routes.php 페이지의 


$route['default_controller'] 값을 "Rmapping" 으로 변경하고 사용하게 되면



# 출력결과 : http://localhost/index.php/rmapping/protoss









■ Private 접근제어 함수



PHP에는 public, private, protected 라는 3가지 접근 제어자가 존재한다.


접근제어자

기     능

public

 · class 밖에서도 함수에 접근이 가능하다.

 · 아무것도 명시하지 않으면 기본값이 public으로 선언된다.

private

 · 클래스 내부에서만 접근이 가능하다.

 · 상속이 불가능 하다.

protected

 · 클래스 내부에서만 접근이 가능하다.

 · 상속이 가능하다.







<?php

if(!defined("BASEPATH")) { exit("No direct script access allowed"); }


class Access extends CI_Controller {

public function index() {

echo "접 근 가 능";

}

private function _utility() {

echo "접 근 불 가";

}

}


/* END of file Access.php */

/* Location : ./application/controllers/Access.php */




# 출력결과 : http://localhost/index.php/Access/index




# 출력결과 : http://localhost/index.php/Access/_utility



위와같이 URI의 새그먼트 값으로 _utility 함수를 호출하려고 하는경우


페이지를 찾을 수 없다는 404 Page Not Found


에러가 발생하는것을 확인 할 수 있다.








■ 클래스 생성자




컨트롤러에서 생성자를 사용하고자 한다면 생성자아래 반드시 아래의 코드가 들어있어야 한다.


 parent :: __construct( );


그렇지 않으면 직접 구현한 모든 생성자가 부모 controoler의 생성자를 재정의 하기 때문에


반드시 부모 controller를 수동으로 호출해 주어야 한다.



생성자는 클래스가 초기화될 때 어떤 기본값들을 설정해야 한다거나 어떤 프로세스를 수행해야 할때 유용하다.


생성자는 리턴값이 있어서는 안된다.



 

<?php

if(!defined("BASEPATH")) { exit("No direct script access allowed"); }


class Products extends CI_Controller {

public function __construct() {

parent::__construct();

}

}


/* END of file Products.php */

/* Location : ./application/controllers/Products.php */










Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[PHP] DB접속 테스트하기[PHP] DB접속 테스트하기

Posted at 2019.07.30 17:00 | Posted in PHP/PHP Setting




참고 : https://blog.naver.com/diceworld/220292090236




■ PHP  데이터 베이스 접속 테스트




# 소스코드

<?php


error_reporting(E_ALL);

ini_set("display_errors", 1);

date_default_timezone_set('Asia/Seoul');


$conn = mysqli_connect("접속IP주소", "아이디", "비밀번호", "데이터베이스명", "포트");


if( empty($conn) == true ) {


      echo ( "#############################################################################" );

              echo ( "</br> default DBMS 접속 호스트 정보가 정확하지 않습니다. </br>\n\n" );

          exit ( "#############################################################################" );


} else {


      echo ( "#############################################################################" );

          echo ( "</br> default DBMS 접속에 성공하였습니다. </br>\n\n" );

          echo ( "-----------------------------------------------------------------------------" );

          echo ( "<pre>" );

          print_r ( $conn );

          echo ( "</pre>" );

          exit ( "#############################################################################" );


}

mysqli_close( $conn );


?>





# 출력결과









'PHP > PHP Setting' 카테고리의 다른 글

[PHP] DB접속 테스트하기  (0) 2019.07.30
[PHP] Windows 환경에서 Apache 및 PHP 설치하기  (0) 2018.08.18

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[CodeIgniter] DataBase 접속 설정하기[CodeIgniter] DataBase 접속 설정하기

Posted at 2019.07.25 17:06 | Posted in PHP/CodeIgniter





참고 : http://www.ciboard.co.kr/user_guide/kr/database/configuration.html




■ 코드이그나이터에서 DB 접속 설정하기



/application/config/database.php에 사용자, 비밀번호, HOST, 데이터베이스명을 입력해야 한다.



 /application/config/database.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');


/* 주 석 생 략 */


$active_group = "default";

$query_builder = TRUE;


/*

$db['default'] = array(

  "dsn" => ""

, "hostname" => "IP주소"

, "username" => "DB접속계정"

, "password" => "계정비밀번호"

, "database" => "DB이름"

, "dbdriver" => "mysqli"

, "dbprefix" => ""

, "pconnect" => FALSE // pconnect 값이 TRUE일 사용할 경우 웹 호스팅 환경에서는 실행이 되지 않는다.

, "db_debug" => (ENVIRONMENT !== "production")

, "cache_on" => FALSE

, "cachedir" => ""

, "char_set" => "utf8"

, "dbcollat" => "utf8_general_ci"

, "swap_pre" => ""

, "encrypt" => FALSE

, "compress" => FALSE

, "stricton" => FALSE

, "failover" => array()

, "save_queries" => TRUE

);

*/


// DB 설정

$db['default']['dsn'] = "";

$db['default']['hostname'] = "DB IP주소";

$db['default']['username'] = "DB접속계정 아이디";

$db['default']['password'] = "DB접속계정 비밀번호";

$db['default']['database'] = "DB 이름";

$db['default']['dbdriver'] = "mysqli";

$db['default']['port'] = "3306";

$db['default']['dbprefix'] = "";

$db['default']['pconnect'] = FALSE;      // pconnect 값이 TRUE일 사용할 경우 웹 호스팅 환경에서는 실행이 되지 않는다.

$db['default']['db_debug'] = (ENVIRONMENT !== "production");

$db['default']['cache_on'] = FALSE;

$db['default']['cachedir'] = "";

$db['default']['char_set'] = "utf8";

$db['default']['dbcollat'] = "utf8_general_ci";

$db['default']['swap_pre'] = "";

$db['default]['encrypt'] = FALSE;

$db['default']['compress'] = FALSE;

$db['default']['stricton'] = FALSE;

$db['default']['failover'] = array( );

$db['default']['save_queries'] = TRUE;


$arrParseUrlparse_url$_SERVER[ 'HTTP_HOST' ] );


if( ( isset$_SERVER[ 'HTTPS' ] ) && $_SERVER[ 'HTTPS' ] == "on" ) ) {

    $arrParseUrl[ 'scheme' ] = "https";

} else {

    $arrParseUrl[ 'scheme' ] = "http";

}


if ( strlen ( trim$db['default']['hostname'] ) ) == 0 ) {

    echo( "#############################################################################" );

    echo "</br> default DBMS 접속 호스트 정보가 정확하지 않습니다. </br>\n\n";

    echo "<pre>";

    var_export$arrParseUrl );

    echo "</pre>";

    exit( "-----------------------------------------------------------------------------" );

    echo "<pre>";

    var_export$db );              

    echo "</pre>";

    exit( "#############################################################################" );

}



※ 데이타베이스 설정값

환경값

설     

dsn

 · DSN 연결문자

hostname

 · 데이터베이스 서버의 IP주소

 · 같은 서버일경우 localhost, 120.0.0.1

username

 · 데이터베이스의 사용자 아이디

password

 · 데이터베이스의 사용자 비밀번호

database

 · 연결하고자 하는 데이터베이스 이름

dbdriver

 · 데이터베이스 타입

 · mysqli, postgre, odbc, etc등

 · 반드시 소문자 여야만 한다.

port

 · 데이터베이스 포트 번호

dbprefix

 · Query Builder를 사용할 경우 테이블명에 자동으로 접두어를 붙임

 · 하나의 데이터베이스로 여러개의 CodeIgniter를 사용할 때 유용함

pconnect

 · 영속적연결(Persistent Connection)을 사용할 것인지 말것인지 결정한다.

 · BOOLEAN 타입( TRUE / FALSE )

db_deboug

 · 데이터베이스 에러를 표시할지 말지를 결정

 · BOOLEAN 타입( TRUE / FALSE )

cache_on

 · 데이터베이스 쿼리를 캐시할 것인지를 결정(쿼리를 텍스트 파일로 캐싱하여 데이터베이스의 부하를 줄인다.)

 · BOOLEAN 타입( TRUE / FALSE )

cachedir

 · 데이터베이스 쿼리 캐시가 저장될 절대경로

char_set

 · 데이터베이스와 통신할 때 사용할 문자셋

dbcollat

 · 데이터베이스와 통신할 때 사용되는 문자열 대조법(Character Collation)

 · 'mysql'과 'mysqli' 드라이버에서만 사용된다.

swap_pre

 · 기본 테이블 접두어가 dbprefix에서 교체된다.

 · 수동으로 작성된 쿼리를 실행하고, 최종 사용자에 의해 변환될 때 접두어가 여전히 필요할 때 유용하다.

schema

 · 데이터베이스 스키마, "public"이 기본이다.

 · PostgreSQL 및 ODBC 드라이버에서 사용한다.

encrypt

 · 암호화 연결을 사용할지 결정

compress

 · 클라이언트 압축을 사용할지를 결정한다.

 · MySQL 전용이다.

stricton

 · 스트릭 모드 연결을 강제로 사용할지 여부를 선택한다.

 · 어플리케이션을 개발하는 동안 엄격한 SQL을 보장하기 위해 좋다.

 · BOOLEAN 타입( TRUE / FALSE )








Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[CodeIgniter] 리눅스 환경에 코드이그나이터 세팅하기[CodeIgniter] 리눅스 환경에 코드이그나이터 세팅하기

Posted at 2019.07.23 17:07 | Posted in PHP/CodeIgniter




■ Linux 환경에 CodeIgniter 설치하기





리눅스 환경코드이그나이터를 설치하기 위해서는


현재 지원중인 코드이그나이터의 버전을 확인해야 한다.


코드이그나이터 사이트( http://www.codeigniter.com/download ) 에 접속하여


사용할 수 있는 버전을 확인하자.







버전을 확인했다면 wget 을 사용하여 해당 버전을 다운로드 받아보자.


 $ sudo wget https://github.com/bcit-ci/CodeIgniter/archive/서비스중인 버전.zip -P /다운받을 디렉토리 경로

 $ sudo wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.10.zip -P /var/www/html/



다운을 받았다면 해당 파일의 압축을 해제한다.


 $ sudo unzip 다운받은 파일.zip -d 압축해제 디렉토리의 경로

 $ sudo unzip /var/www/html/3.1.10.zip -d /var/www/html/




※ 참고 : wget, unzip 설치방법

 

Ubuntu

CentOS

wget

 $ sudo apt-get install wget

 # yum install wget

unzip

 $ sudo apt-get install unzip

 # yum install unzip





압축을 해제했다면 생성된 CodeIgniter 디렉토리의 파일


아파치 서버의 실행 파일 경로로 전부 이동시킨다.


 sudo cp -R /CodeIgniter(압축해제 디렉토리 이름)/* /아파치 서버의 실행 파일 경로

 sudo cp -R /var/www/html/CodeIgniter-3.1.10/* /var/www/html/




코드이그나이터의 설치가 완료되었다면


브라우저를 통해 해당 서버의 IP주소 혹은 도메인( localhost )으로 접속해 보면 아래와 같은 출력결과가 나타나는 것을 확인 할 수 있다.





위와 같은 화면이 나타난다면 모든 코드이그나이터의 설치는 정상적으로 된것이다.










■ Hello World 페이지 만들기




#01. 주소체계 파악하기



Welcome to CodeIgniter 라는 메세지가 브라우저 화면에 정상적으로 출력되었지만


주소입력창에 호스트 및 도메인주소만 입력했는데 특정 컨트롤러가 실행되고, 어떤 뷰가 화면에 출력되었다.


이런 역할을 해주는 것이 /application/config/routes.php 에 존재한다.



 설치경로/application/config/routes.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');


/* 주 석 생 략 */


$route['default_controller'] = 'welcome';      // Welcome.php 컨트롤러를 실행한다.

$route['404_override'] = '';

$route['translate_uri_dashes'] = FALSE;



주소에 컨트롤러가 입력되지 않았을 경우 welcome.php 컨트롤러가 실행된다.



 설치경로/application/controller/Welcome.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');


class Welcome extends CI_Controller {

/* 주 석 생 략  */


public function index( )

{

$this->load->view('welcome_message');      // welcome_message.php 파일을 실행한다.

}

}





CodeIgniter의 주소체계는 http:// 호스트 / 컨트롤러 / 메서드로 되어 있다.


routes.php에서 default_controllerwelcome.php로 지정해서 컨트롤러 명을 알 수 있는데 실행되는 메서드 명은 알 수가 없다.


index( ) 메서드를 선언하려면 http://localhost/welcome/까지만 주소를 쳐도 자동으로 http://localhost/welcome/index라고 실행된다.

(에러 방지의 목적도 있기 때문에 index 메서드는 항상 만드는 것이 좋다.)


$this->load->view는 뷰 파일을 로딩하라는 의미이다.


/application/views/welcome_message.php 파일이 로딩되며, 확장자는 생략하고 호출된다.





#02. Hello World 출력하기



Hello World를 화면에 출력하기 위해


/application/views/welcome_message.php 파일의


내용을 아래와 같이 수정해 보자.


 설치경로/application/view/welcome_message.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

?><!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<title>Welcome to CodeIgniter</title>


<style type="text/css">


::selection { background-color:#E13300;color:white; }

::-moz-selection { background-color:#E13300;color:white; }


body {

background-color:#FFFFFF;

margin:40px;

font:13px/20px normal Helvetica,Arial,sans-serif;

color:#4F5155;

}


a {

color:#003399;

background-color:transparent;

font-weight:normal;

}


h1 {

color:#444444;

background-color:transparent;

border-bottom:1px solid #D0D0D0;

font-size:19px;

font-weight:normal;

margin:0 0 14px 0;

padding:14px 15px 10px 15px;

}


code {

font-family:Consolas, Monaco, Courier New, Courier, monospace;

font-size:12px;

background-color:#F9F9F9;

border:1px solid #D0D0D0;

color:#002166;

display:block;

margin:14px 0 14px 0;

padding:12px 10px 12px 10px;

}


#body {

margin: 0 15px 0 15px;

}


p.footer {

text-align:right;

font-size:11px;

border-top:1px solid #D0D0D0;

line-height:32px;

padding:0 10px 0 10px;

margin:20px 0 0 0;

}


#container {

margin:10px;

border:1px solid #D0D0D0;

box-shadow:0 0 8px #D0D0D0;

}

</style>

</head>

<body>

<!--

<div id="container">

<h1>Welcome to CodeIgniter!</h1>


<div id="body">

<p>The page you are looking at is being generated dynamically by CodeIgniter.</p>


<p>If you would like to edit this page you'll find it located at:</p>

<code>application/views/welcome_message.php</code>


<p>The corresponding controller for this page is found at:</p>

<code>application/controllers/Welcome.php</code>


<p>If you are exploring CodeIgniter for the very first time, you should start by reading the <a href="user_guide/">User Guide</a>.</p>

</div>

</div>

-->


<!-- 수 정 시 작 -->

<!-- 뷰 파일은 HTML로 구성되어 있어서 일정한 규칙을 개발자와 디자이너가 준수한다면 디자인 분업이 가능하다. -->

<div id="container">

<h1>Hello World</h1>

<div id="body">

<p>CodeIgniter 설치후 볼 수 잇는 화면 입니다.</p>

</div>


<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds. 

<?php 

echo  (ENVIRONMENT === "development") ?  "CodeIgniter Version <strong>" . CI_VERSION . "</strong>" : ""

?>

</p>

</div>

<!-- 수 정 종료 -->

</body>

</html>



자동으로 로딩되는 output 라이브러리의 변수 중 하나로 { elapsed_time }은 현재 보이는 페이지의 실행 시간을 나타낸다.


어떤 페이지든 { elapsed_time } 를 삽입하면 그 페이지의 실행 시간을 보여준다.


비슷한 변수로 그 페이지 사용량을 보여주는 { memory_usage } 가 있다.














Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

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

Posted at 2019.02.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은 배열이 아닙니다.";

}

?> 




# 출력 결과







Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

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

Posted at 2018.10.02 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 값으로 넣을경우 \\ 으로 해결할 수 있었다.


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





Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

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

Posted at 2018.09.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>";
?>



# 출력결과






Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

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

Posted at 2018.08.30 10:56 | Posted 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);
    }






Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

cURL 연결 함수cURL 연결 함수

Posted at 2018.08.30 10:35 | Posted in PHP




참조 : 하보니 PHP 158페이지, 598페이지,

참조 : http://xshine.tistory.com/251




Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[PHP] 문장 / 문자열의 의 대소문자를 변환해주는 함수[PHP] 문장 / 문자열의 의 대소문자를 변환해주는 함수

Posted at 2018.08.30 10:11 | Posted in PHP




참고 : http://mwultong.blogspot.com/2007/06/php-uppercase-lowercase-string.html




■ 문장 / 문자열의 의 대소문자를 변환해주는 함수




#01. 문장을 전부 소문자로 변환하는 strtolower( ) 함수


<?php
    $letter = "Warcraft III The Frozen Throne";
    echo strtolower($letter);
?>












#02. 문장을 전부 대문자로 변환하는 strtoupper( ) 함수


<?php
    $letter = "Warcraft III The Frozen Throne";
    echo strtoupper($letter);
?>










#03. 문장의 첫 글자 대문자로 변환하는 ucfirst( ) 함수


<?php
    $letter = "let's swing dance";
    echo ucfirst($letter);
?>











#04. 각 단어의 첫 글자만 대문자로 변환하는 ucwords( ) 함수


<?php
    $letter = "let's swing dance";
    echo ucwords($letter);
?>








Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기