PHP 5 투토리얼 (3) - 고급

기타/웹 2.0 2014.06.23 16:36 Posted by 드론쟁이 푸른하늘이

W3C PHP 강좌 제3장 입니다. 1장 기초2장 Form도 참고하세요.


다차원 배열


  • PHP의 배열(Array)는 key/value의 리스트
  • PHP의 다차원 배열은 여러개의 배열을 담은 배열(array containing one or more arrays)
  • 2차원 배열은 배열의 배열

$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 />"; 와 같이 참조가능


날짜와 시간


  • date(format, timestamp) : timestamp는 옵션. default는 현재시간.
  • echo "Today is " . date("Y-m-d") . "<br />";     // 여기에서 Y, m, d, 1 (요일) 등 사용가능
  • &copy 2010-<?php date("Y") ?>                         // @2010-2014 로 표시됨
  • echo "The time is : " . date("h:i:s") . <br />";    // 여기에서 h, i(시간), s, a(오전 오후)  등 사용가능 
  • date_default_timezone_set()                             // 시간대 설정
  • mktime(hour, min, sec, month, day, year)         // 시간 생성
  • strtotime("10:30am April 15 1999"); strtotime("tomorrow")    // 인간이 사용하는 시간을 저장


Include


  • Include (혹은 require)는 지정한 텍스트/코드/등을 읽어들이는 문장으로, php, html 등을 반복적으로 사용할 때 유용함. 두 문장은 기능적으로 동일
    • include 의 경우, 에러가 발생하더라도 경고만 하고 계속진행
    • require의 경우, 에러가 발생하면 정지
  • include 'filename'; 또는 require 'filename'; 으로 사용
  • 공통 라이브러리로 사용하거나, 메뉴로 사용하거나, 변수 저장소로 사용하거나... 


File Handling


  • readfile() : 파일을 읽어서 output buffer로 보냄. (즉, 일반적으로는 화면에 그대로 표시됨)
  • fopen("filename", "mode");     // 모드는 r/w/a/x/r+/w+/a+/r+

<?php

$myfile = fopen("webdictionary.txt", "r") or die("Unable to open");

// echo fread($myfile, filesize("webdictionary.txt"));

while(!feof($myfile)) {

echo fgets($myfile) . "<br />";    // 한줄 읽기

}

fclose($myfile);

?>


  • File upload form
<html>
<body>

<form action="file_upload.php" method="post" enctype="multipart/form-data">
<label for="file">Filename :</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>


  • file_upload.php
  • 다만 여기에 파일의 최대크기, file type 등을 체크하는 기능이 필요
<?php
if ($_FILES["file"]["error"] > 0){
echo "Error : " . $_FILES["file"]["error"] . "<br />";

} else {

echo "Upload : " . $_FILES["file"]["name"] . "<br />";

echo "Type : " . $_FILES["file"]["type"] . "<br />";

echo "Size : " . ($_FILES["file"]["size"] / 1024) . " KB<br />"; 

echo "Stored in : "  . $_FILES["file"]["tmp_name"];

}

?>


Cookies


  • 쿠키는 사용자를 구분하는데 주로 사용된다. 쿠키는 서버에서 사용자 컴퓨터에 심는 작은 파일로서, 컴퓨터가 동일한 요청을 하면 쿠키도 함께 전송된다. PHP를 사용하면 쿠키를 생성할 수도, 값을 불러올 수도 있다.

<?php

$expire = time() + 60*60*24*30;
setcookie("user", "Min Heo", $expire);  // user 에 "Min Heo" 부여, 30일 후 해제

?>  // setcookie는 반드시 html 앞에 위치해야 한다. 


<html>


  • setcookie()는 자동으로 URLencode 됨. 원하지 않을때는 setrawcookie() 사용.
  • 쿠키를 읽을 때는 별도의 file open 작업이 필요없음. 

<?php

echo $_COOKIE["user"];    // "user"의 값

print_r ($_COOKIE);            // 모든 쿠키 값을 보는 방법

?>


Session


  • 세션... 한번의 접속?? 이때 세션에 따른 정보를 저장해 둘 수 있음

<?php

session_start();


if(isset($_SESSION['views'])) {

$_SESSION['views'] = $_SESSION['views'] +1;

} else {

$_SESSION['views'] = 1;

}


echo 'Pageviews = " . $_SESSION['views'];

?>


PHP Error


    • die() 로 처리
    • 별도의 에러 처리 루틴을 만듦
    • 에러 보고 


    PHP Filter


      • 의심스런 곳에서 입력된 데이터의 유효성 검증 및 필터링
      • PHP filter 는 데이터 필터링을 손쉽게 하기 위한 확장
      • 대부분의 웹앱은 외부 입력이 필요. 필터를 사용하면 항상 올바른 입력이 들어오도록
      • 모든 종류의 외부 데이터는 다 필터링을 해야 함
        • form 으로부터의 입력
        • 쿠키
        • 웹 서비스 데이터
        • 서버 변수
        • 데이터 쿼리 결과
      • Validating Filter
        • 사용자 입력의 검증
        • 정확한 포맷 확인 (이메일 또는 URL 등)
        • 성공시 기대한 타입을 반환, 실패시 FALSE 반환
      <?php
      if(!filter_has_var(INPUT_GET, "email")){   //GET 타입의 INPUT 변수인 "email"이 존재하는가?
      echo("Input type does not exist");
      } else {
      if(!filter_input(INPUT_GET, "email", FILTER_VALIDATION_EMAIL)) { 
      echo("Email is not valid");
      } else {
      echo("Email is valid");
      }
      }
      ?>
      • Sanitizing Filter
        • 문자열에서 특정 문자를 허용/불가
        • No data의 포맷 룰
        • 항상 문자열을 반환함
      <?php
      if(!filter_has_var(INPUT_POST, "url")) {
      echo ("Input type does not exist");
      } else {
      $url = filter_input(INPUT_POST, "url", FILTER_SANITIZE_URL);
      }
      ?>


      댓글을 달아 주세요

      BLOG main image
      드론과 지도
      드론이 세상을 바꾸고 있습니다.드론의 활용처가 계속 넓어지고 있고, 글로벌 기업들의 참여가 많아지고 있으며, 새로운 기술들이 속속 등장하고 있습니다. 하지만 우리나라의 드론 산업은 일부 기업을 제외하면 중국에서 생산된 드론을 가져다가 조립하는 수준이 대부분입니다. 드론은 하드웨어, 소프트웨어, 데이터처리가 복합된 기술입니다. 어떤 기술들을 어떻게 조합할지에 성패가 달렸죠. 5년뒤 10년뒤에 이 블로그엔 어떤 글이 적힐까요? 그것이 궁금합니다.
      by 푸른하늘이
      Profile for bluesky61

      달력

      «   2018/10   »
        1 2 3 4 5 6
      7 8 9 10 11 12 13
      14 15 16 17 18 19 20
      21 22 23 24 25 26 27
      28 29 30 31      

      카테고리

      전체보기 (1586)
      구글어스 (829)
      공간정보 (236)
      사진 (103)
      드론/쿼드콥터 (239)
      지오캐싱 (47)
      기타 (131)
      • 4,516,302
      • 226766
      TNM Media textcube get rss

      드론과 지도

      푸른하늘이's Blog is powered by Tistory. / Supported by TNM Media.
      Copyright by 푸른하늘이 [ http://www.ringblog.com ]. All rights reserved.

      Textcube TNM Media
      푸른하늘이's Blog is powered by Tistory. Designed by Qwer999. Supported by TNM Media.