Programming/PHP2012.09.19 01:33

curl 을 이용하여 서버에 접속하여 정보를 받아 오고 있다.

하지만 https일 경우에만 아래와 같은 오류가 발생하고 있다.


Warning : curl_error(): 22 is not a valid cURL handle resource in


이 문제는 옵션만 하나 지정하면 해결된다.

curl_setopt($this->handle, CURLOPT_SSL_VERIFYPEER, false);

신고
Posted by 초프(초보 프로그래머)
Programming/PHP2012.08.23 18:39

작성한 php를 요청하는 header, body를 출력하는 테스트 코드입니다.

HTTP_METHOD 인 GET, POST, PUT, DELETE 의 내용을 출력하도록 하였습니다.

GET, POST는 PHP에서 지원하는 기능을 활용하였고

PUT, DELETE는 raw data를 출력하도록 하였습니다.




신고
Posted by 초프(초보 프로그래머)
Programming/PHP2012.08.23 18:20

php로 작성한 페이지를 누군가를 요청했다.

그 요청의 header, body 가 궁금한데... 어떻게 가져오지???


header의 값은

apache_request_headers()

을 이용해 배열로 가져 옵니다.


body의 값은

$HTTP_RAW_POST_DATA

을 이용해 문자열로 가져 옵니다.

신고
Posted by 초프(초보 프로그래머)
Programming/PHP2011.05.18 23:36
10년 이상 php를 조금씩 했지만 pear를 처음 설치해 봤다; 반성해야겠다;

wget pear.php.net/go-pear

라고 입력하면 설치 스크립트를 내려받고 go-pear 라는 파일이 생긴다.
go-pear 파일을 서버가 웹서버가 돌아가는 폴더 안에 넣고 실행하자.
실행하기 전에 파일 확장자를 붙여 줘야 한다.

mv go-pear go-pear.php

웹브라우저에서 다음과 같이 접속하자
http://localhost/go-pear.php

next
install 을 눌러주면 설치가 끝난다.




lynx 가 설치되어 있는 경우라면

lynx -source http://pear.php.net/go-pear | php

이와 같은 명령어를 사용해도 된다. 
신고
Posted by 초프(초보 프로그래머)
TAG Linux, Lynx, Pear, php
Linux Server2011.04.08 00:39
mbstring확장 모듈생성 방법
1. 같은 버젼의 php 소스 다운로드
2. 압축 풀고 cd PHP소스디렉토리/ext/mbstring
3. find / -name phpize
4. find / -name php-config
5. /phpize 디렉토리/phpize
6. ./configure --with-php-config=/php-config디렉토리/php-config --enable-mbstring
7. make // mbstring/modules/에 mbstring.so 생성됨
8. mbstring.so 이 화일을 php.ini 화일의 extension_dir=확장모듈 경로 <== 여기에다 옮겨줌
9. php.ini 에 extension=mbstring.so 추가
10. 아파치 재시작.. 끝....


출처 : http://blog.daum.net/okjeom/6039778
신고
Posted by 초프(초보 프로그래머)
TAG mbstring, php
Programming/PHP2011.02.21 17:22
웹브라우저로는 잘 열리는데 프로그램 상에서 읽어오면 400 bad request 오류가 나는 경우가 있습니다.
http1.1 에서 get 또는 post로 값을 잘못 넘겼을때 발생한다고 합니다.
검색을 통해서 알아보니 Host : 헤더가 빠져서 그렇다고 했지만....
Host를 헤더에 넣어도 해결되지 않았습니다.

결국 찾은 것은  User-Agent 였습니다.

"User-Agent: ".$_SERVER['HTTP_USER_AGENT']

를 헤더에 추가하면 됩니다.



추가 
400 bad request 는 요청이 잘못되어 발생하는 경우 입니다.
정확한 해결방법은 각 서버에 따라 다 다릅니다.
어떤 요청을 원하는지 알아야 정확히 대응할 수 있습니다.
주로 parameter의 값이 없거나 잘못된 값일 경우 발생합니다.



신고
Posted by 초프(초보 프로그래머)
Project2009.03.18 14:40

 테스팅도구인 UnitTest 그중에서 PHP에서 쓰는 테스트툴들이 몇가지 있다. 이전 버전의 프레임워크를 만들때 만들어 두었던 유닛테스트.. 일명 SameTest ! PHPUnit 이랑 비슷할수도 있을듯...; 써본게 그거라;

아직 고급기능은 없고 단순한 비교기능만 있을뿐이다.

sameValue($mHope, $mValue) - 두값을 비교(데이터타입,값)
sameType($type, $mValue) - 데이터 타입을 비교
sameClass($sName,$oClass) - 인스턴스의 클래스이름 비교
sameInt($mValue), sameInteger($mValue) - 정수형인가
sameFloat($mValue), sameDouble($mValue) - 실수형인가
sameString($mValue) - 문자열인가
sameObject($mValue) - 오브젝트(인스턴스) 인가
sameBool($mValue), sameBoolean($mValue) - Boolean형인가
sameArray($mValue) - 배열인가
sameResource($mValue) - 리소스인가
sameNull($mValue) - NULL인가
sameTrue($mValue) - True 인가
sameFalse($mValue) - False 인가

테스트 소스는 다음과 같다.

<?
require_once "../setup/setup.php";
require_once _FW_UNITTEST_PATH_."/sametest.php";
require_once _FW_DATA_PATH_."/int.php";
require_once _FW_DATA_PATH_."/float.php";

class Test_data extends SameTest
{
 private $oInt;
 private $oFloat;

 function before()
 {
  $this->oInt = new Int();
  $this->oFloat = new Float();
 }

 function Test_int()
 {
  $this->sameValue($this->oInt->get(),0);

  $this->oInt->set(123);
  $this->sameValue($this->oInt->get(),123);

  $this->oInt->set(123.45);
  $this->sameValue($this->oInt->get(),123);
 }

 function Test_float()
 {
  $this->sameValue($this->oFloat->get(),0.0);

  $this->oFloat->set(123);
  $this->sameValue($this->oFloat->get(),123.0);

  $this->oFloat->set(123.45);
  $this->sameValue($this->oFloat->get(),123.45);

  $this->sameValue($this->oFloat->round(1),123.5);
  $this->sameValue($this->oFloat->round(0),123.0);
  $this->sameValue($this->oFloat->floor(),123.0);
 }

 function Test_etc()
 {
  $this->oInt->set("abc");
  $this->sameInt($this->oInt->get());
  $this->sameValue($this->oInt->get(),0);

  $this->oInt->set(array(1,2,3));
  $this->sameInt($this->oInt->get());
  $this->sameValue($this->oInt->get(),1);

  $this->oInt->set(true);
  $this->sameInt($this->oInt->get());
  $this->sameValue($this->oInt->get(),1);
  $this->oInt->set(false);
  $this->sameInt($this->oInt->get());
  $this->sameValue($this->oInt->get(),0);

  $this->oFloat->set("abc");
  $this->sameFloat($this->oFloat->get());
  $this->sameInt($this->oFloat->get());
  $this->sameValue($this->oFloat->get(),0.0);
 }
}

$oTest = new Test_data();
$oTest->startTest();

?>

테스트 결과이다.

`Test_` 로 시작하는 메소드들이 테스트된다. 각 메소드별로 성공,실패 여부가 나온다. 특히 한번에 알아보기 쉽도록 오류가 있는 메소드를 빨간색으로 표시하도록 했음.

before(), after() 메소드는 테스트가 시작전 시작후에 한번씩만 실행되는 함수이다. 여기서는 테스트가 먹히지 않는다.
beforeTest(), afterTest() 메소드는 테스트메소드가 실행되기전과 실행후에 실행되므로 실행횟수는 테스트메소드의 갯수와 같다. 그리고 테스트중에 echo를 사용하여 출력할 경우 제일 위에 흰색 배경에 나오지만... 보기에 별로라서... 버퍼를 이용해서 테스트 화면 안에 출력되게 하였다.
이게 before(), after(), beforeTest(), afterTest() 를 모두 사용한 테스트이다. 이네개 안에서 echo만 사용해서 문자열만 출력되게 하였다.

테스트화면은 웹표준을 적용해서 통과를 받은건데.... 그 당시에는... 현재는 잘 모르겠네요;;

다른 유닛테스트에는 어떤 기능이 있는지 모르겠고 또 필요한 테스트기능이 뭔지 몰라서 현재에 만족하고 있음;

또 다른 무엇이 필요할까~?

신고
Posted by 초프(초보 프로그래머)
Programming/PHP2008.04.13 16:46
POST, GET으로 값을 받은후에 그 값으로 쿼리문을 작성할 경우 보안에 취약점이 생긴다.

이 취약점은 따옴표, 외따옴표 가 들어가면서 생기는 취약점 이므로 이것을 막아주면 된다.

MySql 같은 경우에는 mysql_real_escape_string() 을 사용하면된다.
신고
Posted by 초프(초보 프로그래머)
TAG MySQL, php, 보안
Project2008.03.22 01:18
PHP Unit Test 를 사용할려고

PHPUnit을 알아봤는데 콘솔으로 해야하는 단점이 있어서 만들어봤음;

현재 되는 기능은

전체 테스트의 before, after 와

테스트 매소드마다 before,after 실행과 실행시 출력되는 html문 표시

sameValue : 두개값이 동일한지 비교
sameType : 한개의 값이 지정한 변수형이랑 일치하는지 확인

사용자 삽입 이미지

테스트 결과이다.
모든 before,after를 이용하지 않고 실행한 결과이다.

아래는 모든 before,after를 사용한 결과이다. 그냥 echo로 글만 찍어줬음;

사용자 삽입 이미지

좀 애매했던 에러라인 출력을 끝냈으니

기능을 좀더 보안해야할거 같음.
신고
Posted by 초프(초보 프로그래머)
TAG php, unittest