목록php (106)
세이박스
부산에서 2016년3월15일 화요일 저녁 7시~10시까지 3시간 동안 부산모바일앱개발센터 교육장에서 1차 모임을 가졌습니다. 스마트폰의 모바일 앱 개발은 이제 웹서버프로그래밍을 통한 Data 관리 환경의 필요성을 많은 분들이 필요성을 느끼셔서 본 강의를 요청하셔서 개설하게 되었습니다. 총 10분이 참여하셨구요. 끝까지 열공하셔서 좋은 결실 맺기를 바랍니다. 관리자 로그인, 회원관리, 게시판 및 자료실, 상품 관리 등의 관리 페이지 개발과 JSON 통신을 위한 DB 출력까지 진행합니다. JSON Data를 앱에서 받아서 출력만하면 끝! ^^ 출처 : http://www.androidstudy.co.kr/bbs/board.php?bo_table=B53&wr_id=127
안녕하세요! 안드로이드스터디 운영자 이경용 입니다. 요즘 개발하는 대부분은 앱들이 서버와의 통신을 기본으로 개발되고 있습니다. 하지만 대부분 모바일 앱 개발 관련 교육만 있으며, 서버 중심의 관리페이지 개발에 대해서는 잘 없기에 준비했습니다. "요기요", "배달의민족", "쿠팡"와 같은 앱의 업소 정보는 매번 바뀔때 마다 앱을 어떻게 업데이트 할까요? 업소 정보는 별도의 웹 환경에서 관리페이지를 만들고 DB와 이미지를 관리하며, JSON으로 앱과 자료를 주고 받습니다. 이러한 관리페이지를 만드는 기본 과정을 학습하고 실습을 통해 만들어 보고자 합니다. 관리페이지를 만드는 언어는 html , css, javascript, php, mysql 를 이용해서 만들니다. 해당 언어의 기초 지식이 있으면 좋지만, ..
안녕하세요! 안드로이드스터디 운영자 이경용 입니다.요즘 개발하는 대부분은 앱들이 서버와의 통신을 기본으로 개발되고 있습니다. 하지만 대부분 모바일 앱 개발 관련 교육만 있으며, 서버 중심의 관리페이지 개발에 대해서는 잘 없기에 준비했습니다. "요기요"와 같은 앱의 업소 정보는 매번 바뀔때 마다 앱을 어떻게 업데이트 할까요? 업소 정보는 별도의 웹 환경에서 관리페이지를 만들고 DB와 이미지를 관리하며, JSON으로 앱과 자료를 주고 받습니다. 이러한 관리페이지를 만드는 기본 과정을 학습하고 실습을 통해 만들어 보고자 합니다. 관리페이지를 만드는 언어는 html , css, javascript, php, mysql 를 이용해서 만들니다. 해당 언어의 기초 지식이 있으면 좋지만, 전체 구성을 이해하는것 만으로..
웹호스팅을 이용할 경우 php.ini 수정이 어려운 경우가 있습니다. 특히 외부의 파일을 가져올 경우 allow_url_fopen = 0; 일 경우 1로 수정 해줘야 하지만, 보안상 막아둔 경우 서버를 공용으로 사용하므로 수정을 해주지 않습니다. 저의 경우 cafe24 호스팅을 주로 이용하는데 이곳 역시 allow_url_fopen = 0 으로 되어 있어서 fopen(), file(), file_get_contents() 함수로 외부 URL 을 읽어 들이기가 안됩니다. Warning: file_get_contents() URL file-access is disabled in the server configuration in 하지만, 오류를 해결하는 방법으로 외부 파일을 읽어 들이는 함수 이용전에 다음과 ..
그누보드 및 제로보드 게시판 이용시 다음과 같은 오류 발생할 경우가 있다. Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/bbs/_head.php:2) 이와같은 오류는 이미지 Header를 출력 했기 때문에 수정할 수 없다라고 합니다. 논리적 오류로써 header 함수가 호출되기 전에 공백또는 문자 등이 이미 사용자에게 열려 있다는 의미입니다. 즉, 오류 페이지와 연관된 모든 페이지들을 확인해서 헤드 및 세션 처리 이전에 출력된 문자나 공백이 없는지 체크 해서 제거 해주면 되겠지만, 소스가 워낙 복잡한 경우 찾기가 쉽지가 않죠. 이때 소스 맨 상단에 ob_start..
Connecting DB : File '/usr/local/mysql/share/mysql/charsets/?.conf' not found (Errcode: 2) Character set '#192' is not a compiled character set and is not specified in the '/usr/local/mysql/share/mysql/charsets/Index' file PHP + MySQL 연동시 자주 발생하는 오류로써 MySQL에 문자셋 설정 오류 입니다. 오류 메시지 내용만 보면 ?.conf 문자셋 파일이 없다 그런 내용입니다. 해결 방법을 찾아서 이것저것 해보았지만 해결되지 않더군요. 그래서 오류 메시지가 알려준데로 MySQL에서 이용하는 문자셋중 latin1.xml 파일..
PHP에서 특정 자리수 만큼 지정된 문자로 변경하고자 할 때 간단하게 str_pad() 함수를 이용하면 편리 합니다. 예를들어 1~20까지의 숫자가 있는데 1~9까지는 2자리수로 맞혀 주기 위해 앞에 "0"을 붙이고자 할 경우 str_pad($a, 2, "0", STR_PAD_LEFT); 라고 하면 간단하게 1~9 인경우 앞에 "0"이 붙게 됩니다. 기타 옵션에 따른 결과를 간단히 설명하겠습니다. 결과 : 1:test s 2:****tests 3:**test**s 4:test*s 1번은 변경할 문자를 입력하지 않을 경우 " " 부족한 자릿수 만큼 우측에 공백으로 추가합니다. 2번의 경우는 LEFT 부족한 자리수 만큼 왼쪽부터 채우며, 3번 BOTH는 좌,우 모두 균등하게 배치합니다. 만약 남은 공백이 5..
1. 드림위버에서 .say 확장자 오픈 되도록 적용 드림위버를 실행후 메뉴 > Edit > Preferences > File Types / Editors > Open in code view: 항목에 .say 추가 합니다. .js .asa .css .cs .config .inc .txt .as .asc .asr .vb .say 2. 드림위버에서 .say 확장자 파일을 불러올 때 php 코드 부분 컬러를 변경 되도록 적용 C:\Program Files\Adobe\Adobe Dreamweaver CS3\configuration\DocumentTypes\MMDocumentTypes.xml 파일을 EditPlus 또는 메모장으로 열어서 Ctrl + F 찾기에서 "php"를 찾습니다. 위 소스 라인에서 ,say 라..
회원가입후 비밀번호를 잊은 경우 기존 비번이 암호화 처리 되어 있어(개인정보 보호법에 의해 비밀번호 암호화 의무화) 비번을 임의로 생성후 메일로 발송해야 합니다. 문자 조합을 간단하게 해 버릴 경우 해킹 시도시 비번찾기를 이용해서 이메일로 수신된 비번을 보지 않아서 추측해서 알아 낼 수 가 있습니다. 예로 "aa1234bb" 라는 임시 비번으로 생성해서 회원에게 발송하는데, 항상 숫자 부분만 변동해서 보내 준다면 해커는 역으로 0000~9999까지 조합해서 임의로 접속 시도를 해볼수 있게 됩니다. 간혹 보안 적용이 허술한 사이트의 경우 위와 같이 비번을 발송해주는 곳이 더러 있더군요. 개인정보 유출 사고는 위와 같이 개발자의 부주의가 매우 크다고 보면 됩니다. 문자 조합을 복잡하게 하는게 복잡하지도 않습..
회원가입후 비밀번호를 잊은 경우 기존 비번이 암호화 처리 되어 있어(개인정보 보호법에 의해 비밀번호 암호화 의무화) 비번을 임의로 생성후 메일로 발송해야 합니다. 문자 조합을 간단하게 해 버릴 경우 해킹 시도시 비번찾기를 이용해서 이메일로 수신된 비번을 보지 않아서 추측해서 알아 낼 수 가 있습니다. 예로 "aa1234bb" 라는 임시 비번으로 생성해서 회원에게 발송하는데, 항상 숫자 부분만 변동해서 보내 준다면 해커는 역으로 0000~9999까지 조합해서 임의로 접속 시도를 해볼수 있게 됩니다. 간혹 보안 적용이 허술한 사이트의 경우 위와 같이 비번을 발송해주는 곳이 더러 있더군요. 개인정보 유출 사고는 위와 같이 개발자의 부주의가 매우 크다고 보면 됩니다. 문자 조합을 복잡하게 하는게 복잡하지도 않습..
아파치 서버에 PHP를 이용시 아래와 같은 오류가 발생시 : [root@ ~]# /usr/local/apache/bin/apachectl restart /usr/local/apache/bin/apachectl restart: httpd not running, trying to start Syntax error on line 56 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/libphp4.so into server: /usr/local/apache/libexec/libphp4.so: cannot restore segment prot after reloc: Permission denied /usr/local/apach..
홈페이지 title 및 메타태그는 방문자 유입을 위한 가장 기본적인 기능이다. 검색 엔진(로봇)의 경우 홈페이지의 title 또는 메타 태그 내용을 기반으로 검색어를 생성 하므로 게시판 내용의 경우 제목영역이 title이나 메타태그로 지정 되면 매우 효과 적이다. 이러한 특성을 잘 살리고 있는것이 블로그 들이다. 티스토리의 경우 역시 게시글의 제목을 제목 형식으로 이용해서 검색 노출에 매우 좋은 효과를 보이고 있다. 하지만, 그누보드의 경우 "사이이트명 > 게시판 제목 ..." 형태로 표시되어서 검색 효과를 보지 못하게 됩니다. 따라서, /head.sub.php 에서 "//title 적용 부분" 주석 처리 된 부분을 다음과 같이 수정하시면 각 페이지 환경에 맞게 출력이 됩니다. //title 적용 부분 ..
간혹 특정 폴더(디렉토리) 내에 있는 파일들 중에 전체 또는 선택 적으로 일괄 삭제를 해야 할 경우가 있습니다. 다음과 같은 함수를 할용하시면 됩니다. 1. opendir(path) path 지정한 경로의 폴더안에 있는 파일들을 불러 옵니다. 예) 결과) filename: . : filetype: dir filename: .. : filetype: dir filename: apache : filetype: dir filename: cgi : filetype: dir filename: cli : filetype: dir 2. glob(패턴) 파일의 패턴을 호출할때 사용합니다. 예로 *.txt 라고 하면 txt 확장자 파일을 모두 찾아 줍니다. 예) 결과) funclist.txt size 44686 func..
1. php-5.1.4 버전 다운로드 및 압축 풀기 wget http://ftp.linux.co.kr/pub/php/php-5.1.4.tar.bz2 tar xvfj php-5.1.4.tar.bz2 cd php-5.1.4 * 위 URL로 PHP를 다운로드 안 받아 질경우 아래 파일 직접 다운로드 2. 환경설정 중요한 세팅을 할 필요가 있다. 바로 환경변수부분인데.. /etc/profile 파일을 열어서 제일 상단에 아래부분을 추가하도록 하자. # vi /etc/profile ======================================================================================= APACHE_HOME=/usr/local/apache ORACLE_HOME=/..
오류1: configure: error: DBA: Could not find necessary header file(s). 해결: 관련 라이브러리를 설치하면 됩니다. yum install gdbm-devel 오류2: configure: error: Cannot find ldap.h 해결: 위와 같은 오류 발생의 원인은 필요한 패키지가 설치되지 않아서 생긴 오류 입니다. 즉, 리눅스 설치 하실때 개발 패키지라고 있죠 그거 왠만해선 체크해서 설치 해주시는게 좋습니다. 특히 소스 설치시에 필요한 패키지가 없어서 위와 같은 오류가 생기는 것으로써 소스 설치시에 필요한 것들을 yum 으로 모두 설치 해주는게 좋습니다. 이미 설치된것은 설치를 하지 않으니 yum 이 아주 편리하죠. yum -y install gcc..
인젝션 방어를 위한 처리를 하기 위해선 get, post 로 넘어오는 모든 변수중에서 DB에 사용될 변수에 대해 검수를 거친뒤에 DB에서 사용하도록 해야하나 이미 구축된 사이트에 일일이 적용하기엔 힘들 경우 아예 get, post 데이터 전체를 검사하도록 다음과 같이 구현해 봤습니다. //인젝션 공격 막기 넘어오는 변수들 모두 검사 //GET while(list($fildn1,$fildv1) = each($_GET)) { if(eregi("--",$fildv1)) { echo ""; exit; } } //POST while(list($fildn2,$fildv2) = each($_POST)) { if(eregi("--",$fildv2)) { echo ""; exit; } } 일단 인젝션 공격에 대표적인 문..
업로드시 용량 제한으로 인해 업로드 되지 않는 경우가 있습니다. php.ini 파일을 수정해주시면 되는데 기본 설정이 보통 2MB 로 되어 있습니다. php.ini 파일의 설치 경로에 따라 다를 수 있지만 대부분 기본 경로는 /usr/local/php/lib/php.ini 에 보통 설치 합니다. 해당 파일에서 아래 위치 부분들을 수정 해주시면 됩니다. 파일 업로드 적용 여부 file_uploads = On 파일 업로드 최고 용량 지정 MB upload_max_filesize = 20M POST상에 전송되는 용량 지정 upload_max_filesize와 동일하게 맡혀 주시면 됩니다. post_max_size = 20M 파일이 업로드 되는데 걸리는 시간 최대값, 300초면 5분정도이며 무한정 세션을 열어 ..
변수값에서 자릿수를 맞혀줘야 할때가 종종 있다. 예를 들면 날짜 데이터가 2009-04-10 이런식으로 처리되어야 하는데 넘어온값이 "2009-4-10" 이렇게 넘어 오는 경우 예전에 if($day
addslashes() DB에 데이터를 입력할 때 ' 홀따옴표가 들어가는경우 오류가 나는걸 방지 하기위해 ' 앞에 \ 백슬러시를 붙이는 역할을 합니다. \' 처럼... stripslashes() addslashes() 반대 되는 역할로써 ' 홀따옴표에 \붙여진걸 제거 해주는 역할을 합니다. 게시판등 사용자의 입력내용을 받을때 유용하게 활용 하면 str_replace 등으로 굳이 변환하지 않고 DB에 바로 저장 가능합니다.
DB에 있는 값이 UTF-8 인데 EUC-KR로 변경하고 자 할때 또는 반대로 EUC-KR로 저장된 값을 UTF-8 로 변경 하고자 할 경우. iconv() 함수를 이용 하면됩니다. 인코딩이 틀릴 경우 한글이 깨져 버리는 증상이 있어 이와 같이 변경할 필요가 있지요. $content = "UTF-8로 된 내용"; $content = iconv("UTF-8","EUC-KR",$content); 출처 : 세이박스 http://saybox.tistory.com
1. 영문자를 제외한 모든 문자를 null로 치환 preg_replace("/[^A-Za-z]/", "", $a); 결과 : "testtest" 2. 영문자와 공백문자(Space)를 제외한 모든 문자를 null로 치환 preg_replace("/[^A-Za-z|\x20]/", "", $a); 결과 : " test test" 3. ASCII 범주 코드 영문+특수문자를 제외한 모든 문자를 null로 치환 preg_replace("/[^\x20-\x7e]/", "", $a); 결과 : " test. test ??" 4. 한글만 빼경우는 한글의 모든 코드 범주를 대응해줘야 합니다. http://www.php.net/manual/kr/function.ord.php 를 참고. 또는 다음과 같이 정규식으로 한글의 범..
글 작성시 html 에디터 등으로 작성된 글에서 텍스트만 필요한 경우 string strip_tags(string str [, string allowable_tags]) * 문자열 str에서 html이나 php태그를 모두 제거한 문자열을 반환한다. * allowable_tag은 문자열 str에 적용되어 있는 html, php태그를 사용할 경우, 그 태그는 제거하지 않고 적용어 있는 문자열을 반환한다. 예) $ddd = "‘스타’와 ‘연인’은 끝내 헤어질 것인가."; echo strip_tags($ddd); 결과) 스타’와 ‘연인’은 끝내 헤어질 것인가. 출처 : 세이박스 http://saybox.tistory.com
문서.hwp 이름으로 된 파일을 php Header 방식으로 다운로드 받고자 할 경우 다운이 안되는 경우 session_start(); header("Cache-control: private"); 소스 상단에 위와 같이 두줄 추가 해주면됩니다.
게시판 글쓰기를 눌렀는데 로그인 페이지로 이동 해서 로그인후 자동으로 방금 글쓰기를 할려고 하던 페이지로 이동하도록 처리 하고 싶다면 리턴URL 값을 urlencode로 넘겼다가 다시 받는 방식을 이용하면 됩니다. * 글쓰기 페이지 * 로그인페이지
동시 접속자 확인 하기 위해선 서버에서 root 권환으로 netstat -n | grep 80 | grep ESTABLISHED | wc -l 이라고 실행하면 동시 80 포트로 접속한 사람 수 가 나타납니다. netstat -n | grep 80 라고만 실행하면 Fin_Wait, Time_Wait 인 접속자 수 모두를 표시 하게 됩니다. 웹상에서 리눅스 명령을 실행할땐 exec 함수를 사용합니다.
정확한 설명서라기 보다는 그냥 내가 이렇게 했다는 메모라고 할 수 있다. 아파치와 연동시키는게 더 나을 수도 있겠지만, 윈도우에서는 IIS가 더 좋은 성능을 발휘할 꺼라 생각해서이다.. (테스트 해본적은 없음. ㅡ.ㅡ) 1. php 압축파일 버전을 받아서 설치한다. 2. 설치된 디렉토리를 PATH 에 추가한다. 적용해도 PATH에 바로 들어가진 않으니까 명령 프롬프트 에서 'PATH=%PATH%;설치 디렉토리;' 를 입력한다. 3. php.ini-recommended를 php.ini로 이름 바꿔서 c:\windows 에 복사. (-- 3-x 의 과정은 안해도 됨 --) 3-1. php.ini 속성에서 display_errors = On, log_errors = Off 로 한다. 3-2. error_rep..
1. 메타 이동 방식
결과: 10월 18일 (토)
질문: session_destroy() 을 쓰면.. 아래와 같은 에러가 발생합니다...세션두 안 묵구여??? Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in 답변: 위와 같은 경우 대부분 session_destroy(); 함수 사용전 session_start(); 빠트린 경우가 대부분 입니다. 참고:session_destroy() : 모든 session data를 파괴 session_unregister("세션명") : 특정 세션만 없애고자 할 때는 을 사용