본문 바로가기

개발/PHP31

php 의 allow_url_fopen, allow_url_include 옵션 개요 php.ini 의 allow_url_fopen 은 file_get_contents 나 include, require 에서 http 로 읽을 수 있게 허용하는 설정값이다. 본문 좋게 말하면, file_get_contents 를 socket 을 안 써도 되게끔 엄청 편리한 함수이지만... 악용이 심하다. php.ini 에서만 설정할 수 있다고 한다. only set 블라블라.ini_set 으로 설정 변경 못한다는 얘기. 다행히도, allow_url_include 옵션이 하나 더 있는데, allow_url_fopen (기본값 true) 가 되어있으면, allow_url_include (기본값 false) 옵션이 같이 동작되게 된다. allow_url_include 옵션은 php 5.2.0 에서 추가되었다.. 2019. 8. 6.
[php] javascript boolean 값 받을 때 문제. 잘 이해가 안 가는데...언제부터 이랬던 건지는 잘 모르겠다. (혼란의 상태임) 먼저 테스트 를 해보자면 index.html javascript False 값 전송 javascript true 값 전송 결과 submit.php 2019. 2. 20.
[PHP] 클라우드 플레어 유저 아이피 HTTP_CF_CONNECTING_IP $_SERVER['REMOTE_ADDR'] 를 잘 사용하고 있었는데, 클라우드플레어 를 적용시키니, 엉뚱한 아이피주소를 받아온다. 검색해보니, $_SERVER["HTTP_CF_CONNECTING_IP"] 를 쓰라고 한다. 참고할 만한 주소는http://stackoverflow.com/questions/14985518/cloudflare-and-logging-visitor-ip-addresses-via-in-php 가장 높은 추천을 받은 글에서는 다음과 같은 설명이 적혀 있다. if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];} ... 더 검색하는 와중에 $_SE.. 2017. 2. 18.
[PHP][mysql] inet_aton('::1') 에러 잘 되던게 갑자기 에러가 났다. inet_aton('::1') 라는 식의 로그 가 찍혀 있었다. 생각을 해보면, inet_aton 이라는 것은 mysql 에서는 IPv4 주소를 integer unsigned 로 바꿔주는 함수 로 기억한다. 문제는 저 안에 들어간 변수가 ::1 이라는 것이라는 점이다. ::1 이라는 아이피는 IPv6 에서 로컬을 뜻하는 주소 이다. IPv4 에서는 127.0.0.1 이었던 값이 IPv6 에서는 ::1 이라는 값이 된 셈이다. 해결책은 두 가지로 볼 수 있겠는데,'IPv6 이 지원되도록 소스를 변경' 하는 방법 과 '아파치 설정을 변경' 하는 방법이 있다. 개인적으로는 검색해서 찾아본 결과, httpd.conf 파일을 열어서 보면, Listen 80 이라고 되어 있는 부분이.. 2017. 2. 11.
[코드이그나이터 Codeigniter] Codeigniter 로 알아본 redirect location refresh 의 차이 1. codeigniter 의 redirect 함수/system/helpers/url_helper 를 찾을 수 있는데, 소스 를 살펴보면 function redirect case 'refresh': header('Refresh:0;url='.$uri); break; default: header('Location: '.$uri, TRUE, $code); break; 로 되어 있다. 결론적으로 볼 때에 php 의 header 함수 를 쓴다는 것을 알 수 있다. 사이트에서 설명은 https://codeigniter.com/userguide3/helpers/url_helper.html 을 참조 영알못 이므로, 한글화 된 곳 http://www.ciboard.co.kr/user_guide/kr/helpers/ur.. 2017. 1. 19.
[PHP] PDO BindValue 와 BindParam 의 차이 $abc = 'apple'; PDO::BindValue(':aaa',$abc); PDO::BindParam(':aaa',$abc); $abc = 'banana'; 대충 이런 상황이 있다고 한다면. (위의 예시는 대충 보기 쉽게 생략해서 쓴 구문입니다) BindValue 는 apple 이라는 값이 들어가고, BindParam 에는 banana 라는 값이 들어가게 된다. 이유인즉슨, BindValue 는 값만 복사되서 대입되는 것이고. BindParam 은 포인터값이 들어가는 개념이기 때문이다. 이후에 execute(); 를 호출할 때까지 변수에 있던 값이 들어가는게 BindParam 이다. Java 에서도 Prepared 하는 방식에서는 마찬가지의 개념이 있던 걸로 기억한다. 이렇게 나눠놓는 이유는, 잘 .. 2016. 2. 9.
[PHP] strpos, stripos 다른 함수랑 쓰다보니 자꾸 헛갈린다. strpos (문자열, 찾을문자열) stripos (문자열, 찾을문자열) 이다. 순서가 종종 헛갈린다. 앞에 문자열이 긴 문자열이고, 뒤에 들어갈 것이 찾을 문자열 이다. 'i'm korean' 에서 'korea' 를 찾으려면 strpos('i'm korean','korea') 가 되어야 한다는 말. 그리고 사용하는 방법은 if(stripos($string,$find)===false) return false; else return true; 이런식으로 사용하면 된다. strpos 와 stripos 의 차이점은, stripos 는 대소문자 구분없이 찾는 다는 뜻이다. strpos 의 정확한 사용법은, 문자열의 위치를 탐색하는 것인데. 찾는 문자열이 있을 경우에는, 숫자.. 2016. 1. 19.
[codeigniter] xss_clean $this->form_validation->set_rules( 'username', '아이디', 'trim|required|xss_clean' ); 에서 자꾸 오류가 나서 알아보니, xss_clean 은 code igniter 3.0 에서는 없어진 듯 하다. 변수값을 가져올 때. $this->input->post('some_data',TRUE); 두번째 TRUE 옵션 그자체가, xss_clean 옵션이다... 전체적으로 옵션을 줄 때에는$config['global_xss_filtering'] = TRUE;를 config/config.php 에 설정하면 된다. 2015. 10. 4.
[이클립스]cannot create linked resource '/.org.eclipse.dltk.core.external.folders/.link1'. the parent resource is not accessible. 이 경우 workspace 위치를 바꿔주면 된다. switch workspace 를 해주자. 아마도 workspace 안에서 무언가가 꼬여서 일어나는 일로 보인다. 2015. 7. 17.
[PHP][이클립스] 이클립스에서 class code assist 가 안 될 때 커스텀으로 만든 클래스 가 code assist 를 못 받을 때가 있다. 이클립스 에서 프로젝트 속성으로 가서. build path 를 살펴보자 정확한 위치는 PHP -> Build Path 이 부분에 아무것도 없다면 코드 어시스트를 못 받고 있었을 것이다. 프로젝트 폴더를 추가 해주자. 여기에 있는 폴더 경로로 해서 어시스트를 받는 것이라고 보면 된다. 2015. 7. 16.