색상표

CSS&HTML5 2012. 7. 31. 14:14

■ 2f4f4f darkslategray 다크슬레이트그레이
■ 708090 slategray 슬레이트그레이
■ 778899 lightslategray 라이트슬레이트그레이
■ 696969 dimgray 딤그레이
■ 808080 gray 그레이
■ a9a9a9 darkgray 다크그레이
■ c0c0c0 silver 실버
■ d3d3d3 lightgrey 라이트그레이
■ dcdcdc gainsboro 게인스보로
■ ffffff white 화이트
■ fff5ee seashell 씨쉘
■ fffafa snow 스노우
■ f8f8ff ghostwhite 고스트화이트
■ fffaf0 floralwhite 후로랄화이트
■ f5f5f5 whitesmoke 화이트스모크
■ f0f8ff aliceblue 앨리스블루
■ f0ffff azure 애쥬어
■ fdf5e6 oldlace 올드래이스
■ f5fffa mintcream 민트크림
■ ffefd5 papayawhip 파파야윕
■ ffdab9 peachpuff 피치퍼프
■ faf0e6 linen 린넨
■ eee8aa palegoldenrod 팔레골덴로드
■ ffe4e1 mistyrose 미스티로즈
■ ffe4b5 moccasin 모카신
■ ffdead navajowhite 나바조화이트

■ d2b48c tan 탄
■ f5deb3 wheat 위트
■ fafad2 lightgoldenrodyellow 라이트골덴로드옐로우
■ ffffe0 lightyellow 라이트옐로우
■ fff8dc cornsilk 콘실크
■ faebd7 antiquewhite 안티크화이트
■ f5f5dc beige 베이지
■ fffacd lemonchiffon 레몬치폰
■ fffff0 ivory 아이보리
■ f0e68c khaki 카키
■ e6e6fa lavender 라벤더
■ fff0f5 lavenderblush 라벤더블러시
■ ffe4c4 bisque 비스크
■ ffebcd blanchedalmond 블란체달몬드
■ deb887 burlywood 벌리우드
■ cd853f peru 페루
■ 00ced1 darkturquoise 다크터콰이즈
■ 00bfff deepskyblue 딥스카이블루
■ 7fffd4 aquamarine 아쿠아마린
■ 1e90ff dodgerblue 도저블루
■ 00ffff cyan 시안
■ f0fff0 honeydew 허니듀
■ 87cefa lightskyblue 라이트스카이블루
■ afeeee paleturquoise 팔레터콰이즈
■ e0ffff lightcyan 라이트시안
■ add8e6 lightblue 라이트블루
■ add8e6 lightsteelblue 라이트스틸블루
■ 40e0d0 turquoise 터콰이즈
■ 48d1cc mediumturquoise 미디엄터콰이즈
■ 00ffff aqua 아쿠아
■ 7b68ee mediumslateblue 미디움슬레이트블루
■ 191970 midnightblue 미드나이트블루
■ 6495ed cornflowerblue 콘플라워블루
■ 0000cd mediumblue 미디움블루
■ 6a5acd slateblue 슬레이트블루
■ 4682b4 steelblue 스틸블루
■ 0000ff blue 블루
■ 483d8b darkslateblue 다크슬레이트블루
■ 5f9ea0 cadetblue 카뎃블루
■ 87ceeb skyblue 스카이블루
■ 4169e1 royalblue 로열블루
■ b0e0e6 powderblue 파우더블루
■ 000080 navy 네이비
■ 00008b darkblue 다크블루
■ 8a2be2 blueviolet 블루바이올렛

■ ff6347 tomato 토마토
■ ff4500 orangered 오렌지레드
■ ff0000 red 레드
■ 800000 maroon 마룬
■ 8b0000 darkred 다크레드
■ b22222 firebrick 파이어브릭
■ d2691e chocolate 초콜렛
■ 8b4513 saddlebrown 새들브라운
■ a0522d sienna 시에나
■ bc8f8f rosybrown 로지브라운
■ ff7f50 coral 코랄
■ ff8c00 darkorange 다크오렌지
■ ffa500 orange 오렌지
■ b8860b darkgoldenrod 다크골덴로드
■ ffd700 gold 골드
■ ffff00 yellow 옐로우
■ 7fff00 chartreuse 차트리우스
■ 7cfc00 lawngreen 라운그린
■ 00ff00 lime 라임
■ 32cd32 limegreen 라임그린
■ 00ff7f springgreen 스프링그린
■ 3cb371 mediumseagreen 미디움씨그린
■ adff2f greenyellow 그린옐로우
■ 8fbc8f darkseagreen 다크씨그린
■ 0ee90 lightgreen 라이트그린
■ 8fb98 palegreen 팔레그린
■ 9acd32 yellowgreen 옐로우그린
■ 2e8b57 seagreen 씨그린
■ 00fa9a mediumspringgreen 미디움스프링그린
■ 20b2aa lightseagreen 라이트씨그린
■ 66cdaa mediumaquamarine 미디움아쿠아마린
■ 228b22 forestgreen 포레스트그린
■ 008b8b darkcyan 다크시안
■ 008080 teal 틸
■ 006400 darkgreen 다크그린
■ 556b2f darkolivegreen 다크올리브그린
■ 008000 green 그린
■ 808000 olive 올리브
■ 6b8e23 olivedrab 올리브드래브
■ bdb76b darkkhaki 다크카이
■ daa520 goldenrod 골덴로드

'CSS&HTML5' 카테고리의 다른 글

HTMl 특수기호 처리  (0) 2012.01.10
웹 표준 검증 사이트  (0) 2011.08.03
css 이미지 자르기  (0) 2011.07.29
HTML 5 유용한 링크  (0) 2011.07.29
블로그 이미지

스마트전

,

SQL 인젝션 공격 방어

MySQL 2012. 7. 31. 14:10

sql 인젝션 공격이란? 

참고 : http://blog.naver.com/myefhc/100119445401

 

sql 인젝션 방어

참고 : http://kr2.php.net/manual/en/security.magicquotes.whynot.php

출처 : http://blog.naver.com/tinenie/110016874721

출처 : http://b.mytears.org/tag/array_map

 

 

==================================================================================================

 

sql injection 을 피하기 위해 single quote 를 escape 시켜주는 코드를 작성해야할 필요가 있었는데, 매번 하나하나에 대해 mysql_real_escape_string 을 호출해주는 건 너무나도 번거로웠다. 뭔가 간단하게 처리할 방법이 없을까 하고 찾아봤더니 왠걸! array_map 이라는 마법의 함수를 발견할 수 있었다.

function stripslashes_deep($var){
    $var = is_array($var)?
                  array_map('stripslashes_deep', $var) :
                  stripslashes($var);
 
    return $var;
}
 
function mysql_real_escape_string_deep($var){
    $var = is_array($var)?
                  array_map('mysql_real_escape_string_deep', $var) :
                  mysql_real_escape_string($var);
 
    return $var;
}
 
if( get_magic_quotes_gpc() ){
    if( is_array($_POST) )
        $_POST = array_map( 'stripslashes_deep', $_POST );
    if( is_array($_GET) )
        $_GET = array_map( 'stripslashes_deep', $_GET );
}
 
if( is_array($_POST) )
    $_POST = array_map( 'mysql_real_escape_string_deep', $_POST );
if( is_array($_GET) )
    $_GET = array_map( 'mysql_real_escape_string_deep', $_GET);

common function 들을 정의해놓은 파일 맨 아래 저 코드를 삽입해버리니 sql injection 따위 이제 두려워할 필요가 없어졌다. 움하하핫!!

p.s) 그냥 array_map 에 stripslashes 나 mysql_real_escape_string 을 사용하게 되면 array 가 넘어온 경우 문제가 생길 수 있어서 약간 수정을 했습니다.

 

==================================================================================================

 

#### 1. 일반 SQL

 $query = "select userid, password from user_table where userid='" . $_POST["userid"] . "' and password = '" . $_POST["password"] . "'";

 

userid 가 "username' #"  이면 password 부분은 주석 처리됨..

  - MySQL 에서 # 가 주석

  - Oracle 에서 -- 가 주석

 

##==> 해결

' 를 못 쓰게 하면 된다.

mysql 에서 다음 함수 이용 or addslashes() 함수 이용..

  - mysql_escape_string()
  - mysql_real_escape_string()

 

 

========================================

#▶mysql SQL 사용 변수 check
# ' 를 사용 못하게 한다.
# 특수 문자가 하나라도 있으면 false 반환
function mysql_check( $array ) {
    foreach ($array as $str) {
        $pos = strpos($str, "'");
        if ($pos === false) continue;

        return false;
    }


    return true;
}

 

# SQL에 사용할 변수 검사

if (!mysql_check( array($email, $passwd) )) echo_error("검색 실패");

 

#### 2. ' 가 없는 SQL

 $query = "select * from user_table where type=". $_POST["type"] . "' ";

 

type 에 주석(#) 및 종료 문자( ; ) 등을 이용하여 공격을 할 수 있다.

 

##==> 해결

php에서 제공하는 escape_string 를 이용하는게 좋습니다.

 

  mysql_escape_string() 
  pg_escape_string() 
  sqlite_escape_string() 

$_POST = array_map('mysql_escape_string', $_POST);

 

 

#################################

# Reference

#################################

 

php|architect's Guide to PHP Security 라는 책의 Chapter 3, SQL Injection 내용이 Mysql 사이트에 공개되어 있습니다. 

http://dev.mysql.com/tech-resources/articles/guide-to-php-security.html 

블로그 이미지

스마트전

,

----

SQL 주입 공격 [ SQL injection, -注入攻擊 ]
 
웹 클라이언트의 반환 메시지를 이용하여 불법 인증 및 정보를 유출하는 공격. 웹 응용 프로그램에 강제로 구조화 조회 언어(SQL) 구문을 삽입하여 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회할 수도 있다. 이 공격은 MS SQL 서버뿐만 아니라 모든 관계형 데이터베이스 관리 시스템(RDBMS)에서 가능하다.

 

SQL 주입 취약점 [ SIV, SQL Injection Vulnerability, -注入脆弱點 ]

입력문에 구조화 조회 언어(SQL)문에 대한 필터링이 없을 경우 해커가 SQL문으로 해석될 수 있는 입력을 시도하여 데이터베이스에 접근할 수 있는 보호 취약점. 웹 브라우저 주소(URL)창 또는 사용자 ID 및 패스워드 입력 화면 등에서 데이터베이스 SQL문에 사용되는 문자 기호(‘ 및 “)의 입력을 적절히 필터링하지 않은 경우에 해커가 SQL문으로 해석될 수 있도록 조작한 입력으로 데이터베이스를 인증 절차없이 접근, 자료를 무단 유출하거나 변조할 수 있다. 예를 들어 관리자 ID와 패스워드에 아래 문자열을 입력했을 때 로그인되면 취약점이 존재한다. ID : ’or 1=1 ; -- 패스워드 : ’or 1=1 ; --

 

출처 : 네이버 용어사전

----

 

----

SQL injection

웹 사이트의 취약점을 이용해 권한 없는 사용자가 정보를 할 수 있는 공격기법이라고 합니다.

  

SQL injection에대해 설명 드리기전에 Datebase와 Query문에 대해 조금은 알고 계셔야 하는대

기초 과정이니까 보시면서 이해하시는 방향으로 진행하겠습니다

 

DateBase에

test 테이블이 있고 그곳에 필드 userid와 userpw 가있다고 치고

그 필드 각각 userid 부분엔 nisam   userpw부분엔 1234 이란 값 저장되어 있다고 치고

다음 Query문을 보면서 설명드리겠습니다.

 

Query문은

select 필드명1,필드명2 from 테이블명;

이런식으로 구성되는대 위에 만든 DB로 설명드리자면

 

 select uesrid,userpw from test where userid='nisam' and userpw='1234'

 

 

 

 라고 입력하고 Query문을 위에 만든 DB에 보내게 된다면

 

  userid='nisam'(true)  userpw='1234' (true)

 

 

 

 가 되어 true and true = true로 정상적으로 작동하게 됩니다.

 

  select uesrid,userpw from test where userid='nisam' and userpw='1023'

 

 

 

 만약 이런 Query문을 입력해서 보내게 된다면 어떻게 될까요?

 

  userid='nisam'(true)  userpw='1023' (false)

 

 가되어 true and false = false로 정상적으로 작동하지 않게 됩니다.

 

 

 

이제 직접 SQL injection을 해보면서 원리를 파악해보록 합시다.

 

이곳으로 접속해보세요

(이곳은 데모사이트 인대 웹해킹을 아무곳에서나 시도하면 잡혀갑니당)

 

 

 

 

이러한 로그인 창이 뜨는대요. 이 사이트의 SQL문을 추측해보자면

select uesrid,userpw from account where username='입력값' and password='입력값'

라고 추측할 수 있습니다 ( 필드명이나 테이블명 따윈 중요하지 않음)

이제 여기다가 아무값이나 입력해서 Query문을 보내보도록 합시다.

 

 

아이디와 비밀번호를 asdf로 입력해서 로그인을 시도한다면 아이디가 없다고 뜨고 로그인이 되지않습니다. 그이유는

 

  select uesrid,userpw from account where username='asdf' and password='asdf'

 

 

 

 이라는 Query를 보내게 됬을탠대

 

  username='asdf'(false) and password='asdf'(false)

 

 

 

 아이디가 존재하지 않아 비정상적으로 처리되어서 로그인이 되지 않았는겁니다.

 

 

 

다음엔 아이디와 비밀번호에 각각 'a을 입력하고 로그인해보세요. 이번에도 로그인이 안될탠대

아까와는 나오는 페이지가 조금 다를겁니다.

 

 

바로 에러 메세지 창이 뜨게 됩니다. 그이유는 Query문을 보게되면

 

  select uesrid,userpw from account where username=''a' and password=''a'

 

 이러한 방식으로 보내졌을탠대

 

  username=''a' and password=''a'

 

 

 

 '로 시작하고 '로 끝나야 하는대 이미 끝났는대 a가 나오게 되어 오류가 발생한것 입니다.

 

 

이제 위에 발생한 오류를 이용하여 Query문을 살짝 수정하여 원하는 값을 얻게 되는 SQL injection을

해보도록 하겠습니다.

 

 

아이디 부분에 admin 비밀번호에 'or'1'='1 을 입력하고 로그인 한다면 어떻게 될까요?

 

 

 

로그인이 성공하였습니다. 왜 로그인이 성공한걸까요 Query문을 보게되면

 

  select uesrid,userpw from account where username='admin' and password=''or'1'='1'

 

 

 

 이런식으로 보내졌을탠대

 

  username='admin'(true) and password=''(false)or'1'='1'(true)

 

 

 

 true and (false or ture = true) = ture

 

 공백은 비밀번호가 아니기 때문에 false이고 1=1는 true 이니까 or로 인해 true가 된겁니다.

 이해가 가시나요? 패스워드 부분에서 or을 넣어서 강제로 true가 되게 만든겁니다.

 

 

위에서 쓴 방법과 다르게 주석을 사용하여 Qurey문을 조작해서 로그인 해보도록 하겠습니다

SQL문에서의 주석은 --로 사용되어 --뒤에 입력된 부분은 모두 삭제되어 전송됩니다.

 

 

 로그인에 admin'--  비밀번호에는 아무거나 입력하시고 로그인 하시면 역시나

 

 

로그인에 성공하게 됩니다. 역시 Query문을 보면

 

  select uesrid,userpw from account where username='admin'--' and password='asdfasdd'

 

 

 

 이렇게 되는대 실제로 주석 때문에 처리된 SQL문은

 

  select uesrid,userpw from account where username='admin'(true)

 

 

 

 이로써 아이디부분이 true가 되어 로그인이 성공하게 됩니다.

 

 

대응방안

대응 방안으로는 데이터의 길이에 제한을 두는 방법이 있지만 이 방법보다는

로그인과 비밀번호 입력할때 특수문자의 제한을 두는 방법 또는

오류창을 이용자들에게 보여주지 않아 취약점을 쉽게 찾아낼 수 없게 하는 방법이 있습니다.

 

출처 : http://drew03011.blog.me/100105788412

----

'MySQL' 카테고리의 다른 글

테이블 내 특정 문자열 한꺼번에 바꾸기 - REPLACE  (0) 2012.08.30
MySQL / FullText에서 특정 단어를 빠르게 검색하기  (0) 2012.08.30
SQL 인젝션 공격 방어  (0) 2012.07.31
mysql 정리  (0) 2012.01.06
mysql date 함수  (0) 2012.01.05
블로그 이미지

스마트전

,

PHP 내장 함수

PHP 2012. 7. 27. 13:54

php 내장함수 모음 ]

1. 날짜 및 시간 관련함수

*time()
-용도: 현재 시각을 timestamp값으로 구한다.
-방법: time()
*date()
-용도: 사용자가 지정한 형태로 시간을 표시. 특정시간의 날짜와 요일등을 배열로 리턴한다.
-방법: date("표시할 시간의 포맷형태","특정한 timestamp값")
*mktime()
-용도: 지정된 날짜를 timestamp값으로 변환한다.
-방법: mktime(시,분,초,월,일,년)
*checkdate()
-용도: 날짜와 시간이 올바른 범위 안에 있는지 검사한다.
-방법: checkdate(월,일,년)
*getdate()
-용도: 특정timestamp값으로 시간,요일,날짜정보를 배열로 반환한다.
-방법: getdate(timestamp값) 또는 getdate()
*gettimeofday()
-용도: 현재 시스템의 현재 시간 정보를 배열로 리턴한다.
-방법: gettimeofday()
*gmmktime()
-용도: 그리니치표준 시간으로 지정한 날짜의 timestamp값을 리턴한다.
-방법: gmmktime(시,분,초,월,일,년)
*strftime()
-용도: 특정한 포맷으로 날짜 정보를 출력하는데 언어를 지정할수 있다.
-방법: strftime("표시할 시간의 포맷형태","특정시간의 timestamp값")
*microtime()
-용도: 현재시간의 마이크로타임 값과 timestamp값을 표시한다.
-방법: microtime()
*localtime()
-용도: 현재 서버의 로컬 타임을 표시
-방법: localtime() 또는 localtime("timestamp값")

2. 문자열 처리함수

*addslashes()
-용도: 작은따옴표 큰따옴표와 같은 특정문자 앞에 역슬래시 문자를 붙인다.
-방법: addslashes()
*stripslashes()
-용도: allslashes로 역슬래시 처리된 문자를 원상태로 되돌린다.
-방법: stripslashes()
*htmlspecialchars()
-용도: HTML코드를 소스 그대로 출력해준다.
-방법: htmlspecialchars()
*nl2br()
-용도: 문자열에 포함된 개행 문자를
태그로 모두 바꿔준다.
-방법: nl2br()
*echo()
-용도: 문자열 출력
-방법: echo("변수명" 또는 "문자열")
*sprintf()
-용도: 포맷 문자열을 통해 지정해 준 포맷으로 문자열을 표시한다.
-방법: sprintf("포맷","변수명")
*printf()
-용도: 지정할 수 있는 포맷에 따라 문자열을 출력한다.
-방법: printf("포맷","변수명")
*explode()
-용도: 문자열을 지정해준 구분자로 분리하여 배열에 저장한다.
-방법: explode("구분자","문자열인수")
*implode()
-용도: 구분자로 나누어 배열에 담은 문자열을 다시 지정해준 구분자로 연결하여 전체 문자열을 반환한다.
-방법: implode("구분자",배열변수명)
*join()
-용도: implode()와 동일한 기능을 수행한다.
-방법: join("/", "배열변수명")
*split()
-용도: 주어진 문자열을 정규표현식의 패턴에 따라 분리하여 배열에 저장한다.
-방법: implode("정규표현식","문자열")
*strcmp()
-용도: 두개의 문자열을 비교하여 참이면1, 거짓이면 0을 반환한다.
-방법: strcmp("문자열","문자열") 또는 strcmp("문자열","변수명") 또는 strcmp(변수명, 변수명)
*substr()
-용도: 문자열에서 특정시작 문자부터 길이만큼의 문자열을 추출하여 반환한다.
-방법: substr("문자열", 시작문자번호, 문자열의 길이)
*strchr()
-용도: 문자열이 처음으로 나타나는 위치부터 끝까지 반환
-방법: strchr("문자열","찾을 문자열")
*strstr()
-용도:strchr()함수와 동일한 수행을 한다.
-방법: strstr("문자열","찾을 문자열")
*strrchr()
-용도: 문자열이 마지막으로 나타나는 위치부터 끝까지 반환한다.
-방법: strrchr("문자열","찾을문자열")
*strpos()
-용도: 문자열 대신 처음으로 나타나는 위치를 숫자로 반환, 이때 숫자는 0부터 시작.
-방법: strpos("문자열","찾을 문자열")
*strrpos()
-용도: 찾고자 하는 문자열에서 마지막으로 나타나는 위치를 반환한다.
-방법: strrpos("문자열", "찾을 문자열")
*strlen()
-용도: 문자열의 길이를 반환한다.
-방법: strlen($변수명) 또는 strlen("문자열")
*strtolower()
-용도: 알파벳 대문자를 모두 소문자로 바꾸어 반환한다.
-방법: strtolower("문자열")
*strtoupper()
-용도: 알파벳 대문자를 소문자로 바꾸어 반환한다.
-방법: strtoupper("문자열")
*ucfirst()
-용도: 알파벳 문자열의 첫 글자를 대문자로 반환한다.
-방법: unfirst("문자열")
*ucwords()
-용도: 알파벳 문자열의 첫 글자를 대문자로 반환한다.
-방법: ucwords("문자열")
*strrev()
-용도: 인자로 전달한 문자열의 순서를 역전시킨다.
-방법: strrev("문자열")
*strtr()
-용도: 문자열에서 변경하고자 하는 문자열을 변경할문자열로 1:1 변경해준다.
-방법: strtr("문자열","변경하고자하는 문자열","변경할 문자열")
*str_replace
-용도: 문자열 중에 변경하고자 하는 문자열을 찾아 변환한다.
-방법: str_replace("찾을 문자열","변경할 문자열","문자열 원본")
*chop()
-용도: 문자열의 뒷부분의 공백 문자를 제거한 후 반환한다.
-방법: chop("문자열")
*trim()
-용도: 문자열의 앞과 뒤에 있는 공백을 제거한 후 문자열을 반환한다.
-방법: trim("문자열")
*quotemeta()
-용도: 메타문자 앞에 역슬래시를 붙인다.
-방법: quotemeta()
*ord/chr()
-용도: ord()함수는 문자열에서 첫번째 문자에 아스키코드값을 반환하고 chr()함수는 아스키함수에 해당하는 문자를 반환한다.
-방법: ord("문자열"), chr("아스키값")
*parse_str()
-용도: get방식과 같은 형태의 변수형을 변수와 값으로 받을 수 있게 해준다.
-방법: parse_str(변수명)

3.파일관련함수

*fopen()
-용도: 로컬경로의 파일이나 url경로의 파일을 읽기 모드나 쓰기 모드로 열어준다.
-방법: fopen("절대경로명/파일", "모드")또는 fopen("url주소", "모드")
*fclose()
-용도: fopen으로 열린 파일을 닫는다.
-방법: fclose($fp)
*fread()
-용도: 파일포인터가 가리키는 파일의 내용을 지정한 크기만큼 읽어 들인다.
-방법:fread($fp,"읽어들일 바이트")
*feof()
-용도: 현재 파일 포인터가 파일의 끝인지를 알려주는 함수
-방법: feof($fp)
*fgets()
-용도: 파일을 읽어올때 한줄씩 읽어온다.
-방법: fgets($fp,"읽어들일 바이트")
*fputs()
-용도: 파일을 a 또는 w 모드로 열어 문자열을 파일에 기록한다.
-방법: fputs($fp, "문자열")
*fwirte()
-용도: 파일을 기록한다.
-방법: fwrite($fp, "문자열")
*fpassthru()
-용도: 파일포인터의 현재 위치에서 파일의 끝까지 읽어 들이도록 한다.
-방법: fpassthru($fp)
*readfile()
-용도: fpassthru와 비슷하지만 fopen()없이 직접 바로 파일을 읽어들일 수 있다. 읽어들인 파일의 절대경로를 포함한다.
-방법: readfile("파일의 절대경로 또는 상대경로/파일명")
*fgetc()
-용도: 파일로부터 한문자를 읽어들인다.
-방법: fgetc($fp)
*filesize()
-용도: 파일의 크기를 바이트수로 반환한다.
-방법: filesize("파일경로/파일명")
*file_exists()
-용도: 파일이름으로 지정한 파일이 존재하는지 검사한다.
-방법: file_exists("파일경로/파일명")
*is_file()
-용도: 파일이름으로 지정한 이름이 파일면 true를 반환한다.
-방법: is_file("파일경로/파일명")
*is_dir()
-용도: 파일이름으로 지정한 이름이 디렉토리일경우 true를 반환한다.
-방법: is_dir("파일경로/파일명")
*is_link()
-용도: 파일이름으로 지정한 이름이 심볼릭 링크일경우 true를 반환한다.
-방법: is_link("파일경로/파일명")
*is_escutable()
-용도: 파일이름으로 지정한 파일이 실행 가능한 파일이면 true를 반환한다.
-방법: is_excutable("파일경로/파일명")
*is_readable()
-용도: 파일이름으로 지정한 파일이나 디렉토리가 읽기 가능한경우 true를 반환한다
-방법: is_readable("파일경로/파일명 또는 디렉토리명")
*is_writeable()
-용도: 파일이름으로 지정한 파일이나 디렉토리가 쓰기 가능한 경우 true를 반환한다
-방법: is_writeable("파일경로/파일명 또는 디렉토리명")
*copy()
-용도: 파일을 복사하고 제대로 수행이 되면 true를 반환한다.
-방법: copy("파일경로/복사할 파일명", "파일경로/복사된 파일명")
*rename()
-용도: 파일을 이름을 바꾼다. 제대로 수행이 되면 true를 반환한다.
-방법: rename("파일경로/변경할 파일명", "파일경로/변경후 파일명")
*unlink()
-용도: 파일을 삭제한다. 제대로 수행될 경우 true를 반환한다.
-방법: unlink("파일경로/삭제할 파일명")
*mkdir()
-용도: 디렉토리를 생상하고 동시에 권한도 함께 지정할 수 있다.
-방법: mkdir("경로/디렉토리명")
*rmdir()
-용도: 디렉토리 삭제
-방법: rmdir("경로/디렉토리명")
*basename()
-용도: 경로명과 파일명을 받아 파일명만을 반환한다.
-방법: basename("파일경로/파일명")
*dirname()
-용도: 경로명과 파일명을 받아 경로명만을 반환한다.
-방법: dirname("파일경로/파일명")
*file()
-용도: 줄단위로 읽어서 각 줄으 문자열을 배열로 하여 반환한다.
-방법: dirname("파일경로/파일명")

4.디렉토리 관련함수

*opendir()
-용도: 지정한 디렉토리에 대한 핸들을 얻는다.
-방법: opendir("디렉토리 경로")
*closedir()
-용도: opendir()함수 호출로 열어둔 디렉토리에 대한 핸들을 닫는다.
-방법: closedir($od)
*readdir()
-용도: 디렉토리에 있는 모든 디렉토리 및 파일들의 이름을 읽어 배열의 형태로 반환
-방법: readdir($od)
*rewinddir()
-용도: 디렉토리 핸들의 포인터 위치를 제일 처음으로 되돌린다.
-방법: rewinddir($od)
*chdir()
-용도: 지저한 디렉토리로 바꾼다.
-방법: chdir("경로명/디렉토리명")
*dir()
-용도: 디렉토리 관련 함수를 사용할 수 있는 클래스
-방법: dir("경로/디렉토리명")
5. URL관련함수
*parse_url()
-용도: url을 입력하면 해당 url에 대한 정보를 연관 배열로 저장하여 반환
-방법: parse_url("URL주소")
*urlencode()
-용도: 데이터를 url인코딩해준다.
-방법: urlencode("문자열")
*urldecode()
-용도: url을 통해 넘어온 값 중 인코딩된 문자열을 디코딩한다.
-방법: urldecode("문자열")

6.변수 및 수학 관련함수

*gettype()
-용도: 변수형을 반환한다.
-방법: gettype("변수명")
*settype()
-용도: 변수형을 변환한다.
-방법: settype("변수명", "변수타입")
*intval()
-용도: 변수값을 정수형 값으로 변환
-방법: intval("변수값")
*doubleval!()
-용도: 변수값을 실수형 값으로 변환한다.
-방법: doubleval!("변수값")
*strval()
-용도: 변수를 문자형 값으로 변환한다.
-방법: strval("변수값")
*isset()
-용도: 변수가 존재하는지 확인한다.
-방법: isset("변수명")
*unset()
-용도: 변수를 삭제한다.
-방법: unset("변수명")
*empty()
-용도: 변수에 값이 존재하는지 확인하여 없으면 true를 있으면 false를 반환한다.
-방법: empty("변수명")
*is_array()
-용도: 변수의 형이 배열인지 확인한다.
-방법: is_array("변수명")
*is_double
-용도: 변수의 형이 더블형인지 확인한다.
-방법: is_double("변수명")
*abs()
-용도: 변수의 절대값을 반환
-방법: abs("변수명")
*round()
-용도: 변수의 반올림한 값을 구한다.
-방법: round("변수명")
*ceil()
-용도: 변수 값의 무조건 올림 값을 구한다.
-방법: ceil("변수명")
*floor()
-용도: 변수값의 무조건 내림 값을 구한다.
-방법: floor("변수명")
*pow()
-용도: 인자 값만큼 제곱승 한 값을 구한다.
-방법: pow("변수명", "제곱할 횟수")
*max & min()
-용도: 최대값과 최소값을 구한다.
-방법: max("숫자값", "숫자값",...) min("숫자값", "숫자값",...)

7.기타 알아두어야 할 함수

*count()/sizeof()
-용도: 배열의 크기를 구한다.
-방법: count("변수명") sizeof("변수명")
*each()/list()
-용도: 배열의 내용을 출력할때 사용한다.
-방법: each("배열변수명"), list("배열의 인자를 받을 변수명", "배열의 인자를 받을 변수명"...)
*end()/next()/reset()
-용도: 현재 배열의 포인터를 끝이나 다음으로 이동시킨다. reset은 배열포인터를 다시 처음으로 되돌린다.
-방법: end("배열변수명") next("배열변수명")
*exec()
-용도: 리눅스 서버의 내부 명령어를 사용하게 한다.
-방법: exec("리눅스명령어", "결과를 저장할 변수명" ,"에러발생시 저장할 변수명")
*number_format()
-용도: 천단위마다 ","를 붙여준다.
-방법: number_format("변수명", "소수점자리수", "소수점 표시마크변경", "천단위 표시 마크변경")
*show_source() / highlight_string()
-용도: php파일의 소스를 보여준다.
-방법: show_source("경로명/파일명") highlight_string("변수명")
*uniqid()
-용도: 유일한 아이디 값을 만들어준다
-방법: uniqid()

'PHP' 카테고리의 다른 글

PHP 정규표현식  (0) 2012.07.31
host 파일 수정  (0) 2012.07.31
이클립스 Remote System 에서 코드 어시스트 받기 !  (0) 2012.07.11
PHP 함수 모음  (0) 2012.05.08
정리  (0) 2012.05.04
블로그 이미지

스마트전

,
에디트플러스라는 가볍고 훌륭한 프로그램이 있음에도 불구하고
내가 굳이 이클립스를 사용하는 이유라면.
약간의 플러그인놀이와 코드 어시스트내지는 자동완성 기능에 다름 아니다.

이클립스 remote systems explorer(이하 rse) 플러그인은 
원격서버 접속을 가능하게 해주는 기능뿐만 아니라
즉석에서 터미널접속이 가능하다는 점에서 매우 마음에 드는 플러그인 중에 하나다.

그러나 최근 버전의 rse에는 애석하기 그지없는 버그가 있으니
그것은 바로 이클립스의 간지기능중 하나인 코드 어시스트가
rse에서는 발동!하지 않는 다는 점.

그럼 굳이 이클립스를 쓸 필요가 없잖아!...이지만.
그래도 그동안 잘 쓰던 IDE를 쉽게 배신할 수는 없는 법.
3시간여의 삽질끝에 해결책을 찾은 기쁨에 뻘글을 남긴다.
시밤 이건 구글링해도 안나오더라고...안나오는건지 못찾는건지 암튼..

요약하자면. 
[이클립스에서 rse플러그인 사용시 코드 어시스트및 자동완성기능 사용하기]

현재 작업이 php가 많은 관계로 php를 기준으로 정리하겠음.
(당근 pdt부터 깔아야 할 간지)

먼저 버그의 원인을 보자면.
rse는 이클립스의 사용자 workspace에 RemoteSystemsTempFiles라는
작업용 폴더를 만들어 linked source로 지정 후 ftp의 파일을 다운받아
작업후 재업로드하는 형식으로 작동된다.

'RemoteSystemsTempFiles'폴더는 자동생성된 후 설정파일로
xml포맷의 .project라는 파일을 생성하는데 이 설정파일이 만들어질때
코드완성및 validation에 필요한 설정값이 제외된 채 만들어지게 된다.
의도한 바인지 아닌지는 모르겠지만 이게 바로 버그의 원인.

해결책은 (모든 작업의 백업은 기본...)
1. 이클립스 PHP Explorer에서 아무 이름으로 프로젝트를 하나 생성. 예를 들어 phpTemp 라고 하겠음.
2. 열려진 rse 리모트 폴더를 다 닫아주고 이클립스 종료.
3. 로컬상의 이클립스 workspace로 이동.
4. 폴더중에 'RemoteSystemsTempFiles'를 열어 .project파일을 열어서 내용 복사.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>RemoteSystemsTempFiles</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
    </buildSpec>
    <natures>
        <nature>org.eclipse.rse.ui.remoteSystemsTempNature</nature>
    </natures>
</projectDescription>

5. RemoteSystemsTempFiles 폴더 삭제.
6. 이클립스에서 만든 프로젝트인 phpTemp폴더내의 .project파일을 열어서

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>RemoteSystemsTempFiles</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.wst.validation.validationbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.dltk.core.scriptbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.rse.ui.remoteSystemsTempNature</nature>
        <nature>org.eclipse.php.core.PHPNature</nature>
        <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
    </natures>
</projectDescription>

빨간색 부분처럼 수정 내지는 추가해준다. php프로젝트이므로
jsp는 약간 다를 수도 있겠지만 구조적으로는 동일하리라 생각함.

7. phpTemp 폴더 이름을 RemoteSystemsTempFiles로 바꾸어 준다.
phpTemp 폴더 안에 있는 다른 하위폴더나 파일은 그대로 유지.
8. 이클립스를 켜고 리모트 서버의 파일을 아무거나 열어서 코드 어시스트가 되는걸 확인.
php Explorer탭을 열면 phpTemp가 사라졌다고 alert창이 뜨는데 걍 확인하면 알아서 폴더 정리해줌.
로그창에 에러가 주루룩 뜰수도 있는데 처음 켰을때 최초 한번만 뜨므로 걍 로그클리어 하고 신경꺼도 됨.
다음에 다시 이클립스를 켰을때는 뜨지 않으니 걱정말자..

요지는 프로젝트폴더처럼 인식시켜줘서 코드 어시스트가 제대로 작동하도록 해주는 것.

어디 대충 검색하면 굴러나오는 정보가 아니라 개삽질끝에 얻어낸.
나름 값진 정보라고 생각해서 찌질하나마 남겨둔다.

 

http://nope.egloos.com/5162205    펌 

'PHP' 카테고리의 다른 글

host 파일 수정  (0) 2012.07.31
PHP 내장 함수  (0) 2012.07.27
PHP 함수 모음  (0) 2012.05.08
정리  (0) 2012.05.04
php cURL  (0) 2012.04.30
블로그 이미지

스마트전

,

JQueryprototype에서 $()를 사용하려면 충돌이 일어나 스크립트 오류를 일으킨다.

 

둘다 같은 $()를 쓰니까..

 

이를 해결하는 방법은 아래와 같다.

 

jQueryprototype 을 정의한 아래줄에 다음의 소스를 추가한다.

 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

 

<script type="text/javascript">
jQuery.noConflict();
var j$ = jQuery;
</script>

 

위와 같이 정의해두면 jQuery에 대한 $()는 -> j$() 로 대체해서 사용할수 잇게된다.

 

물론 충돌도 일어나지 않는다.

 

++ 하지만! jquery의 다른 라이브러리를 다운로드 받아 사용하려면 해당 라이브러리의 $ 를 j$ 로 모두 바꿔줘야 하는 번거로움이 있다.

이는 스크립트를 가져오는 순서만 잘 나열해주면 바로 해결된다.

 

ex)

<script type="text/javascript" src"./js/jquery-1.6.2.min.js"></script> <!-- jquery 기본 라이브러리 -->
<script type="text/javascript" src="./js/jquery-ui-1.8.16.custom.min.js"></script> <!-- 별도로 다운로드 받은 라이브러리 -->

<script type="text/javascript">
jQuery.noConflict();
var j$ = jQuery;
</script>

<script type="text/javascript" src="./js/prototype.js"></script>

 

이런식으로 jquery를 먼저 로드하고 후에 prototype.js 를 로드하면 둘다 문제 없이 사용할 수 있다.

'jQuery' 카테고리의 다른 글

jQuery 기초 정리  (0) 2012.11.27
jquery 유효성 검사  (0) 2012.02.09
jQuery 스크롤 올리기  (0) 2012.02.07
XML HTML로 로드 하기  (0) 2012.01.10
jquery 동적 js 실행  (0) 2012.01.10
블로그 이미지

스마트전

,

number_format" 함수는 PHP에서 숫자 형식에 천단위(세자리)로 ","를 넣기 위해서 가장 많이 사용되는 함수이다.


"number_format"의 함수 형식은 아래와 같다.

string number_format ( float $number [, int $decimals = 0 ] )

      or

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )


파라미터는 아래와 같다.

$number: 숫자 형식으로 만들기 위한 값

$decimals: 출력할 소수 자리수 (기본값: 0)

$dec_point: 소수점을 표시할 문자 (기본값: '.')

$thousands_sep: 천단위 표시를 위한 문자 (기본값: ',')

  1. <?php   
  2.     $number = 1234.56;   
  3.   
  4.     // english notation (default)   
  5.     $english_format_number = number_format($number);   
  6.     // 1,235   
  7.   
  8.     // French notation   
  9.     $nombre_format_francais = number_format($number, 2, ','' ');   
  10.     // 1 234,56   
  11.   
  12.     $number = 1234.5678;   
  13.   
  14.     // english notation without thousands separator   
  15.     $english_format_number = number_format($number, 2, '.''');   
  16.     // 1234.57   
  17. ?>  
블로그 이미지

스마트전

,

 str_shuffle 문자열을 임의로 섞어 주는 내장 함수

  1. <?php   
  2.     $str  = "abcdefghijklmnopqrstuvwxyz";   
  3.     $str .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";   
  4.     $str .= "0123456789";   
  5.   
  6.     $shuffled_str = str_shuffle($str);   
  7.     echo $shuffled_str;   
  8. ?> 
블로그 이미지

스마트전

,