728x90

[PHP] 파일 삭제


PHP에서 파일삭제하는 방법이다.

파일명을 적을 때 반드시 어떤 경로에 있는지를 포함해야 한다.



<?php
$filename = './datafile.csv';  // ./ 이란 것은 현재 디렉토리를 의미
if(is_file($filename)) {
    if(is_writable($filename)) {
        unlink($filename);  //파일삭제(절대경로 "/" 불가능)
        echo '파일 삭제됨.';
    } else {
        echo '파일에 대한 쓰기(삭제) 권한 없음.';
    }
} else {
    echo '파일이 없음.';
}

?>

블로그 이미지

Link2Me

,
728x90

구글 크롬 개발자 도구(F12)


구글 크롬 브라우저에서 F12 키를 누르면 브라우저 화면 디버깅 하기가 훨씬 용이하다.

F12 키를 누르면 브라우저 하단에 개발자 도구 환경이 나타난다.

모니터가 2개인 경우에는 분리가 되기도 한다.


또한, 아래처럼 누르면 스마트폰에서는 어떻게 보이는지 가상으로 확인할 수 있다.



네이버 사이트는 스마트폰으로 보기를 눌러도 보기좋게 변경되지는 않았다.


엊그제 HTML5 인터넷 자료보면서 서버에 파일 올리고 테스트해 본 화면을 구글 크롬브라우저에서 확인해봤다.

내 폰이 애플6 PLUS 라서 어떻게 보이는지 확인해봤다. 실제 스마트폰에서 보이는 거랑 완전 똑같다.



스마트폰을 보면서 코딩 연습하지 않아도 어떻게 동작되는지 화면상에서 확인할 수가 있어 편리할 거 같다.


http://caniuse.com 사이트 가서 기능을 지원하는지 검색하면 브라우저별로 지원여부를 알 수 있다.

canvas 기능은 익스플러로8 에서는 지원을 하지 않는다고 나온다.




블로그 이미지

Link2Me

,
728x90

Firefox 개발자를 위한 부가기능 설치


HTML5 등 스마트폰 기반 웹/앱이나 PC기반 웹 개발을 하는데 있어 도움이 되는 부가 기능을 설치해보자.



Web Developer 는 CSS 나 자바스크립트(Javascript) 가 차단된 환경에서 실행 등 다양한 웹 환경을 테스트할 수 있는 툴바다.



HTML Validator 는 HTML 의 문법 오류를 검사하여 체크해준다.


블로그 이미지

Link2Me

,
728x90

EditPlus 인코딩 모드 기본설정을 UTF-8 로 설정하는 방법이다.



인코딩 모드를 변경하는 방법



블로그 이미지

Link2Me

,

CSS 기초

Web 프로그램/CSS 2015. 3. 16. 00:24
728x90

CSS 기초


HTML은 운영체제나 사용하는 프로그램에 관계없이 누구나 같은 내용의 문서를 볼 수 있도록 하겠다는 취지에서 만들어졌다.
그러나, 이미지와 동영상등의 하이퍼미디어를 주 내용으로 하는 웹 문서가 다양하고 화려해짐에 따라,
HTML은 그 한계를 드러났고, 이를 보완하기 위해 등장한 새로운 문법으로 스타일 시트를 사용하면
TABLE이나 FRAME에 의존하던 문서의 레이아웃을 효과적으로 할 수 있고, 글자 크기나 글자체, 줄간격, 배경 색상 등도 자유롭게 선택할 수 있다.

CSS 는 HTML문서 내에서 어떤 요소에 CSS의 스타일을 적용시킬 것인가 결정하기 위한 것이다.

CSS 파일은 선택자(Selector)와 { }로 둘러쌓인 속성:속성값 들로 이루어져 있다.


CSS 의 장점

① 홈페이지에 통일감(일관성)을 줄 수 있다.
② 한 번만 정의하여 여러번 가져다 쓸 수 있으므로 업무효율성을 높일 수 있다.
③ 정의된 곳 한 곳만 수정하면 되므로 수정작업이 쉽다.


CSS의 정의하는방법
(1) <style>태그를 선언하여 사용하기

     <style type=”text/css”>
       <!--
          이곳에 스타일을 정의한다.
       -->
     </style>
(2) 각 태그들의 style 속성에 설정하기

      <태그 이름 style = ”스타일 ……..”  >

(3) CSS(스타일)를 파일로 저장하기

     <head> </head> 사이에 외부 스타일 시트를 불러올 수 있다.
     <link rel="stylesheet" type="text/css" href="./stylesheet.css" />    


Front End 디자인 무료 공개 소스(코드펜)  https://codepen.io 에서 회원 가입하면 코드 미리 보기도 가능하고, 수많은 오픈 소스를 이용할 수 있다.


※ 글자색상, 배경색상을 RGB로 직접 지정하고 싶은 경우에는

    http://www.color-hex.com/ 에서 확인 변경할 수가 있고

    http://www.w3schools.com/css/css_colors.asp 참조하면 좋다.

    https://www.cmsfactory.net/ 에 좋은 강좌 내용이 많다.


ㅇ ID 사용하기
   스타일 시트 파일내에
   #slist { font-style:italic;  color:blue; }
   라고 정의하면
   HTML 본문에서
   <div id="slist"> Welcome to Hello</div>
   로 문장을 사용한다.


<style>
#para1 { text-align: left; color: blue; }
</style>

<p id="para1">Hello World!</p>


ㅇ 클래스 사용하기
   ID에 사용되는 # 심볼 대신에 클래스 문장은 .(점)으로 시작한다.
   스타일 시트 파일내에
   .slist { font-style:italic;  color:blue; }
   라고 정의하고
   HTML 본문에서는
   <div class="slist"> Welcome to Hello</div>


<style>
p.center { text-align: center; color: red; }

p.large { font-size: 200%; }

p {text-align:justify;}  // <p> ...</p> 태그 사이의 모든 텍스트가 양쪽 맞춤된다.

</style>

<h1 class="center">This heading will not be affected</h1>
<p class="center">This paragraph will be red and center-aligned.</p>

<p class="center large">This paragraph will be red, center-aligned, and in a large font-size.</p>


p { margin-left : 10px; margin-right : 10px; background-color: yellow; }


ㅇ CSS 규칙
    - CSS에서 세미콜론은 동일한 줄에 있는 여러 CSS 문장을 분리하는데 사용한다.

    - 만일 값이 공백을 포함한 여러 단어일 경우 다음과 같이 quote(")로 묶어준다.
      p {font-family: "sans serif"} 
    - 하나의 선택자에 하나 이상의 속성을 정의하고 싶을 경우에는 ";"(semicolon)으로 분리해 준다.
      p {text-align:center;color:red}


ㅇ 외부 스타일 시트

외부 스타일 시트는 여러 웹 페이지에 스타일을 적용시킬 때 이상적이다. 외부 스타일 시트를 사용하면 하나의 CSS파일 만 수정하여 어려 웹 페이지(HTML문서)의 스타일을 변경시킬 수 있다. 그렇게 하기 위해서 각각 웹 페이지에는 <link> 태그를 사용하여 외부 스타일 시트 파일을 지정하는 문장에 <head>태그에 포함되어 있어야 한다.
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="default.css" />
</head>
<body>


ㅇ 주석처리
   /* ... */ 로 하면 주석으로 인식한다.


ㅇ 내부스타일 시트

내부 스타일 시트는 하나의 문서에서만 사용하는 스타일을 정의할 때 사용한다. 내부 스타일은 <head>태그 안에 <style>태그를 이용하여 정의한다.

<head>
<title>문서의 제목</title>
<style type="text/css">
hr { color: sienna; }
p  { margin-left: 20px; }
body {
       background-image: url("images/back.gif")
}
</style>
</head>


<style type = "text/css">
        p { color : blue; }       /* p 태그 안의 글자들을 파란색으로 처리함.  */
        #ctxt { color : blue; }     /* id명이 ctxt인 요소의 글자들을 파란색으로 처리함. */
        .ctxt { color : blue; }      /* class명이 ctxt인 요소의 글자들을 파란색으로 처리함. */
         * { color : blue; }           /* 페이지 내의 모든 요소의 글자들을 파란색으로 처리함. */
         li > p { color : blue; }       /* li 자식 p 태그의 글자들을 파란색으로 처리함.   */
         h1 + p { color : blue; }       /*  h1 속 바로 다음 p 태그의 글자들을 파란색으로 처리함. */
         h1[class] { color : blue; }     /* 두 hi 중 class 속성을 가진 '서울특별시'만 파란색으로 나타난다. */
        a { color : #000; }              /* 링크 걸린 글자는 모두 검은색 */
        a:hover { color : #f00; }        /* 마우스 닿으면 빨간색 */

       .box:after { content : "항목을 선택해주세요." ; color : green ;}  /* box의 마지막에 문장을 삽입한다. */
       p:first-letter { font-size : 300% ; }                    /* p 태그 안의 첫 글자는 글자크기 세배로. */
       p { border-bottom:1px dashed #000 ;}             /* p 태그에 모두 밑줄 치고. */
       p:last-child { borde : none ;}                            /* 마지막 p 태그에만 밑줄 빼기. */
       p.more a { color : red ; }             /* 클래스명이 more인 p 태그의 링크 (a)색상을 변경함. */
        .box li { padding : 5px 0;}               /* 클래스명이 box인 요소 내부의 li에 세로 여백을 준다. */
        h1, p { border:1px solid #000; }              /* h1과 p 요소에 1px짜리 검은 테두리를 준다. */
</style>


기본적으로 <div>  엘리먼트는 무한 너비를 가진다.

픽셀(px)의 크기는 사용자의 모니터의 면적과 픽셀 깊이에 따라 다르다.

포인트는 인치의 1/72 크기와 같다.

em 은 현재 글씨체와 같고, 상대적인 면적으로 나타내는 데 사용된다.


<style>

body {
    background-image: url("gradient_bg.png");
    background-repeat: repeat-x // 작은 이미지파일을 가로방향으로 큰 이미지처럼 보여준다

    background-repeat: no-repeat;

    background-position: left top;  // 이미지 파일 위치 지정

    margin-left: 220px; // 이미지와 글자가 겹쳐 보이지 않도록 글자의 여백 지정
}
</style>


If the margin property has four values:
    margin: 20px 30px 40px 50px;
        top margin is 20px
        right margin is 30px
        bottom margin is 40px
        left margin is 50px

If the margin property has three values:
    margin: 20px 30px 40px;
        top margin is 20px
        right and left margins are 30px
        bottom margin is 40px

If the margin property has two values:
    margin: 20px 30px;
        top and bottom margins are 20px
        right and left margins are 30px

If the margin property has one value:
    margin: 20px;
        all four margins are 20px


text-transform: uppercase;  // 글자를 모두 대문자로 변환
text-transform: lowercase;  // 글자를 모두 소문자로 변환
text-transform: capitalize;  // 글자의 첫글자만 대문자로 변환
text-indent: 30px;  // 텍스트 첫글자 들여쓰기



ㅇ 스마트폰 레이아웃 주의사항

- overflow 속성을 사용해서 스크롤을 넣을 수 없다.
- 스마트폰은 hover가 없다. 그래서 hover, active 등 상태 선택자를 사용할 때 주의해야 한다.
- 동위 선택자에 제한이 있다.
- 선택자에 ~를 지원하지 않는 브라우저가 있다.
- iphone에서는 label 태그에 onclick="" 속성을 부여해야 정상 동작한다.
- 그래디언트를 적용할 수 없을 수 있다.


ㅇ viewport META

- meta 태그를 title 태그 위에 선언하여 브라우저에 특별한 정보를 제공할 수 있다.
- name 속성의 값이 viewport인 경우 content 속성의 값을 이용해 브라우저 화면 설정과 관련된 정보를 제공한다.
<meta name="viewport" content="width=device-width, intial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=medium-dpi" />

'Web 프로그램 > CSS' 카테고리의 다른 글

[CSS] Table 꾸미기  (0) 2018.05.13
CSS 문법  (0) 2015.03.26
블로그 이미지

Link2Me

,
728x90

EditPlus 로 편집작업을 하다보면 일정구간 블럭을 설정하여 작업을 해야 하는 경우가 있다.

그런데 메멘토적인 기억력인지라 도통 기억이 나지 않는 경우가 있어 난감하다.

그래서 적어둔다.


칼럼 블럭 설정방법

Alt + C 를 눌러서 화살표키를 우측과 아래로 누르면 블럭이 설정된다.

그런 다음에 마우스 좌클릭을 하면 블럭설정이 완료된다.

지우고 싶다면 Delete키를 누르면 설정된 블럭이 지워진다.



자동 줄바꿈 모드에서는 동작이 안된다.


블로그 이미지

Link2Me

,
728x90

PHP 기본 함수


PHP 함수를 다 열거할 수는 없고 좀 더 자주 봤으면 하는 것만 발췌하여 작성한다.


함수

 설 명

 substr

  • 엑셀에서는 문자열 좌측을 추출할 때 left(string,length) 를 사용하지만
    PHP 에서는 문자열 추출은 substr 함수를 사용한다.

  • substr(string,start,length); 
    주어진 스트링에서 start 부터 length 만큼의 부분 스트링을 리턴한다.
    start는 0 부터 시작하며,
    length 는 생략 가능하다.
  • echo substr("abcdefg",3)."<br />";    // defg 를 리턴 즉, 3번째부터 전부 리턴한다.
    echo substr("abcdefg",1,3)."<br />"; // bcd 를 리턴
    echo substr("abcdefg",-3)."<br />";    // efg 를 리턴. 즉, 뒤에서부터 3개를 리턴한다.
    echo substr("abcdefg",-1)."<br />";    // g 만 리턴. 즉, 뒤에서부터 1개만 리턴한다.
    echo substr("abcdefg",-3,1)."<br />"; // e만 리턴. 즉, 뒤에서부터 3번째만 리턴한다.
  • <?php
    $tel = "010-9999-0001";
    echo "전화번호는 ". $tel;
    echo "<br />";
    $phone_type = 1;
    if(substr($tel,0,3) == '070') $phone_type = 2;
    if(substr($tel,0,2) == '01') $phone_type = 3;
    echo "전화타입은 ". $phone_type;
    ?>

 chop

  • 스트링의 뒤쪽 공백을 없애준다.
  • $trimmed = chop($line);

 chr

  • 지정된 아스키 문자를 리턴해준다
  • $str .= chr(27);  // ESC 문자를 해당 스트링에 붙여준다.

 flush

  • PHP에서 사용하는 출력 버퍼를 비운다. 이것은 Web 브라우저로 가는 데이터를 빨리 보낼 수 있는 장점이 있다.
  • flush();   // output 버퍼에 있던 데이터를 모두 비운다.

 strcmp

  • 두 개의 스트링을 비교해 준다.
    두개의 스트링이 같은 경우에는 0이 리턴된다.
  • $result = strcmp($str1, $str2);
    if ($result == 0) {
        echo "두 문자열은 서로 동일";
    }

 strlen

  • 해당 스트링의 길이를 알려 준다.
  • $length = strlen ($str);
    echo $length ;

 strchr

  •  스트링에서 해당 문자의 마지막 위치를 파악해서 그 뒷부분을 리턴해준다.

strstr

  •  스트링에서 해당 문자의 첫 번째 위치를 파악해서 그 뒷부분을 리턴해준다.

 str_replace

  •  주어진 스트링에서 단어들을 바꾸어 준다.

 count

  • 주로 배열 요소들의 개수를 파악할 때 사용한다.
  • $num = count($result);

 array_push

  • 해당 배열에 값을 추가적으로 넣을 수 있게 한다.
  • $stack = array("orange""banana");
    array_push($stack"apple""raspberry");
    print_r($stack);
    결과는 Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry )
  • $multisqlque = array();
    for($i=0; $i < count($stack); $i++)
    {
        array_push($multisqlque, "subject LIKE '%".$stack[$i]."%'" );
    }
    if(count($multisqlque) > 0) {
        $sqlque .= " ( ";
        $sqlque .= join(" or ", $multisqlque);
        $sqlque .= " ) ";
    }
    echo $sqlque; // 쿼리문이 정상인지 확인
    결과는 ( subject LIKE '%orange%' or subject LIKE '%banana%' or subject LIKE '%apple%' or subject LIKE '%raspberry%' )

 in_array

  • 배열내에 해당 값이 있는지 없는지 알려준다.
    배열에 값이 있으면 true 인 1 을 리턴해주고, 없으면 false 를 리턴
  • if(in_array("apple",$stack)) {
        echo "배열이 존재";
    }
    else {
        echo " 배열이 없어요";
    }

 next

  • 배열의 내부 포인터를 하나 증가시키면서 그 값을 리턴한다

 prev

  • 배열의 내부 포인터를 하나 감소시키면서 그 값을 리턴한다.

 reset

  • 배열의 포인터를 맨 처음으로 옮긴다.

 basename

  • PATH 에 붙어있는 파일 이름을 가져온다.
  • echo basename("/home/httpd/html/index.php"); // index.php 를 출력해준다.
  • echo dirname("/home/httpd/html/index.php");  // /home/httpd/html 를 출력해준다.

ereg_replace

  • 주어진 스트링에서 특정 패턴을 찾아서 다른 것으로 대처한다.
  • $string = "This is a test";
    echo ereg_replace ("is", "was", $string);
    // This was a test 를 출력한다.


'Web 프로그램 > PHP 응용 및 활용' 카테고리의 다른 글

[PHP] 쿠키와 세션, 그리고 보안  (0) 2015.05.27
[PHP] 홈페이지 설정 정보 확인  (0) 2015.04.28
[PHP] 한글자르기 substr  (0) 2015.01.04
IP 체크  (0) 2014.05.18
GET, POST 변수전달  (0) 2014.05.15
블로그 이미지

Link2Me

,
728x90

PHP 삼항연산자 ?


삼항 연산자 (? :): 비교 연산자와 함께 사용하여 어떤 판단을 하고자 할 때 사용한다. ?와 :을 사용해서 구문을 작성한다.

if 와 else 문의 장황함을 피하는 방법 중 하나는 더욱 간결한 삼항 연산자(conditional operator)인 ? 를 사용하는 것이다.

HTML 문과 혼재되어 있는 경우에는 대체문법을 사용하면 좋다. 참조 : http://link2me.tistory.com/981



예제를 통해 살펴보자.

$message = 'Hello '.($user->is_logged_in() ? $user->get('first_name') : 'Guest');

/* shorthand usage */
$message = 'Hello '.($user->get('first_name') ?: 'Guest');


/* "thankfully-you-don't-need-to-maintain-this" level */
 $days = ($month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year %400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31)); //returns days in the given month


/* If condition is true then assign a to result otheriwse b */
/* 조건이 참이면 a를 할당하고, 거짓이면 b를 할당
$result = ($a < $b ) ? $a :$b;


function xx($a,$b)
{
  $rs = ($a > $b) ? $a : $b ;
  return $rs;
}


<?php

$j = 11;

while($j-- > -10) {

if($j == 0 ) continue;  // 0 으로 나누는 것을 방지하기 위한 목적

echo "$j". (10/$j) . "<br />";

}

?>


PHP 5.3 이후부터는

$rs = $a ? $a : ' ' ;

대신에

$rs = $a ? : ' ' ;

와 같이 true 인 경우의 변수를 생략할 수 있다.

하지만 정확하게 하기 위해서 true 인 경우의 변수도 써주는 것이 좋다.


이 밖에 PHP 연산자에 대해 쉽게 찾아보려면 http://www.w3schools.com/php/php_operators.asp 를 눌러보면 된다.

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP] 문자열 자르기 substr  (0) 2015.05.16
음악 재생 1  (0) 2015.03.28
[PHP기초] continue 문  (0) 2015.03.05
[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
블로그 이미지

Link2Me

,
728x90

PHP continue 문


contiue 명령은 break 와 달리 현재 루프의 진행을 루프의 처음으로 돌리는 역할을 한다.

for 문이나 foreach 문을 탈출하는 명령어는 break 인데

continue 문은 continue 를 만나면 for 문이나 foreach 문의 시작점으로 가라는 의미다.

echo("key : $key, value = $value <br />"); 는 실행되지 않는다는 것이다.

if문의 조건은 참인가 거짓인가를 판별해서 참이면 if문을 수행하고 거짓이면 if문은 수행되지 않는다.

if ($key % 2) 의 의미는 2로 나눈 나머지가 있으면 참이 되어 if문이 실행되고, 나머지가 0인 경우에는 거짓이므로 수행되지 않는다.

$arr = array("zero", "one", "two", "three", "four", "five"); 에서 배열 키를 지정하지 않으면 기본으로 숫자 0부터 시작된다. (배열 키=>값 : 0=>'zero', 1=>'one', 2=>'two', .... )


결과는 배열키 0,2,4 를 가진 zero, two, four 출력

key : 0, value = zero
key : 2, value = two
key : 4, value = four


만약 위의 조건을 if(($key % 2) == 0) 로 설정했다면

결과는 배열키 1,3,5 를 가진 one, three, five 가 출력된다.


그럼 아래 예제에서는 어떤 결과가 나올까?

<?php
$arr = array("zero", "one", "two", "three", "four", "five");
foreach($arr as $key => $value) {
    if($key / 2)
        continue;    // continue 문은 현재 루프를 중단하고 바로 다음 루프로 가라
    echo("key : $key, value = $value <br />");
}
?>


결과는

key : 0, value = zero


<?php
for($cnt=0 ;$cnt <=5 ; $cnt++){  //$cnt가 5가 될때까지 반복한다
    if($cnt == 3){   // 만약 $cnt 가 3 이면 아래와 같은 문구를 실행한다
        echo "지금은 3번입니다.<br />";
        continue;  
    }
    echo "$cnt <br />";
}
?>


결과는

0
1
2
지금은 3번입니다.
4
5



<?php
for($cnt=0 ;$cnt <=5 ; $cnt++){   // $cnt가 5가 될 때까지 반복한다
    if($cnt == 3) {  // 만약 $cnt가 3 이면 아래와 같은 문구를 실행한다
        echo "지금은 3번입니다.<br />";
        break;  //조건을 만족하면 루프를 탈출한다.
    }
    echo "$cnt <br />";
}
?>

결과는
0
1
2
지금은 3번입니다.


--------------------------------------------------------------------------------------

foreach 문은 배열값의 수만큼 반복해서 처리한다.

foreach(배열 as $value) {

   처리할 내용

}

또는

foreach(배열 as $key=>$value){  // $key : 배열의 키, $value : 배열의 값

   처리할 내용

}



'Web 프로그램 > PHP 문법' 카테고리의 다른 글

음악 재생 1  (0) 2015.03.28
[PHP기초] 삼항연산자 ?  (0) 2015.03.06
[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
블로그 이미지

Link2Me

,
728x90

PHP array(배열)


배열(array)은 한번에 하나 이상의 값들을 담을 수 있는 특별한 변수이다.
PHP 에서는 array() 함수를 사용하여 배열을 만든다.
array 를 사용하면 코딩도 줄여주면서 쉽게 여러 변수를 생성할 수 있는 장점이 있다.
PHP 에는 배열의 세 가지 유형이 있다:
    Indexed arrays - 숫자 인덱스를 갖는 배열
    Associative arrays - 이름 키(named keys)를 갖는 배열
    Multidimensional arrays - 하나 이상의 배열을 포함하는 배열

1. Indexed arrays
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);  // count() 함수는 배열의 길이(요소의 개수)를 반환하는데 사용된다.

for($i=0;$i < $arrlength; $i++)
{
  echo $cars[$i];
  echo "<br>";
}
?>
array 에 많은 값을 담게 되면 몇 번째의 내용인지 종종 헷갈릴 수 있는데 이러한 것을 막기 위해 count 함수를 이용한다.
그런데 count() 함수는, "요소 개수가 0인 배열"과 "존재하지 않는 배열" 모두 0을 반환하기에 혼란스러운 점이 있다.
이때는 isset() 함수를 사용하여 그 배열이 존재하는지 우선 체크하는 것이 좋다.

<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);    // 오를차순으로 정렬, rsort()는 내림차순으로 정렬
$arrlength=count($cars);  // count() 함수는 배열의 길이(요소의 개수)를 반환하는데 사용된다.

for($i=0;$i < $arrlength; $i++)
{
  echo $cars[$i];
  echo "<br>";
}
?>

2. 연관 배열(Associative Arrays)
연관 배열(Associative arrays)은 값을 할당하는데 이름 키(named keys)를 사용하는 배열이다

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
배열로 표기된 것을 아래와 같이 표기할 수 있다.
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $key => $value) {
     echo "Key=" . $key . ", Value=" . $value;
     echo "<br>";
}
?>

결과는
Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

=> 를 기준으로 좌측에 있는 부분을 키값이라고 하고, 우측에 있는 부분을 값이라고 한다.

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
asort($age);    // 값에 따라 오름차순으로 연관된 배열을 정렬한다.
foreach($age as $key => $value) {
     echo "Key=" . $key . ", Value=" . $value;
     echo "<br>";
}
?>

ksort() 는 키값에 따라 오름차순으로 연관된 배열을 정렬한다.
arsort() 는 값에 따라 내림차순으로 연관된 배열을 정렬한다.
krsort() 는 키값에 따라 내림차순으로 연관된 배열을 정렬한다.


foreach ($array as $key=>$value) {
    echo '순번 '. ($key+1) . ' 번의 DB idx = '. $value . ', ';
    // DB에 결과를 반영하고자 하는 쿼리문을 적어준다
    $query = 'UPDATE table SET orderNO = '.($key+1).' WHERE idx = '.$value.' LIMIT 1';
    mysql_query($query) or die (mysql_error());
}

3. Multidimensional Arrays
다차원 배열(multidimensional arrays)은 하나 이상의 배열을 포함하는 배열이다.
<?php
$cars = array
   (
   array("Volvo",22,18),
   array("BMW",15,13),
   array("Saab",5,2),
   array("Land Rover",17,15)
   );
 
echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>


4. list 함수

list함수는 배열의 값을 배열의 순서대로 여러 개의 변수에 할당 하는 함수이다.


    function getCurrentDate(){
        $year = date('Y');
        $month = date('m');
        $day = date('d');
       
        return array($year, $month, $day);
    }
   
    list($y, $m, $d) = getCurrentDate();   
    print "현재 날짜는 $y / $m / $d 입니다!!";


5. 기타

array_unshift() 함수 : 배열의 맨 앞에 값을 추가하고 싶을 때

 - array_unshift($R, $val); // array_unshift('배열명', '값')


array_push() 함수 : 배열의 끝부분에 값을 추가하고 싶을 때

 -  array_push($R, $val); // array_push('배열명', '값')


array_pop() 함수 : 배열의 끝부분을 제거하고 싶을 때

 - array_pop($R);

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] 삼항연산자 ?  (0) 2015.03.06
[PHP기초] continue 문  (0) 2015.03.05
[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
블로그 이미지

Link2Me

,
728x90

PHP switch 문


PHP에서는 switch 문의 조건으로 숫자(정수, 실수)와 문자열 모두 가능하다.

n은 대부분 변수를 사용하며, break 문이 없으면 계속 실행된다.



각 실행문의 끝에 break 문을 붙이지 않고 아래처럼 필요한 곳에만 붙일 수도 있다.

break 문이 나올 때까지 다음 실행문이 죽 실행된다.



if 문은 참인지 거짓인지 구분하여 처리하지만,
스위치 문은 참과 거짓을 떠나, 조건의 값이 무엇이냐에 따라 해당 소스를 수행한다.
if문과 switch문은 같은 결과를 가져오지만, 상황에 따라 어떤것을 사용하느냐에 따라 간결한 소스가 되기도 하고, 복잡한 소스가 되기도 한다.


DB에서 읽어온 $R['goods'] 의 상태값에 따라 화면에 내용을 선택하여 뿌려주는 걸 표시한 예제이다.

<td><?php switch($R['goods']) {case "0":echo "미가입";break; case "1": case "2":echo "판매";break; case "6":echo "타사판매";break; case "9":echo "해지";break;}?></td>


switch 문은 PHP 에서 뿐만 아니라, 자바 스크립트에서도 사용되고, C언어 등 여러곳에서 사용되는 기본적인 문법이다.


'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] continue 문  (0) 2015.03.05
[PHP문법] array (배열)  (0) 2015.03.04
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
블로그 이미지

Link2Me

,
728x90

킴스큐에서 사용하는 함수를 잘 몰라서 헤매는 경우가 있어서 아예 찾아보기 쉽게 하려고 여기다 적어논다.

킴스큐 매뉴얼 사이트 http://www.kimsq.co.kr/r/freeboard/13482


//DB-UID데이터
function getUidData($table,$uid)
{
    return getDbData($table,'uid='.(int)$uid,'*');
}
//DB데이터 1ROW
function getDbData($table,$where,$data)
{
    $row = db_fetch_array(getDbSelect($table,getSqlFilter($where),$data));
    return $row;
}
//DB데이터 ARRAY
function getDbArray($table,$where,$data,$sort,$orderby,$recnum,$p)
{
    global $DB_CONNECT;
    $rcd = db_query('select '.$data.' from '.$table.($where?' where '.getSqlFilter($where):'').' order by '.$sort.' '.$orderby.($recnum?' limit '.(($p-1)*$recnum).', '.$recnum:''),$DB_CONNECT);
    return $rcd;
}
//DB데이터 NUM
function getDbRows($table,$where)
{
    global $DB_CONNECT;
    $rows = db_fetch_array(db_query('select count(*) from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT));
    return $rows[0] ? $rows[0] : 0;
}
//DB데이터 MAX
function getDbCnt($table,$type,$where)
{
    global $DB_CONNECT;
    $cnts = db_fetch_array(db_query('select '.$type.' from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT));
    return $cnts[0] ? $cnts[0] : 0;
}
//DB셀렉트
function getDbSelect($table,$where,$data)
{
    global $DB_CONNECT;
    $r = db_query('select '.$data.' from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
    return $r;
}
//DB삽입
function getDbInsert($table,$key,$val)
{
    global $DB_CONNECT;
    db_query("insert into ".$table." (".$key.")values(".$val.")",$DB_CONNECT);
}
//DB업데이트
function getDbUpdate($table,$set,$where)
{
    global $DB_CONNECT;
    db_query("update ".$table." set ".$set.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
}
//DB삭제
function getDbDelete($table,$where)
{
    global $DB_CONNECT;
    db_query("delete from ".$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
}

//DB테이블 비우기
function getDbTruncate($table)
{
    global $DB_CONNECT;
    db_query("truncate table ".$table,$DB_CONNECT);
}

//DB테이블 uid 초기화 (auto increment 초기화)
function getDbAlter($table,$where)
{
    global $DB_CONNECT;
    db_query("alter ".$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
}

//SQL필터링 - 다음 패치에 적용예정
function getSqlFilter($sql)
{
    return $sql;
}

블로그 이미지

Link2Me

,
728x90

자바스크립트 기초

 

자바스크립트는 네스케이프社에서 개발한 HTML 문서 내에 삽입되어 동적인 웹페이지를 구현할 수 있는 스크립트이다.
독립된 응용프로그램의 형태를 지니지 못하는 스크립트 언어이다.
객체를 이용하여 프로그래밍하는 객체기반언어다.

 

자바스크립트는 웹 페이지의 HTML 엘리먼트에 DOM(document object model)이라는 좀 더 정형화되고, 구조화된 정의가 추가되면서 더욱 강력해졌다.
자바스크립트는 스크립트 언어의 특성 상 플랫폼에 독립적이며 모든 웹 브라우저에서 동일한 실행 결과를 얻을 수 있다.
프로그램 코드가 직접 html문서에 삽입되어, 브라우저에서 html파일을 읽을 때 같이 해석되고 실행된다.
컴파일 과정이 필요 없으며, 브라우저만 있다면 실행이 가능하다.
클라이언트에서만 실행되기에 정보를 서버에 보낼 필요 없이 처리할 수 있다.
소스 코드가 노출되어 누구든지 복사하여 사용할 수가 있다.

 

HTML안에 삽입 될 때는 <script> ~ </script>안에 정의한다.

<script> ~ </script>의 위치는
<head>~</head>태그 또는 <body>~</body>태그에 모두 정의 가능하다.

 

   - HTML 페이지의 <body> 태그 안을 자바스크립트에서는 document 라고 부른다.
   - 스크립트 실행문 document.write(); 부분의 document 를 객체(object)라고 부르고

     write() 는 '매서드(method)'라고 부른다.

   - 문장 끝에는 세미콜론';'을 적어서 문장의 끝을 알려주어라.
     자바스크립트에서는 새로운 줄이 세미콜론과 똑같이 동작하여 ';'를 붙이지 않아도 되기는 하다.
     하지만, 한줄에 하나 이상의 문장을 배치하려면 세미콜론 ';' 으로 나눠야 한다.
   - document.write(); 는 PHP의 echo 나 print 명령어와 같다.
     document.write("Hello World");

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

   는 외부형 js 파일을 불러온다는 의미이다.

 

ㅇ 자바스크립트 주석문 : // 와 /* */
   // : 한 줄 주석 처리. 프로그램 코드 끝에 사용
   /* ~ */ : 한 줄 이상의 주석 처리
   HTML 주석 태크는 <!-- 내용입력 -->

 

ㅇ 문장 끝에는 세미콜론';'을 적어서 문장의 끝을 알려준다

ㅇ 변수 만드는 규칙
    - 사용 가능한 문자는 영문자, 숫자, _(underbar, underscore)이다

    - 숫자로 시작할 수 없다.

    - _(underbar , underscore)를 제외한 !, #, ?, $, @ 등과 같은 다른 특수문자는 올 수 없다.
   - 공백은 허용되지 않는다.
   - 자바스크립트 문법 안에서 규정한 예약어(키워드)는 변수로 사용할 수 없다.  

 

ㅇ 식별자 종류
   - 식별자 뒤에 괄호가 없고 단독으로 사용 : 변수
   - 식별자 뒤에 괄호가 있고 단독으로 사용 : 함수
   - 식별자 뒤에 괄호가 없고 다른 식별자와 사용 : 속성
   - 식별자 뒤에 괄호가 있고 다른 식별자와 사용 : 메서드

ㅇ 이용문법
   - \n : 줄바꿈
   - 문자열 연결은 + 를 사용 : '이런'+'식으로도'+' '+'출력 가능'
   - \t : Tab
   - \' : 작은 따옴표
   - \" : 큰 따옴표
   - \\ : 역슬레쉬(\)
   - %  : 나머지 연산자, alert(5 % 3);
   - 변수 : 값을 저장할 때 사용하는 식별자, 변수선언 var 식별자;

ㅇ 자료형 확인 : typeof 연산자를 이용
   <script>
     alert(typeof('String')); //String
     alert(typeof(123)); //Number
     alert(typeof(true)); //Boolean
     alert(typeof(function(){})); //Function
     alert(typeof({})); //Object
     alert(typeof(abc)); //Undefined : 선언되지 않은 변수를 출력하려고 할 때
                         // 변수를 선언했지만 초기화를 하지 않았을 경우에도 undefined 출력된다
   </script>

 

# null 은 의도해서 비워놓은 값

function getType(data) {
   return Object.prototype.toString.call(data).slice(8,-1);
}

console.log(getType(123));
console.log(getType(false));
console.log(getType(null));
console.log(getType({}));
console.log(getType([]));


ㅇ switch 문
   - 코드를 읽다가 break 를 만나게 되면  switch 문을 빠져 나가게 된다.

ㅇ 삼항 연산자
   - (불 표현식) ? (참일 때 실행되는 문장) : (거짓일 때 실행되는 문장)
   - 삼항연산자는 코드가 너무 복잡해지므로 한 줄로 적을 수 있을 때만 사용하는 것이 좋다.

 

반복문 : for, while, do ~while

ㅇ for 문 (For statement)
   for (초기식; 조건식; 종결식) { // 1. 먼저 초기식을 실행하고 조건식을 비교
      문장              // 2. 조건식이 참이면, 문장을 실행한 후 종결식을 실행하고
   }                  // 3. 다시 조건식을 비교하고, 참이면 문장실행후 종결식을 실행(반복)
   continue;  // continue를 만나면 continue 이전 까지의 문장만이 실행이 되고 다음 반복으로 넘어감

 

ㅇ while 문
   while (불 표현식) {  // 불 표현식이 참인 동안 수행문을 실행하고, 거짓이면 수행문을 실행하지 않는다.
     수행문 ...
   }

 

ㅇ do while 문
   do {
      문장
   } while (불 표현식)  // 무조건 한번 실행 후 반복

 

 

변수 유효범위(Variable Scope)

형변환(Type conversion)
=== 일치연산자
== 동등연산자 : 형변환이 발생한다.

Falsy(거짓 같은 값)
false, '', null, undefined, 0, -0, NaN
1 + undefined  ==> NaN

 

ㅇ 배열

   - 배열은 여러 개의 변수를 한곳에 저장할 수 있는 자료형이다.
   - 자바스크립트에서는 문자열과 숫자, 불, 함수, 객체와 정의되지 않은 자료형까지 총 6가지의 자료형이 존재
   - 배열은 이중 객체의 일종으로, 대괄호([])를 이용해서 생성
   - 배열 안에 입력된 값을 배열 요소라고 부른다.
   - alert(array[1]); // 배열 기호 안에 들어간 숫자를 인덱스(Index)라고 부른다.
   - for (var i in array) 은 for (var i = 0; i < array.length; i++) 와 같은 의미

     <script>
         var lls = document.getElementsByTagName('li');
         for(var i in lls){
             lls[i].style.color = 'blue';
        }
     </script>  

   - 배열 함수 정리 자료는 http://link2me.tistory.com/1458 참조

 

ㅇ 함수
함수란, 미리 만들어 놓은 작은 프로그램으로 혼자서는 실행되지 않고 다른 함수에 의해서 호출(call)을 받아야만 실행 될 수 있는 프로그램

   function 함수이름(매개변수, 매개변수) {
    함수의 수행문 ...
    return 리턴값;
   }

 

내장함수

alert : 가장 많이 사용되는 자바스크립트 메세지창이다.

prompt : 사용자의 입력을 받아 자바스크립트로 인식시킬때 사용하는 내장함수이다.

confirm : 확인과 취소 버튼을 가지는 메세지상자이다.

<script>
  var res;
  res = confirm("계속하겠습니까?");
  if (res == true)
    document.write("진행을 선택했습니다");
  else
    document.write("취소 되었습니다.");
</script>

 


ㅇ Example
   alert(1000 > 100 > 10);
    해설 : 연산 과정은 좌측부터 계산하며, alert(true > 10) -> alert(1 > 10) -> alert(false)
   alert(num++) 은 alert(num); num=num+1;
   alert(++num) 은 num=num+1; alert(num);
   문자열을 입력하는 함수인 prompt()
   var input = prompt('이름을 입력하세요.', '홍길동');alert(input);
   confirm()함수는 사용자가 확인을 누르게 되면 true, 취소를 누르면 false를 리턴한다.
   var input = confirm('수락하시겠습니까?');alert(input);

 

ㅇ 알아두면 좋은 팁

    - window.open 을 클릭으로 열면 팝업이 차단되지 않지만, 그냥 열면 기본은 차단된다.

      <script>
         window.open('demo2.html');
      </script>

    - window.open('test1.html', '_blank', 'width=200, height=100, resizable=yes');

블로그 이미지

Link2Me

,
728x90

완성형 한글의 경우 한글은 2바이트로 영어는 1바이트로 구성되기 때문에 PHP의 substr() 함수를 쓸 때 한글이 깨지는 경우가 있다. 이런 경우 mb_substr() 함수로 대체하면 된다.


substr ($str, $start_Pos, $length);
$Str에 담고 있는 문자열의 $start_Pos부터 길이$length만큼을 잘라내어 반환한다

mb_substr ($str, $start_Pos, $length, $encoding);
$str에 담고 있는 문자열의 $start_Pos부터 길이$length만큼을 잘라내어 $encoding 형식에 맞게 반환한다


mb_substr($str, 0, 10, 'EUC-KR');
mb_substr($str, 0, 10, 'UTF-8');

function strcut_euckr($msg, $limit) {    // 완성형 한글 자르기
    $msg = substr($msg, 0, $limit);
    for ($i = $limit - 1; $i > 1; $i--) {   
        if (ord(substr($msg,$i,1)) < 128) break;
    }
    $msg = substr($msg, 0, $limit - ($limit - $i + 1) % 2);
    return $msg;
}


function strcut_utf8($str, $len, $checkmb=false, $tail='') {  // UTF-8 한글자르기
    /** UTF-8 Format
    * 0xxxxxxx = ASCII, 110xxxxx 10xxxxxx or 1110xxxx 10xxxxxx 10xxxxxx
    * latin, greek, cyrillic, coptic, armenian, hebrew, arab characters consist of 2bytes
    * BMP(Basic Mulitilingual Plane) including Hangul, Japanese consist of 3bytes
    **/
    preg_match_all('/[\xE0-\xFF][\x80-\xFF]{2}|./', $str, $match); // target for BMP
     
    $m = $match[0];
    $slen = strlen($str); // length of source string
    $tlen = strlen($tail); // length of tail string
    $mlen = count($m); // length of matched characters
     
    if ($slen <= $len) return $str;
    if (!$checkmb && $mlen <= $len) return $str;
     
    $ret = array();
    $count = 0;
    for ($i=0; $i < $len; $i++) {
        $count += ($checkmb && strlen($m[$i]) > 1)?2:1;
        if ($count + $tlen > $len) break;
        $ret[] = $m[$i];
    }    
    return join('', $ret).$tail;
}


※ 문자열의 '바이트 수'를 확인하려면 strlen() 함수를, '문자 수'를 조사하려면 mb_strlen() 함수를 사용해야 한다.

영문이나 숫자 등의 싱글 바이트 문자로 구성된 문자열에서는 strlen() 함수와 mb_strlen() 함수의 결과는 같다.

하지만, 멀티바이트 문자를 포함하는 문자열(한국어, 일본어, 중국어 등)에서는 결과가 다르다.



'Web 프로그램 > PHP 응용 및 활용' 카테고리의 다른 글

[PHP] 쿠키와 세션, 그리고 보안  (0) 2015.05.27
[PHP] 홈페이지 설정 정보 확인  (0) 2015.04.28
PHP 기본 함수  (0) 2015.03.07
IP 체크  (0) 2014.05.18
GET, POST 변수전달  (0) 2014.05.15
블로그 이미지

Link2Me

,
728x90

PHP 변수지정 기초지식


PHP 개발자가 알아야 할 기초적인 지식을 이해하기 쉽게 정리를 했다.

모든 개발에 있어서 실력을 키우는 가장 빠른 방법은 좋은말로 "벤치마킹" 나쁜말로 "모방" 이다.

좋든 나쁘든 가장 빠른 방법임에는 확실하다.
언어는 눈으로 배우는 것이 아니라 직접 경험을 통해 "깨달음" 이 있어야만 자기 것이 된다.

책을 통해 배우거나, 인터넷을 검색하거나, 공개소스를 살펴보거나, 중요한 것은 직접 코딩하고 원리를 이해해 가는 것이다.


변수 : 결과가 바뀔수 있게 할 수 있는 수, 변하는 수, 변할 수 있는 수

         오늘 비가 온다는 예보가 있는데 야구장을 가야하나 말아야 하나.. 오늘의 변수날씨구나..

<?php
$날씨 = '맑음';
if ($날씨 == '비')
{
     echo '우천취소';
}
else {
     echo '야구 정상적으로 진행';
}
?>



1. 변수를 정의할때 반드시 정확한 자료형을 사용한다.

2. 문자열 변수를 정의할때 "상수나 변수를 포함할 것으로 의도하지 않는한" 문자열은 무조건 홑따옴표로 감싸준다.

$array['constant'] = '연관배열';

PHP 해석기는 constant 가 상수가 아니라 "문자열" 이라는 것을 미리 알고 모든 상수중에 constant 를 찾아 헤매는 헛수고를 하지 않는다.

구분

 잘못된 거

올바른 거

 문자열 변수

$string1 = "문자열1";

$string2 = '문자열2';

 정수형 변수

 $int = "1";

 $int = 1;


정수형 변수를 정의하든 문자열변수를 정의하든 습관적으로 쌍따옴표를 사용하는 경우가 많은데 이것은 반드시 당장 고쳐야 할 나쁜 습관이다.


PHP해석기는 위의 두 변수를 메모리에 담을때 완전히 다른 작업을 하는데

$string1"문자열1" 에 변수나 상수가 포함되어 있는지 먼저 찾아내는 작업을 수행한다.

그리고 나서 변수/상수 값에 대한 치환작업을 한 후에야 그 결과값을 $string1 에 담는다.


$string2 은 '문자열2' 이라는 문자열에 대해서 어떠한 작업도 없이 곧바로 $string2 변수에 담는다.


다음 두 개의 SQL 문 처리를 살펴보자. 어떤 걸 써야 할까?

$sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid';
$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";


"(쌍따옴표)는 변수를 해석할 수 있다. 하지만 '(홀따옴표)는 변수를 해석하지 못한다.

홀따옴표로 감싸진 전체를 문자열로 인식하기 때문이다.

이 경우에는

$sql = "SELECT * FROM $usertable WHERE PartNumber = '$partid' ";

와 같이 명확하게 Strings에 대해 홀따옴표(single quotes)로 변수를 표시해라.

아니면 아래와 같이 string 형 변수와 integer변수를 명확하게 구분하여 처리하면 전혀 문제되지 않는다.

$sql = 'SELECT * FROM '.$usertable.' WHERE string_column = "'.$string.'" AND integer_column = '.$number.';


Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result ...

와 같은 경고 메시지가 나온다면 어떻게 해야 할까?

$sql 문에 문제가 없는지 echo $sql.'<br/>'; 로 내가 원하는 SQL문으로 만들어지고 있는지 확인하시라.

홀따옴표, 쌍따옴표 관련 처리가 잘못되어 원하는 문자열로 해석되지 않고 있을 수 있다.


내가 사용하는 코딩 예시이다.

<?php
if (!isset($_SESSION)) {
    session_start();
}
// 파일을 직접 실행하면 동작되지 않도록 하기 위해서
if(isset($_POST) && $_SERVER['REQUEST_METHOD'] == "POST"){
    @extract($_POST); // $_POST['loginID'] 라고 쓰지 않고, $loginID 라고 써도 인식되게 함
    header('Content-Type: application/json; charset=utf8');
    if(isset($userID) && !empty($userID) && isset($password) && !empty($password)) {
        include_once 'dbController.php';
        require_once 'loginClass.php';
        $c=new LoginClass;
        $user = $c->getUser($userID, $password); // LoginClass에 함수가 정의되어 있다.

        if (is_array($user)) {
            $_SESSION['userID'] = $user['userID'];
            $_SESSION['userNM'] = $user['userNM'];
            $_SESSION['admin'] = $user['admin'];
            echo json_encode(array('result' => '1'));
        } else {
            echo json_encode(array('result' => '0'));
        }
    } else {// 입력받은 데이터에 문제가 있을 경우
        echo json_encode(array('result' => '-2'));
    }
}
?>



상수 : 이미 정해져 있는 불변의 값을 의미한다.

          define("상수명","정의값");

    define('constant','a');
    define('constant','b');

    변수는 처음 선언한 a가 변경되어 b가 되지만, 상수는 여전히 a로 유지된다.


PHP에서 미리 지정한 값을 가지는 것을 상수라고 한다(PHP에서 지정한 상수는 아주많다)
사용자가 지정한 상수도 있다.(define 함수를 이용해서 지정할 수 있다.)

상수명은 일반적으로 대문자를 사용한다.

<html>
    <head>
        <title>constant Test</title>
        <meta charset="UTF-8">
        <meta name="robots" content="noindex,nofollow"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <meta http-equiv="cache-control" content="no-cache" />
        <meta http-equiv="expires" content="0" />
        <meta http-equiv="pragma" content="no-cache" />
    </head>
    <body>
    <?php
        // PHP_VERSION : PHP 버전 지정한 상수
        // true(참), false(거짓), null(아무값이 없음)
        // PHP_OS : PHP가 실행중인 OS설명하는 상수
        // __LINE__ : 처리중에 있는 파일의 현재 줄 번호
        // __FILE__ : 처리중에 있는 파일의 전체 경로와 이름
        // __DIR__ : 처리중에 있는 파일의 디렉토리
        // __FUNCTION__ : 함수명
        // __CLASS__ : 클래스명
        // __TRAIT__ :  트레이트명
        // __METHOD__ : 클래스의 메소드명
        // __NAMESPACE__ : 현재 네임스페이스 이름

        //사용예 : define("상수명", "정의값");

        define("HI", "안녕!!");
        print HI;
        print '<br />';

        print "현재 사용중인 PHP 버전은 ? ";
        print PHP_VERSION;

        print "<br/> 이 파일의 이름은?  ";
        print __FILE__;

        print "<br/> 수행 중에 있는 코드 라인넘버는?  ";
        print __LINE__;
    ?>
    </body>
</html>



배열 : 일정한 규격에 따라 분리되어진 집합

          김밥 한줄을 썰어서 10조각이 나왔다. 썰어진 김밥은 배열이다. 김밥[0] 은 첫번째 김밥 조각이다.

          - 배열 선언을 $a =[] ; // 배열 초기화 (PHP 5.4 이상 버전에서만 사용할 수 있다)

          - 배열은 인덱스를 사용하지만, 연관 배열은 key 를 사용한다.

          - array("키" => "값") PHP 5.4 이상에서 사용가능


연관배열을 사용하는 예로 가장 흔하게 사용하는 것이 dbconnect.php 에서 DB연결하는 배열인 연관배열 선언하는 것이다.

$db['host'] = "localhost";
$db['name'] = "address";
$db['user'] = "address_root";
$db['pass'] = "autoset";
$db['port'] = "3306";


$dbconn = isConnectDb($db);

function isConnectDb($db){
    $conn = mysqli_connect($db['host'],$db['user'],$db['pass'],$db['name'],$db['port']);
    mysqli_set_charset($conn, "utf8"); 
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit;
    } else {
        return $conn;
    }
}


연관배열의 다른 예제

$data = array('name' => '홍길동', 'age' =>20, 'address'=>'서울');
print $data['name']." | ";
print $data['age']." | ";
print $data['address'];


다차원 배열 예제

//PHP 5.4 이상 버전에서 사용 가능
$member1[] = ['name'=>'홍길동', 'age'=>32, 'tel' => '010-1111-2222'];
print $member1[0]['name'];



함수 : 주어진 변수가 정해진 관계식에 대입된 상황 (결과)
객체 : 모든 사물,동작 등에 접근할 수 있도록 구조화한 형체 (개념)

          자동차는 바퀴,핸들,시트,달리다 로 표현할 수 있다. 바퀴는 자동차를 위한 객체이다.

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
블로그 이미지

Link2Me

,
728x90

DB 내용을 화면에 출력(이중 for 문)



DB 테이블에 저장된 게시물을 불러다가 화면에 출력하는 PHP 소스이다.

우선 DB에 저장되는 데이터는 <br> 태그로 행구분을 하여 저장한다는 걸 알아야 한다.

파일에서 가져온 걸 분리할 때에는 fgetcsv 함수를 이용하고, Encoding 옵션 등을 처리할 수 있게 조치하면 된다.

행간의 구분은 explode 함수를 사용하여 Line 단위로 구분한다.

최대 몇행인지는 count($lines) 로 파악하고,

이제 한 행에서 구분자로 다시 explode 함수를 이용하여 구분한다.

for 문 안에 for 문은 필요하면 사용하고 필요하지 않으면 사용하지 않아도 된다.

$line 배열은 $line[0], $line[1] 등으로 분리된다. 이 값으로 원하는 결과를 다시 만들어낼 수도 있다.


<?php
////////////////////////////////////////////////////////////////
$lines = explode("<br>", $R['content']);    // line 단위로 분리
for ( $i=0; $i < count($lines) ; $i++) {
    $line = explode(";", $lines[$i]);    // 구분자 기준으로 분리
    for($j=0 ; $j < count($line) ; $j++) {
        if($line[$j] != "") echo $line[$j]."/";
    }
    echo "<br>";
}
?>


for(초기식; 조건식; 종결식){  // for반복문은 반복되는 횟수에 비중이 있다

     반복될 문장 

}

초기식 -> 처음 문장을 실행시킬때 대입시킬 값

조건식 -> 언제까지 실행할지 범위를 지정

종결식 -> 처음값이 조건식에 대해 맞출수있게끔 하나씩 증가/감소



블로그 이미지

Link2Me

,
728x90

PHP 파일 다루기


fopen() 함수는 PHP에서 파일을 여는데 사용된다

$file=fopen("file.txt","r");

 - 첫번째 파라미터(매개변수) : 열려는 파일 이름

 - 두번째 파라미터(매개변수) : 파일을 열때 어떤 모드(mode)로 열어야 하는지 지정

   . r  : 파일의 처음부분부터 read only

   . r+ : 파일의 처음부분부터 read/write

   . w  : 파일을 열고 내용을 초기화하며, 파일이 없으면 생성. write only

   . w+ : 파일을 열고 내용을 초기화하며, 파일이 없으면 생성. read/write

   . a  : 파일을 열고 끝부분에 추가하여 쓰기. 파일이 없으면 생성

   . a+ : 파일을 열고 끝부분에 추가하여 쓰기.

   . x  : 새파일을 만들어서 write only. 만약 파일이 존재하면 Fasle 와 오류를 반환

   . x+ : 새파일을 만들어서 read/write. 만약 파일이 존재하면 Fasle 와 오류를 반환


fclose($file);  // 열린 파일을 닫기 위해서 사용한다.


feof() 함수는 파일의 끝부분에 도달했는지(end-of-file, EOF) 체크하는 함수다.

feof() 함수는 특히 길이를 알 수 없는 데이터를 루프(looping, 반복문)돌때 매우 유용하다.


fgets() 함수는 파일로부터 하나의 줄(single line)을 읽어들일때 사용되며, default 최대 length는 1024

fgetc() 함수는 파일로부터 한 글자씩(single character) 읽어들이는데 사용

fwrite() 함수는 바이너리로 파일에 쓸 때 사용


<?php

$file = fopen("file.txt", "r") or exit("Unable to open file!");

while(!feof($file))   //끝부분에 도달할때까지 읽어들인줄을 출력

  {

  echo fgets($file). "<br />";

  }

fclose($file);

?>

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 나누기  (0) 2014.05.09
블로그 이미지

Link2Me

,
728x90

SVN 이란 소스코드 버전관리 도구 라고 할 수 있습니다.

버전 관리 소프트웨어는 조직의 핵심 자산인 소스 코드의 개정과 백업 절차를 자동화하여 오류 수정 과정을 도와줄 수 있는 시스템으로 이미 다수의 국제 협력 개방 소프트웨어 개발 실무에서도 널리 사용되고 있습니다. 

다음은 버전 관리 시스템을 사용하는 이유를 정리한 것입니다.

 

  • 무언가 잘못되었을 때 복구를 돕기 위하여
  • 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
  • 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동기화하는 과정을 자동화하기 위하여
  • 소스 코드의 변경 사항을 추적하기 위하여
  • 소스 코드에서 누가 수정했는지 추적하기 위하여
  • 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
  • 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기 위하여
  • 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기 위하여
  • 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로
  • 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여


정말 오랫만에 SE 자막툴 소스를 다운로드 해 볼 일이 있어서 제 네이버 블로그 글 옮기고 네이버 블로그에서는 삭제했습니다.


프로그램 구하기 : http://tortoisesvn.net/downloads.html  (32비트버전과 64비트 버전중에서 필요한 거 다운로드)

프로그램을 아래 그림처럼 설치합니다.




설치가 완료되고 나서 아이콘을 실행하면 바로 이런 화면이 나오면서 폴더가 뒤에 나옵니다.





TortoiseSVN 을 지원하는 WinMerge 소스 비교 툴에 대한 소개는

http://jwmx.tistory.com/2133 을 읽어보면 도움 됩니다.

WinMerge 소스 비교툴은 소스가 공개되어 있습니다.


최근에 사용해본 소스 비교툴 중에서는 AcroEdit 에 포함된 Diff 기능이 상당히 괜찮습니다.


블로그 이미지

Link2Me

,
728x90

레지스트리 등록 안될 때


윈도우7이나 8에서는 관리자권한으로 실행해야만 레지스트리 등록이 가능하다.

CMD  창을 띄울 때, 관리자 권한으로 띄우는 방법이다




블로그 이미지

Link2Me

,
728x90

fopen 파일 열기



FILE *fopen(const char *filename, const char *mode);

// fopen() 함수의 파일 경로, 파일을 열때 모드 옵션

// mode 옵션 의미


r : 읽기 전용으로 열기


w : 쓰기용으로 파일 만들기, 같은 이름이 있다면 덮어쓰기


a : 같은 이름의 파일이 이미 있다면, 그 파일 끝에 추가하여 쓰기, 파일이 없다면 쓰기용으로 파일 생성


r+ : 이미 있는 파일을, 읽기/쓰기용으로 열어 업데이트


w+ : 일기/쓰기용으로 파일 만들기, 같은 이름의 파일이 존재한다면 덮어쓰기


a+ : 파일을 열어서, 끝부분에 추가하기. 파일이 없다면 새로 생성한다.


t : 텍스트 모드로 열기


b : 이진 파일 모드로 열기



위의 모드는 조합이 가능하다.


rb : 바이너리 모드, 읽기 전용 열기


wb : 바이너리 모드, 쓰기용으로 열기




실제 파일을 열고 나면 파일 안의 데이터를 읽어 와야 되는데 그럴 때 사용하는 함수로는 3개가 있다.

$data = fgets($fp, 1000);
fgets() 함수는 파일에서 한 줄씩 읽는다. 이 경우 파일의 줄바꿈 문자나 EOF를 만나지 않는다면 999바이트를 읽을 때까지 진행한다.

$data = fgetss($fp, 1000, "특정 태그");
fgetss() 함수는 읽어들인 문자열에서 PHP와 HTML 태그를 모두 제거한다. 특정 태그를 남겨두려면 적어준다.

$data = fgetcsv($fp, 1000, "delimiter");
fgetcsv() 함수는 파일에서 읽은 문자열을 구분 문자로 나누어서 배열에 저장한다. 가운데는 length 파라미터인데, 이 값은 읽으려는 한 줄의 길이보다 좀 더 길어야 한다.

$data = fgetc($fp);
fgetc() 함수는 파일에서 한번에 한 문자씩 읽어들인다.



<?php

$fp=fopen('./data.txt',"r");

while(!feof($fp)) {   // 파일의 끝인지 아닌지 확인 (false 일 경우 끝)

echo fgets($fp,1000)."<br/>";

}

fclose($fp);

?>



'Web 프로그램 > PHP 문법' 카테고리의 다른 글

PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 나누기  (0) 2014.05.09
[PHP] 문자열 붙이기  (0) 2014.05.08
블로그 이미지

Link2Me

,