iptables 를 이용한 국가별 차단

출처 : 설랑이의 공부 블러그 – http://srzero.tistory.com/104

중국의 짱개 / 이태리 양키 이런놈들이 자꾸 나의 서버를 침입한다.
이놈들을 막기 위해 방화벽을 설치 후 간단한 Script를 돌려 차단하였다.
iptables를 이용하면 간단하게 막을 수가 있다.

iptables를 이용하여 국가별 접속을 차단하는 방법에는 2가지가 있다.
(1) Kernel을 업데이트 한 후 iptables를 이용하는 방법
(2) Script를 이용하는 방법

나는 아직 Kernel Level에서 접근하는 법을 확실히 익히지 못하여 (2) 번 레벨에서 막도록 하겠다.

[1] 접속한 IP찾기
/var/log/auth.log를 뒤져 보면 아래와 같은 메시지가 뜬다.

1 18:Feb 13 13:14:03 xxxxx pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=200.27.62.186
2 22:Feb 13 13:14:07 xxxxx pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=200.27.62.186
3 25:Feb 13 13:14:09 xxxxx pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=200.27.62.186

위에서 얼핏보면 알겠지만 220.27.62.186 에서 자꾸 접속을 시도한다. 저놈이 도대체 어느나라 놈인지 알아보자.

대충 보아하나 칠레쪽 양키놈이다. 아~~~ 내서버에 뭔 볼일이 있다고 ㅠㅠㅠ 이제 저놈을
막도록 하자. 참고적으로 오늘부터 칠레 놈들이 싫어졌다.

[2] 국가별 Network 정보 Download하기
URL : http://geolite.maxmind.com/download/geoip/database/ 
위 URL로 가서 가장 최신으로 업데이트 된 Network 정보를 가져온다.
파일(GeoIPCountryWhois.csv) 을 열어보면 아래와 같다.

     1 “1.0.0.0”,”1.7.255.255″,”16777216″,”17301503″,”AU”,”Australia”
     2 “1.9.0.0”,”1.9.255.255″,”17367040″,”17432575″,”MY”,”Malaysia”
     3 “1.10.10.0”,”1.10.10.255″,”17435136″,”17435391″,”AU”,”Australia”
     4 “1.11.0.0”,”1.11.255.255″,”17498112″,”17563647″,”KR”,”Korea, Republic of”
     5 “1.12.0.0”,”1.15.255.255″,”17563648″,”17825791″,”CN”,”China”
     6 “1.16.0.0”,”1.19.255.255″,”17825792″,”18087935″,”KR”,”Korea, Republic of”
     7 “1.21.0.0”,”1.21.255.255″,”18153472″,”18219007″,”JP”,”Japan”
     8 “1.22.0.0”,”1.23.255.255″,”18219008″,”18350079″,”IN”,”India”
     9 “1.24.0.0”,”1.31.255.255″,”18350080″,”18874367″,”CN”,”China”
    10 “1.33.0.0”,”1.33.255.255″,”18939904″,”19005439″,”JP”,”Japan”
    11 “1.34.0.0”,”1.35.255.255″,”19005440″,”19136511″,”TW”,”Taiwan”
    12 “1.36.0.0”,”1.36.255.255″,”19136512″,”19202047″,”HK”,”Hong Kong”

앞에껀 순번 | startNetwork | EndNetwork | ,,, | 국가 이런 순이다. 그럼 위 정보를 파싱하여
Script를 만들어 보도록 하자.

[3] Script 생성하기

#! /bin/bash
echo “########## IP BLOCK Script START ###########”
# iptables init
sudo iptables -P INPUT ACCEPT
sudo iptables -F
echo “IPTABLES INIT SUCCESS”

BLOCK_LIST_FILE=./GeoIPCountryWhois.csv
echo “BLOCK LIST FILE = $BLOCK_LIST_FILE”

# ADD BLOCK TARGET LIST
BLOCK_TARGET_COUNTRY=”China|France|Chile”

# REGIST BLOCK IP FOR LOOP
for IP_BANDWIDTH in `egrep $BLOCK_TARGET_COUNTRY $BLOCK_LIST_FILE | awk -F, ‘{print $1, $2}’ | awk -F\”  ‘{print $2″-“$4}’`

do
   sudo iptables -I INPUT -p all -m iprange –src-range $IP_BANDWIDTH -j DROP
done

sudo iptables -L
echo “################### IP BLOCK Script END ############# “

위 스크립트는 랑이가 짠것이다. awk를 이해 하고 있다면, 아주 쉽게 만들수 있다.

만약 허용국가만 포함하고 싶을때에는 egrep의 조건을 조금 바꾸어주면된다.

#! /bin/bash
echo “########## IP BLOCK Script START ###########”
# iptables init
sudo iptables -P INPUT ACCEPT
sudo iptables -F
echo “IPTABLES INIT SUCCESS”

BLOCK_LIST_FILE=./GeoIPCountryWhois.csv
echo “BLOCK LIST FILE = $BLOCK_LIST_FILE”

# ADD BLOCK TARGET LIST
ALLOW_TARGET_COUNTRY=”Korea”

# REGIST BLOCK IP FOR LOOP
for IP_BANDWIDTH in `egrep -v $ALLOW_TARGET_COUNTRY $BLOCK_LIST_FILE | awk -F, ‘{print $1, $2}’ | awk -F\” ‘{print $2″-“$4}’`

do
sudo iptables -I INPUT -p all -m iprange –src-range $IP_BANDWIDTH -j DROP
done

sudo iptables -L
echo “################### IP BLOCK Script END ############# “

노란색으로 표현한 부분은 간단한 grep 명령이므로 별도로 설명안해도 될듯하다.

[4] Script 실행

########## IP BLOCK Script START ###########
IPTABLES INIT SUCCESS
BLOCK LIST FILE = ./GeoIPCountryWhois.csv

DROP       all  —  anywhere             anywhere            source IP range 1.202.0.0-1.207.255.255
………
………
………

DROP       all  —  anywhere             anywhere            source IP range 1.12.0.0-1.15.255.255

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
################## IP BLOCK Script END #############

다됐따 ㅋㅋㅋ 요렇게 하면 무사히 작업이 완료된다.

이 글을 쓰니 괜시리 애국심이 막 불타온다. 나도 언젠간 짱깨 / 양키 놈들 서버 들어가서 해집고 다니는 실력자가 되어야 겠다 .ㅋㅋㅋㅋ 이제 중국|프랑스|칠레 의 나쁜시키들이 안들어오겠지? 낼도 로그를 지켜봐야겠당 ㅋㅋ

                                                             – 2011.02.15 랑이씀 –

IPtables 사용법

출처 : 우동 블러그 – http://s2kiess.blog.me/30164008171

1. iptables 기본 명령어

 

 1-1. iptables 기본 명령어 목록

    * -L : 적용 되어 있는 정책 목록을 출력한다.

    * -A : 새로운 정책을 추가한다.

    * -I  : 위치를 선택하여 정책을 삽입한다.

    * -R : 위치를 선택하여 정책을 교환한다.

    * -D : 위치를 선택하여 정책을 제거한다.

    

    * -N : 새로운 체인을 만든다.(INPUT, OUTPUT, FORWARD 외에)

    * -P : 체인에 미리 정의되어 있는 정책을 수정한다.

    * -F : 체인으로 부터 규칙들을 지운다.

    * -Z : 체인의 모든 규칙들의 패킷과 바이트 카운트를 0으로 만든다.

    * -X : 비어있는 체인을 제거한다.

 

1-2. iptables 기본 명령어 사용 예제

    * iptables -L : 적용 시킨 정책 목록 출력

    * iptables -D INPUT 1 : INPUT 체인 첫번째 줄에 있는 정책을 삭제한다. 

 

 

2. iptables 제어 옵션 명령어 

 

 2-1. iptables 제어 옵션 명령어 목록

    * -s : 패킷의 송신지를 제어한다.

    * -d : 패킷의 수신지를 제어한다.

    * -j  : 방화벽을 지난 후 패킷의 상태를 제어한다.

    * -p : 프로토콜을 제어한다.

    * –sport : 송신지 포트를 제어한다.

    * –dport : 수신지 포트를 제어한다.

 

 2-2. iptables 제어 옵션 명령어 사용 예제

    * iptables -A INPUT -s 192.168.0.5 -j DROP : 192.168.0.5로 부터 오는 패킷을 모두 차단한다.

    * iptables -A INPUT -d ! 192.168.0.10 -j ACCEPT : 192.168.0.10를 향해 가는 패킷이 아니라면 허용한다.

    * iptables -A INPUT -p TCP -j ACCEPT : TCP 프로토콜 패킷을 모두 허용한다.

    * iptables -A INPUT -p TCP –dport 80 -j DROP : 80번 포트를 향해가는 TCP 패킷을 차단한다.

 

3. 패킷 상세 내역에 따른 제어 옵션 명령어

 

 3-1. iptables 패킷의 상세 내역에 따른 제어 옵션 목록

    * –tcp-flags : TCP 플래그에 따라 패킷을 제어한다.(첫 번째 인자를 검사하고 두 번째 인자는 설정이 되어야 함)

    * -m state –state : 패킷의 상태와 목적에 따라 제어한다.

        

        ※ -m state 명령어 상태 리스트 ( -m state –state [상태] )

          – NEW : 새로 접속을 시도하는 패킷

          – ESTABLISHED : 접속을 한 상태에 있는 패킷 

          – INVALID : 유효하지 않은 패킷 (보통 DROP된다.)

          – RELATED : 접속에 연관성을 가지는 패킷 ( e.g. FTP 접속 패킷, ICMP 에러 메세지)

       

 3-2. iptables 패킷의 상세 내역 제어옵션 예제

    * iptables -A INPUT -p TCP –tcp-flags SYN,RST,ACK SYN -j DROP : SYN패킷의 set이 1이면 DROP시킨다.

    * iptables -A INPUT -p TCP -m state –state NEW -j DROP : 접속을 시도하는 SYN, ACK 플래그 패킷을 차단한다.

 

텍스트큐브의 MySQL에서의 테이블 생성 쿼리 오류 (텍스트큐브 설치 시 테이블을 생성하지 못했습니다 문제)

현재 등록된 1.8.5 버전 기준으로, MySQL에 적용할 수 없는 잘못된 테이블 생성 쿼리문을 작성합니다.

따라서 tc 가 설치된 폴더의  setup.php 파일을 아래와 같이 수정합니다.

행의 위치는 버젼에 따라 조금씩 차이는 있으나, 대략 1133 행 근처입니다.

사용자 삽입 이미지

$charset = ‘TYPE=MyISAM DEFAULT CHARSET=utf8’;

를 아래와 같이 변경

$charset = ‘DEFAULT CHARSET=utf8’;

한 후 저장합니다.

iStat Server for Linux 설치 방법

About istatd

istatd is a daemon serving statistics to your iStat iPhone application from Linux, Solaris & FreeBSD. istatd collects data such as CPU, memory, network and disk usage and keeps the history. Once connecting from the iPhone and entering the lock code this data will be sent to the iPhone and shown in fancy graphs.

What is iStat for iPhone?

iStat is a iPhone application developed by Bjango (http://www.bjango.com/). With iStat you can remotely monitor CPU, memory, disks, uptime and load averages from any Mac, Linux or Solaris computer from your iPhone. You can download iStat in iTunes App Store.

How to install

These steps assume you are logged in as root and have GNU build tools installed together with libxml2.

1) Download istatd-x.x.x.tar.gz

   # wget http://github.com/downloads/tiwilliam/istatd/istatd-0.5.8.tar.gz

2) Extract tar ball

   # tar -xvf istatd-0.5.8.tar.gz

3) Install dependencies

   istatd requires GNU build tools, libxml2 and libxml2-devel.
   Depending on your distribution these packages can be diffrently named.

   CentOS
   # yum install libxml2-devel

   Ubuntu
   # apt-get install libxml2-dev

4) Build istatd

   # cd istatd-x.x.x

   Here you can configure where you want your binary and config to end up (default /usr/local).
   # ./configure
   or
   # ./configure --prefix=/ --sysconfdir=/etc
   or
   # ./configure --prefix=/usr/local/istatd


   # make
   # make install

5) Add user and configure directories

   # useradd istat
   or
   # groupadd -g 150 istat 
   # useradd istat -d /usr/local/istatd -u 150 -g 150 -s /sbin/nologin -g istat


   # mkdir -p /var/{run,cache}/istat
   # chown istat.istat /var/{run,cache}/istat

6) Configure your config to match your needs and system

   # vim /etc/istat.conf
   or
   # vi /usr/local/istatd/etc/istat.conf

   Note: Don't forget to change your server_code.

7) Fire it up

   # /usr/bin/istatd -d
   or 
   # /usr/local/istatd/bin/istatd -d

MySQL5.5.25 Source Compile 설치.

CentOS 상에 MySQL5.5.25 Source Compile 설치.
1. 해당 시스템 상에 root 계정으로 로그인

2. http://www.mysql.com 으로 부터 MySQL-5.5.25.tar.gz 소스 파일 다운로드.

3. wget cmake.org/files/v2.8/cmake-2.8.8.tar.gz 다운로드
    MySQL 5.5 버전부터는 크로스 플랫폼을 지원을 위해서 configure 대신 cmake 유틸리티로 변경되었음.

    – tar -zxvf cmake-2.8.8.tar.gz
    –  cd cmake-2.8.8
    –  ./bootstrap
    –  make
    –  make install
 
    위 설치가 완료되면, /usr/local/bin/cmake 가 생성된 것을 확인할 수 있다.

4. tar -zxvf  MySQL-5.5.25.tar.gz

5. 컴파일 실행
     cmake -DCMAKE_INSTALL_PREFIX=/MySQL/

-DWITH_EXTRA_CHARSETS=all
-DMYSQL_DATADIR=/MySQL/data/
-DENABLED_LOCAL_INFILE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
-DMYSQL_TCP_PORT=3306

    5.1 cmake 실행 도중,

               — Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
                   CMake Error at cmake/readline.cmake:83 (MESSAGE):
                   Curses library not found.  Please install appropriate package, 와 같은 에러 발생 시,

              yum -y install ncurses-devel  실행.

6. make && make install

7. groupadd mysql && useradd -g mysql -d /MySQL -s /bin/false mysql

8. cd /MySQL

9. chown -R mysql.mysql .

10. ./scripts/mysql_install_db —user=mysql

11. chown -R root .

12. chown -R mysql data

13. install -m 755 /MySQL/support-files/my-innodb-heavy-4G.cnf /etc/my.cnf

14.
     vi /etc/my.cnf
       default-storage-engine = InnoDB
       innodb_force_recovery=0

15.
     install -m 755 /MySQL/support-files/mysql.server /etc/rc.d/init.d/mysql
     chkconfig —add mysql
     chkconfig —level 3 mysql on
     chkconfig —level 5 mysql on
   
     /etc/rc.d/init.d/mysql start

16.
     /MySQL/bin/mysql -u root -p mysql
        update user set password=password(‘12345’) where user=‘root’;
         flush privileges;
 
     /MySQL/bin/mysql -u root -p 12345 

게임 서비스 약어

===========================================================================================================
각종 용어 설명
===========================================================================================================

● UV(Unique Visitors)
일방문자수

● NRU(New Registered User)
신규유입자

● CCU(ConCurrent User)
동시접속자
정의 : 동일한 시간대에 게임에 접속해 있는 유저를 말한다. 흔히 로그인 서버를 기준으로 산정한다.

● ACCU(Average ConCurrent User)
평균동접

● PCCU(Peak ConCurrent User)
최고동접

● PU(Paying User)
정의 : 구매유저수

● BU(Buying User) = PU(Paying User)
구매자, 한번이라도 캐쉬 아이템을 구입한 적이 있는 유저
주로 정액제 비지니스 모델을 사용하는 게임에서 활용하는 용어
정액 비용을 결제한 유저(PU), 캐쉬 아이템을 구입한 유저(BU)

● ARPU(Average Revenue Per User)
정의 : “일정기간”의 매출액을 그 기간내의 BU로 나누어 산출한 수치
       한달을 기준으로 해서 유저가 평균적으로 결제한 금액으로 산정.
ARPU 구하는 공식 = 한달간총매출/한달간총PU
                 = (총매출/총구매건수) * (총구매건수/총PU)
                 = 구매1건당평균구매가격 * 1인당한달간평균구매건수
PU 1인당 1달 평균 구매가. 전체매출/PU, 1인당 한달간 평균매출액

● UV(Unique Visitor)
한번이라도 접속을 한 유저

● BUrate(Buying User rate)
BU/UV

● MMO UV 산출법 : PCCU * 3.935
CASUAL UV 산출법 : PCCU * 7.45

● QC(Quality Control)
품질관리
게임의 테스트, 분석 등을 통해 문제점을 파악하는 업무

● QA(Quality Assurance)
품질관리
QC의 업무 자체를 보증하는 업무

● RMT(Real Money Trading)
현거래/현질

● Postmortem
원래 의미는 부검으로 게임 개발 이후에 개발에 대한 사후 분석을 하는 행위

● LF(License Fee)
계약금

● MG(Minimum Guarantee) = AR(Advanced Royalty)
로열티를 미리 책정해 땡겨받음

● TFT(Task Force Team)
특정한 일을 해결하기 위해서 선별된 인력으로 구성된 임시조직

● CM(Commercial Launch)
상용화

● F2P(Free to Play)
부분유료화 비지니스 모델을 택한 게임

● P2P(Pay to Play)
정액제 비지니스 모델을 택한 게임

● AP(Associate Producer)
게임 기획자와 유사한 역활로 창의력이 요구되는 직책, 각종 이벤트/프로모션 기획, 아웃소싱/관리
코디네이션 업무와 일정관리 등의 업무를 수행

● 잔존율 = 재방문율
정의하기에 따라 다르지만 본인의 해석은 다음과 같음
정의 : 현재 게임의 지속성을 가늠하기 위해 활용되는 대표적인 지표로 보통 <주별 재방문율> 기준으로 4주를 기준으로 신뢰성을 가진다.

● IDC(Internet Data Center)
항온·항습·보안시설 등을 갖추고 인터넷 업체들에 서버를 빌려주거나 이들의 서버를 대신 관리해주는 곳
한마디로 서버관리 대행업체.

● CDN(Content Delivery Networks)
원활한 다운로드를 위해서 콘텐츠 제공업자(CP)의 웹 서버에 집중돼 있는 콘텐츠 중 용량이 크거나
사용자의 요구가 잦은 콘텐츠를 ISP측에 설치한 CDN 서버에 미리 저장, CDN 서버로부터 최적의 경로로
사용자에게 콘텐츠를 전달하는 기술.
(한마디로 IDC 여러개 두고 한쪽으로 트레픽이 너무 많이 밀릴때 알아서 가장 속도가 빠른 곳에서 다운로드를 해주는 rjt)

한글 코드 지정 HTML Meta 태그

기본
형식

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″
/>

문자셋을 지정하기

모든 페이지가 한글로 지정이 되어있기는 하지만 다같은 한국어 사이트가 아니라는 것은 개발자들만이 아는 비밀 입니다.

컴퓨터가 맨처음에 만들어 진곳이 영어를 쓰는 나라에서 만들어져서 기본적으로 영어를 탑재를 하게 됩니다. 그러해서 만일 html을 만들때
언어셋을 지정을 안하고 한국어를 쓰시게 되시면 깨짐 현상이 일어나서 보기가 안좋아지게 됩니다.

이러한것을 방지하기 위해서 html을 만든 사람들은 나라에 언어코드를 넣어주어서 지원을 해주자고 생각을 해내게 됩니다.

우리나라에서는 크게 EUC-KR과 UTF-8로 지원이 됩니다.

이 두개의 차이점은 언어를 담는 그릇의 크기의 차이라고 보시면 됩니다.

UTF-8의 경우에는 거의 모든 문자들까지 담아두고 있고 ECU-KR은 현제 저희들이 쓰고있는 언어들만을 담고 있다고 보시면
됩니다.

그리 되게되면 사용자는 이 두개중에서 어는것을 선택해야 되냐를 질문을 하게 됩니다.

이에 대한 답은 2개를 설치를 해도 되지만 저의 생각으로는 현재 UTF-8의 서버 설정이 많아지고 있고 하여서 UFT-8로 설정을 하시면
될듯합니다.

만일 서버가 EUC-KR이게 되시면 EUC-KR로 하는것이 맞는 선택이 되겟습니다.

키워드와 요약 정보 제공하기

저희가 쓰는 네이버나 구글 그리고 다음 과 같은 포털 싸이트에서의 검색 엔진에서 웹문서를 자동 등록 할때 사용할 키워드와 문서 요약 정보도
<meta>태그가 사용됩니다.

키워드는 웹 사용자들이쓸만한 언어를 담아주시면 되고

요약정보는 그글의 핵심적인 정보를 담아주시면 됩니다.

Php Ereg/Eregi/Reg_replace/.. Deprecated 문제 Preg

원문 : http://www.sitehis.com/spb3/sboard3/read.php?db=talk&uid=167

개인적으로 perl-레귤라보다 posix-레귤라 함수를 매우 좋아하는 터라,
충격이 큰데요.
추가 자세한 정보가 있으신 분들은 댓글이나 트위터 @sitehis 로 자료 주시면 감사하겠습니다.

PHP 언어에서 POSIX 레귤러함수를
5.3 버전에 deprecated(사용하지말것을경고)하고.
6.0 버전에서는 아예 삭제하겠다는 공지가 올라왔습니다.

처음 듣고 말도 안된다고 하였지만,
소문이아니고 perl 레귤러 함수로 고쳐 써야 하는 것으로 최종 확인하였습니다.

 

  • ereg -> preg_match
  • eregi -> preg_match ( i modifier )
  • ereg_replace -> preg_replace
  • ereg_replace -> preg_replace ( i modifier)
  • split -> preg_split
  • spliti -> preg_split ( i modifier )
  • sql_regcase() -> 없음 알아서..
     

자세한 안내는 다음에서 확인하실 수 있습니다.

하나씩 정검하여 봅시다.

급하니깐 E_DEPRECATED 에러메세지를 우선 안 나오게 할려면,

  • error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
  • 혹은 error_reporting(E_ALL ^E_DEPRECATED);
  • 혹은 @ini_set(‘display_errors’, 0);

고쳐버리겠다고요?? 그러면 다음 자동으로 고쳐주는 프로그램을 이용해보세요


ereg()

  • ereg(‘\.([^\.]*$)’, $this->file_src_name, $extension);
  • preg_match(‘/\.([^\.]*$)/’, $this->file_src_name, $extension);
  • 레귤러 표현식에 / … / 로 감싸는 것으로 우선 해결

eregi()

  • eregi(‘\.([^\.]*$)’, $this->file_src_name, $extension);
  • preg_match(‘/\.([^\.]*$)/i’, $this->file_src_name, $extension);
  • 레귤러 표현식에 / … /i  로 감싸는 것으로 우선 해결

ereg_replace()

  • ereg_replace(‘[^A-Za-z0-9_]’, ”, $str);
  • preg_replace(‘/[^A-Za-z0-9_]/’, ”, $str);
  • 복잡한 것은 이렇게~
  • $str_new = preg_replace(‘/’ . preg_quote($word) . ‘/’, ”, $str_old);
  • 간단하게 이런 방법도 ( / 대신에 별로 사용않하는 # 혹은 `(틸드)를 사용해서 )
  • $str_new = preg_replace(“#$word#’, ”, $str_old);
  • $str_new = preg_replace(“`$word`”, ”, $str_old);

eregi_replace()

  • ereg_replace(‘[^A-Za-z0-9_]’, ”, $str);
  • preg_replace(‘/[^A-Za-z0-9_]/i’, ”, $str);
  • 복잡한 것은 이렇게~
  • $str_new = preg_replace(‘/’ . preg_quote($word) . ‘/i’, ”, $str_old);


관련 게시물(http://www.sitehis.com)

php 5.2-> 5.4 버전업 문제 해결

출처 :
http://smallmir.tistory.com/201

ereg 계열 함수 사용시 오류 메시지.

ereg,eregi,ereg_replace

>>> stripos,str_ireplace,preg_replace,preg_match 등으로 대체

eregi  preg_replace 대체 가능.

eregi(‘123′,’123456’);

preg_replace(‘/123/I’,’123456′);

ereg계열에서는 대소문자 구분이

ereg  eregi  구분되었음.

그것을 preg_replace 에서는 /i   추가해주면 된다.

preg_match 같음.

split 함수 사용시 오류

>>> explode 함수로 대체. split  정규식을 지원했으나, explode  지원하지 않음.

session_register 삭제

 

//’eregi 함수사용을 권장하지 않는다’ 라는 메세지 출력.

Deprecated: Function eregi() is deprecated in /home/nuhome/web/nux/admin/plugin.php on line 3

파일 수정을 하지 않을시 임시방편

@error_reporting(E_ALL & ~(E_NOTICE | E_DEPRECATED | E_STRICT));

함수 인자에 변수를 참조로 전달할 수 없게됨

<?

function modify($array) {
$array[] = 'zero';
}
$array = array(0, 1, 2);
modify(&$array);

?>

PHP Fatal error: Call-time pass-by-reference has been removed; If you would like to pass argument by reference, modify the declaration of modify(). in test.php on line 8

global 변수를 함수의 인자로 넘길 수 없음.

function test($_REQUEST){

}

magic_quotes_gpc에 대한 이해.

http://blog.naver.com/egirl5?Redirect=Log&logNo=110012870549

register_global off 처리

http://php.net/manual/kr/function.extract.php

사용을 하더라도 보안상 아래 순서에 맞게 덮어써주는 것을 추천합니다.

http://php.net/manual/kr/ini.core.php#ini.variables-order

EGPCS (Environment, Get, Post, Cookie, and Server)

> http://php.net/manual/en/language.variables.superglobals.php

extract($_ENV);

extract($_GET);

extract($_POST);

:

extract($_GET,EXTR_PREFIX_ALL,’_GET_’);

extract($_POST,EXTR_PREFIX_ALL,’_POST_’);

php 5.3 주요 변경 사항

http://kr.php.net/manual/en/migration53.incompatible.php

php 5.4 주요 변경 사항

http://kr.php.net/manual/en/migration54.incompatible.php

5.4 관련 한글 정리 문서

http://crizin.net/display/dev/What’s+New+in+PHP+5.4