[뇌를자극하는 PHP프로그래밍] 11장은 register_globals=On 상태로 하셔야 합니다.
2009. 11. 13. 02:38
책/바로잡습니다
11장 소스를 테스트할 때에는 php.ini 파일의 register_globals=On으로 설정하여야 합니다. 오늘 책을 살펴보니 11장 게시판 만들기 강좌에서 독자님들이 다소 소스코드 실행에 문제가 생길 소지가 있음을 발견하였습니다. 이 책이 원래 3장에 걸쳐서 게시판이 제 모습을 찾아가는 구성을 갖고 있습니다. 그래서 11장 게시판 만들기의 경우에 php.ini 설정에서 register_globals=On 상태임을 가정하고 작성하였습니다. 그 이유는 많은 프로그래머들이 편의를 위해서 register_globals 옵션을 On으로 설정하고 있기 때문입니다. 그러나 책에도 언급하였듯이 On으로 설정되어 있는 경우 보안적인 문제가 발생하여 Off 설정을 권장하고 있습니다. 그래서 이 책에서는 12장에서 게..
[뇌를자극하는 PHP프로그래밍] $PHP_SELF -> $_SERVER[PHP_SELF]
2009. 11. 12. 22:21
책/바로잡습니다
413페이지 윗쪽 소스 코드를 보면 ACTION="?id=&mode=delete"> 부분이 있습니다. 이 부분은 다음과 같이 수정되어야 합니다. ACTION="?id=&mode=delete"> register_globals=Off 인 경우에 $PHP_SELF 수퍼변수는 동작하지 않습니다. 따라서 $_SERVER[PHP_SELF]와 같이 바꾸어주셔야 합니다. 그리고 위에 $_ GET[id]와 같이 공백이 존재하는데 이 공백은 오류이니 공백을 없애는 것이 맞습니다. $PHP_SELF 오류가 있는 페이지 348 페이지 : [예제 8-3] 9번, 30번 줄 351 페이지 : [예제 8-4] 31번줄 353 페이지 : [예제 8-5] 9, 19, 33 번줄 354 페이지 : [예제 8-6] 29번줄 365 페이지..
[뇌를자극하는 PHP프로그래밍] 408, 409, 411페이지
2009. 11. 12. 22:02
책/바로잡습니다
독자님으로부터 오탈자에 대한 보고를 받았습니다. 감사합니다. 409페이지 중간 부분과 411페이지 51,52번째 라인을 보면 $prev = $no - $pagesize; $next = $no + $pagesize; 부분이 있습니다. 이 부분의 $no 변수는 외부로부터 넘어오는 변수이므로 $_GET[no]과 같이 표현해야 합니다. $prev = $_GET[no] - $pagesize; $next = $_GET[no] + $pagesize; 이 부분 뿐만이아니라 408페이지부터 409페이지에 나오는 모든 $no 변수는 $_GET[no]으로 변경해야 맞는 것입니다. PHP.ini 파일의 설정 중 register_globals 항목이 On으로 되어 있으신 분들은 에러가 나지 않겠지만 Off로 되어있는 분들은 문..
DCF를 MP3로 변환할 수 없는 이유
2009. 11. 12. 14:43
잡다한 이야기/컴퓨터 이야기
DCF 파일을 MP3 파일로 변환할 수 있을까? 옴니아가 멜론 폰이어서 멜론으로부터 음원을 다운받는 것은 핸드폰을 사용하는 기간 동안은 무제한 무료이다. 최근에 노래를 잘 듣지않던 내가 최신 노래들을 어느정도 알게 된 것도 다 이 덕분이다. 그런데 다운받은 파일들이 MP3 포맷이 아니라 모두 DCF 파일이다. DCF는 DRM Contents File 즉, DRM이 걸려있는 컨텐츠 파일이다. 여기서 DRM 기술은 디지털 컨텐츠의 저작권을 보호하기 위해서 일종의 잠금장치를 해둔 것으로 생각할 수 있는데 DRM이 걸려있는 파일은 반드시 이 잠금장치를 해제하여야만 파일을 접근할 수 있다. 몇년전 음원의 불법 유출이 당연시 여겨지던 시절때문에 아무나 그리고 아무데서나 음원을 재생할 수 없도록 하기위해서 만들어진 ..
[PHPSchool] 예제 4-18 코드가 동작하지 않습니다.
2009. 10. 27. 19:54
책/자주묻는질문
PHPSchool을 검색해보았더니 제 책에 대한 질문이 하나 올라와 있더군요. http://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=279398
[뇌를자극하는 PHP프로그래밍] 628페이지
2009. 10. 27. 19:34
책/바로잡습니다
628페이지에는 또 다른 오류가 하나 있습니다. 중간부분에 있는 쿼리 부분입니다. insert into $board (thread, depth, name, pass, email, title, view, wdate, ip, content, filename) values ($max_thread,0,'$_POST[name]','$_POST[pass]','$_POST[email]','$_POST[title]',0,UNIX_TIMESTAMP(),'$REMOTE_ADDR','$_POST[content]',0,'$filename') 이 부분의 마지막 부분에 0이 들어가는 데 이 부분은 제거되어야 합니다. insert into $board (thread, depth, name, pass, email, title, vi..
[뇌를자극하는 PHP프로그래밍] 624, 627, 628, 629페이지
2009. 10. 27. 19:24
책/바로잡습니다
184 페이지의 오류와 동일한 오류가 624와 628 페이지에 존재합니다. move_uploaded_file() 함수를 사용하면서 타겟 위치로 복사하는 과정에서 파일 명을 빼먹은 경우입니다. 624페이지 예제 13-3의 8번째줄 move_uploaded_file($_FILES['upfile']['tmp_name'],'./uploads_dir'); 이 부분을 다음과 같이 수정하여야 합니다. move_uploaded_file($_FILES['upfile']['tmp_name'],'./uploads_dir/' . $FILES['upfile']['name']); 627, 628페이지 하단 소스 if (move_uploaded_file($_FILES['upfile']['tmp_name'], './uploads_d..
[뇌를자극하는 PHP프로그래밍] 364, 366페이지
2009. 10. 27. 19:16
책/바로잡습니다
364페이지 중간 부분에는 Digest 인증 검증 코드가 있습니다. 366페이지 소스코드 56,57 라인에도 동일한 코드가 있습니다. 그런데 길어지는 코드를 두 줄로 분리하는 과정에서 함수를 반으로 쪼개어버리는 바람에 에러가 발생합니다. $valid_response = md5("$A1:$data['nonce']:$data['nc']"; $valid_response .= ":$data['cnonce']:$data['qop']:$A2"); 그래서 다음과 같이 문자열 부분을 변수에 저장한 후 다시 md5 해쉬 함수를 적용하는 것으로 변경해야 합니다. $valid_response = "{$A1}:{$data[nonce]}:{$data[nc]}"; $valid_response .= ":{$data['cnonce'..
[뇌를자극하는 PHP프로그래밍] 객체 수정 원고
2009. 10. 27. 17:29
책/바로잡습니다
244페이지부터 시작하는 객체에 대한 수정 보완된 원고입니다. 제가 이 부분을 약 6년전쯤 작성하고 2년전쯤 교정을 하면서 PHP 버전에 의한 변화에 대해 혼동을 일으켜 다소 여러부분에서 문제가 발생하였습니다. 그래서 수정 보완된 원고를 올려드립니다. 이 부분은 정말 면목이 없습니다. 저의 꼼꼼하지 못한 성격때문입니다. ㅠ_ㅠ