[ php ] 기본 파일 처리 (저장, 불러오기, 쓰기, 읽기, 닫기) //fopen, fwrite, fclose, feof, fgets, fgetss, fgetcsv, readfile, fpassthru, file, fgetc, fread, file_exists, filesize,unlink, rewind, fseek,ftell > php

본문 바로가기
사이트 내 전체검색

php

[ php ] 기본 파일 처리 (저장, 불러오기, 쓰기, 읽기, 닫기) //fopen, fwrite, fclose, feof, fgets, fgetss, fgetcsv, readfile, fpassthru, file, fgetc, fread, file_exists, filesize,unlink, rewind, fseek,ftell

페이지 정보

작성자 웹지기 댓글 0건 조회 10,641회 작성일 18-09-30 17:38

본문

******************************************************

PHP의 파일 처리 기법

****************************************************** 

우선 아래와 같은 주문 폼을 작성 하였다.

[code]

<form action = "orderprocess.php" method="post">

<table border="0">

<tr bgcolor="#cccccc">

<td width="150">Item</td>

<td width="15">Quantity</td>

</tr>

<tr>

<td>Tires</td>

<td align="center"><input type="text" name="tireqty" size="3" maxlength="3"></td>

</tr>

<tr>

<td>oil</td>

<td align="center"><input type="text" name="oilqty" size="3" maxlength="3"></td>

</tr>

<tr>

<td>Spark Plug</td>

<td align ="center"><input type="text" name="sparkqty" size="3" maxlength="3"></td>

</tr>

<tr>

<td>Shipping Address</td>

<td align ="center"><input type="text" name="address" size="20" maxlength="20"></td>

</tr>

<tr>

<td colspan="2" align="center"><input type="submit" value="Submit order"></td>

</tr>

</table>

</form>

[/code]

<실제 브라우저 화면>

b1ab5adf3f70b25df0c326b687afb1a6_1538296330_2692.jpg



그리고 폼에서 받은 값을 보낼 orderprocess.php 문서도 작성했다. 나중에 봤을 때 쉽게 이해

할 수 있도록..코딩과 설명을 함께 적어 놓는 것이 좋을 것 같다.

[code]

<?php

$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; 

//웹 문서 트리의 루트를 가리킨다. 짧은 스타일로 쓰기 위해서 $DOCUMENT_ROOT 변수를 사용했다.

$tireqty = $_POST['tireqty'];

$oilqty = $_POST['oilqty'];

$sparkqty = $_POST['sparkqty'];

$address = $_POST['address'];   

//위에 4개의 변수 선언은 폼에서 입력된 값에 대하여  Method에 따라 POST로 접근 했다. 

$date = date('H:i, js F Y');  

//날짜를 알려주는 함수이다. 


echo "<p>Order processed at";

echo $date;

echo "</p>";

echo'<p>Your order is as follodws:</p>';

echo $tireqty.' tires<br>';

echo $oilqty.' bottles of oil<br>';

echo $sparkqty.' spark plugs<br>';


$totalqty = 0;

$totalqty = $tireqty + $oilqty + $sparkqty;

if($totalqty ==0) {

echo "<br>You did not order anything on the previous page!<br>";

exit;

//if문의 조건이 만족하면 {}안에 내용이 표시되고 exit로 인해 모든 php문이 종료된다.

}  

echo "Item ordered: ".$totalqty."<br>";

echo "address: ".$address."<br>";

$totalamount = 0.00;

define('TIREPRICE',100);

define('OILPRICE',10);

define('SPARKPRICE',4);

//상수 선언(상수:변하지 않는 값)

$totalamount = $tireqty * TIREPRICE + $oilqty * OILPRICE + $sparkqty * SPARKPRICE;

echo "Subtoal: $".number_format($tatalamount,3)."<br>";

$taxrate = 0.00;

$totalamount = $totalamount *(1 + $taxrate);


echo "Total including tax : $".number_format($totalamount,2)."<br><br>";

//number_format() 함수를 사용하여 총합을 소수점 이하 두자리 숫자로 표현하여 보았다.

$outputstring = $date." ".$tireqty." tires ".$oilqty." oil ".$sparkqty." spark plugs $".$totalamount." ". $address." ";

$fp = fopen('$DOCUMENT_ROOT/../files/shippingaddress.txt','a');

//fopen()을 호출할 때에는 두개,세개나 네개의 파라미터를 넘겨준다. 자세한 설명은 예제 밖에..

if(!$fp) {

echo "<p><strong>Your order could not be processed at this time.

please try again later.</strong></p></body></html>";

exit;

}

fwrite($fp,$outputstring,strlen($outputstring));

//파일에 입력하기. 자세한 설명은 예제 밖에..

fclose($fp);

 ?> 

[/code]

<실제 브라우저 화면>

b1ab5adf3f70b25df0c326b687afb1a6_1538296446_3361.jpg 


위 예제에서 가장 중점을 두고 공부한 부분은 바로 데이터를 불러오고 저장하는 기능이다.

바로 fopen과 fwrite라고 할 수 있다.


(1)fopen()

$fp = fopen('$DOCUMENT_ROOT/../files/shippingaddress.txt','a');


전체적인 뜻은 fopen()이 파일을 열었다면 파일 포인터를 리턴받아 $fp변수에 저장한다. 이후에 파일에 접근하기 위해서 $fp를 사용한다.


첫번째 파라미터는 열려고 하는 파일의 이름과 경로를 함께 적어준다. 

$DOCUMENT_ROOT라는 짧은 스타일의 이름을 쓰기 위해 예제 상단에  $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; 와 같이 짧은 스타일로 선언을 하였다. 

$_SERVER['DOCUMENT_ROOT'];란 현재 사이트가 위치한 서버상의 위치를 나타낸다. 


두번째 파라미터는 파일모드를 저장한 문자열을 넘겨준다. fopen에서 사용하는 파일 모드는 다음 링크

된 사이트를 참고 하자.

<참고 사이트: http://kr.php.net/manual/kr/function.fopen.php>


(2)fwrite()

fwrite($fp,$outputstring,strlen($outputstring));


쉽게 첫번째,두번째 파라미터는 $outputstring에 저장된 문자열을  $fp가 가리키는 파일에 쓴다고 

할 수 있다.

그리고 세번째 파라미터는 옵션인데 위와 같은 경우는 문자열의 길이를 알아내는 strlen함수를 

사용 하였다.


(3) fclose()

파일 사용이 끝났으면 파일을 닫아야 한다.


이제 주문이 잘 들어갔는지 주문을 읽어보아야 한다.

주문 파일을 쉽게 읽도록 웹 인터페이스를 만들어 보았다.

[code]

<?php

$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

?> 

<body>

<h1>Bob's Auto Parts</h1>

<h2>Customer Order</h2>

<?php


$fp= fopen('$DOCUMENT_ROOT/../files/shippingaddress.txt','r');


if(!$fp){

echo "<p><strong>No orders pending.please try again later.</strong></p>";

exit;

}


while(!feof($fp)){

$order=fgets($fp,999);

echo $order."<br>";

}

?>

</body>

[/code]


위 소스에 대한 몇가지 새로운 함수들을 살펴 보자.


(1)feof()


파일의 끝인지 검사한다. feof()함수는 파일 포인터를 인자로 받는다. 만약 파일 포인터가 파일의 끝에

닿았으면 true를 리턴한다. 이 함수는 File End Of File이란 뜻이다.


(2)fgets()


파일에서 한 줄씩 읽는다. 줄바꿈 문자를 만나거나 EOF를 만나거나 혹은 파일에서 988바이트를 읽을

때까지 진행한다. 왜 988바이트인가 하면 $order=fgets($fp,999);에 있는 두번째 파라미터인 999는

읽을 수 있는 최대 길이는 "명시한 길이 -1"바이트 라는 뜻이다. 그리고 한줄 씩 읽은 문자열을 

$order변수에 저장한다.

fgets()함수에 s를 하나 더 붙여 fgetss()로 사용하면 문자열에 저장된 특정 태그를 모두 제거 할 수 

있다. 


##한번에 파일 전체 읽기##

(1) readfile()

 이 함수는 파일을 열어서 파일의 내용을 모두 표준 출력(브라우저)으로 출력한 다음에 파일을 닫는다.

예) readfile("$DOCUMENT_ROOT/../files/shippingaddress.txt");


(2)fpassthru()

일단 fopen()으로 파일을 연 다음 fpassthru()에 파일 포인터를 넘겨 주면 포인터의 위치에서 파일의

끝까지 읽어서 표준 출력으로 출력한다. 그 후에 파일을 닫는다.


예)fp=fopen('DOCUMENT_ROOT/../files/shippingaddress.txt','r');

fpassthru($fp);


(3)file()

전체 파일을 읽어 온다. file()은 readfile()과 거의 유사 하지만 읽은 파일 내용을 출력하지 않고 배열

에 저장한다. 저장된 파일의 한줄 한줄이 배열의 한 요소가 된다.


(4)file_get_contents()

이 함수는 readfile()과 동일하지만 브라우저에 출력하지 않고 파일의 내용을 문자열로 리턴한다.

추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 82건 1 페이지
  • 82 [ php ] 상대경로와 절대경로, 열린문서의 절대경로, 상대경로, url, uri 나타내기
  • 1. 절대경로 - 어떠한 웹페이지나 파일이 가지고 있는 고유한 경로를 말한다. - 예를들어 https://funyphp.com, C:\users\document\funyphp.jpg 등을 모두 절대 경로라고한다. - 다르게는 '그 위치'라는 개념이라고 말할 수 있는데 주소라고 생각하면 이해하기 더 쉽다. - 예를 들어 내가 만약 d:\file 또는 c:\file\img.jpg 등 절대 경로를 알고 있으면 그곳으로 바로 이동하거나 그곳에 있는 파일을 바로 실행 가능하다는 것. - 따라서, ...
  • 웹지기 11-07 28893 0 0 댓글 0
  • 80 [ php ] [ class ] 클래스( class )에서 지시자( -> )의 의미
  • 객체는 자신만의 변수와 함수 가질 수 있습니다. 객체에서 변수, 함수는 각각 멤버변수 , 메쏘드 라고 불립니다.class test { var $a;// 멤버변수 (클래스 안에서 변수를 정의 할때는 var를 반드시 적어 주어야 한다.) var $b; function aaa() {// 메쏘드 (클래스안의 함수를 메쏘드 라고 한다.) $this-&gt;abcd = " 알파벳";// 메쏘드안에서 변수 정의할 때는 $this를 붙혀 준다. }}위와 같이 test 란 class 가...
  • 웹지기 09-30 19836 0 0 댓글 0
  • 79 [ php ] php 로 소켓 서버 작성하기
  • PHP로 소켓 서버 작성하기작성자 김영진(cogolda@hanmail.net)대상 독자요구사항1 개요 - 소켓 서버란 무엇인가?1.1 소켓의 형태2 PHP 소켓 함수2.1 PHP에서 소켓 만들기2.2 실용 서버 만들기2.3 실용적인 예2.4 보안가능한 기능 추가와 확장저자에 관해알아두기이 자료는 http://www.zend.com/zend/tut/tutorial-staub3.php/에 있는Writing Socket Servers in PHP를 제가 허접번역 및 내용을 추가 및 생략한 것입니다.이미...
  • 웹지기 09-27 19786 0 0 댓글 0
  • 78 [ php ] 파일 확장자 구하기 여러가지 방법
  • [code] &lt;?php $filename = "mypage.asp"; //1 strrchr함수를 사용해서 확장자 구하기 $ext = substr(strrchr($filename, '.'), 1); echo$ext; echo"&lt;br&gt;"; //2 strrpos 함수와 substr함수를 사용해서 확장자 구하기 $ext = substr($filename, strrpos($filename, '.') + 1)...
  • 웹지기 09-19 16616 0 0 댓글 0
  • 77 [ php ] phpsocket.io 사용법
  • Start php start.php start for debug mode php start.php start -dfor daemon mode php start.php restart Stop php start.php stop Status php start.php status
  • 웹지기 05-08 16090 0 0 댓글 0
  • 76 [ php ] facebook sharer를 이용할 경우 부가 메타데이터 넣는 방법
  • 페이스북 쉐어러를 사용할때는 http://www.facebook.com/sharer/sharer.php?u=공유할 url 만 입력하면 된다. 하지만, 해당 URL에 대한 대표 이미지나, 설명같은 것은 무작위 또는 가장 강조되는 테그를 가져오기때문에 목적이 그냥 특정 URL을 공유하는 것이라면 상관없지만 이게아니라면 의도치않은 결과가 나올 수 있다. 이런 부분을 해소하기 위해서 페이스북에서는 메타데이터를 이용해 특정 정보를 가져온다. 추가할 수 있는 메타 데이터들에는 url,...
  • 웹지기 09-19 15301 0 0 댓글 0
  • 75 [ php ] PHP에서 CSV 로 내보내기
  • csv 아웃풋용 파일을 하나 만들어두시고 링크------------------------------------------------------------------------------------------------ csv_output.php[code]&lt;?include "환경 설정 파일들";// DB를 정의합니다. 여기서는 DB 클래스 파일을 include해서 사용했습니다.$DB = new DB_Mysql($WEB_HOST,$WEB_USER,$WEB_PASS,$W...
  • 웹지기 09-28 11112 0 0 댓글 0
+1
  • 73 [ php ] foreach() 오류 Invalid argument supplied for foreach()
  • Invalid argument supplied for foreach() 이러한 오류가 발생하는것은 foreach에 검색하는 변수의 값이 비어있기 때문. 어쩔수 없이 빈값인지 확인해야 한다. if(!emepty($변수)) { foreach($변수 AS $key) { echo "샬랄라"; } } 이런식으로 감싸줘야 ㅡㅡ;;
  • 웹지기 06-08 9489 0 0 댓글 0
  • 72 [ php ] 주차 , 요일, 해당주의 시작일, 해당주의 종료일 date()
  • //해당요일 $dayOfTheWeek = date('w',mktime(0,0,0,$month,$day,$year));$dayOfTheWeek1 = date('w',strtotime($year.$month.$day)); //주차구하기$week = date('W',mktime(0,0,0,$month,$day,$year));$week1 = date('W',strtotime($year.$month.$day));//해당주차의 시작일$sd = mktime(0,0,0,$month,$day-$dayOfThe...
  • 웹지기 09-11 9450 0 0 댓글 0
  • 70 [ php ] php 7.2 count() 사용시 에러 조치
  • Severity: Warning --&gt; count(): Parameter must be an array or an object that implements Countable 기존에는 빈값일 때 문제 없었는데, 7.2버젼에서는 빈값이면 0이 아니기 때문에 오류가 발생했다. if(count($num) &gt; 0) { echo "test"; } 이부분에서 문제가 생겨서 다음처럼 수정을 했다. i...
  • 웹지기 06-08 8886 0 0 댓글 0
  • 69 [ php ] json 한글 깨지는 현상 해결
  • 배열을 json_encode()해서 json으로 바꿀 때 한글 값이 유니코드로 깨져 들어가는 현상을 해결하는 방법PHP 버젼별로 다르게 구현PHP 5.3 이하function my_json_encode($arr){ //convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding ar...
  • 웹지기 08-28 8728 0 0 댓글 0
  • 68 [ php ] PREG 한글 특수문자 체크 & 추출
  • 홍길1234동abc입!!_#니다 라는 문구가 있다고 했을때 해당 문구에서 홍길동입니다 1234 abc !!_# 를 각각 추출해내는 함수이다. euckr을 기준으로 작성된 함수이며 euckr에서는 한글 패턴의 추출이 어려운 관계로 UTF-8로 전환하여 변환하는 형태이다. 핵심은 1 한글,2 영문 ,4 숫자 ,8 특수기호로 명시하고 처리하는 식이다. ========= 내용 ============== $msg = "홍길1234동abc입!!_#니다"; ...
  • 웹지기 09-19 8546 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
1,367
어제
11,874
최대
33,828
전체
8,535,403

그누보드5
Copyright © funyphp.com. All rights reserved.