[ 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,598회 작성일 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건 3 페이지
  • 52 [ php ] fopen, fgets, fclose, fseek, ftell
  • 1. fopen, fgets, fcloselog 파일 또는txt나 csv로 된 DB파일을 불러올 때 쓰는 함수다.$file = 'log.txt'; // 불러올 파일명$f =fopen( $file, "r" ); // 파일을 열어 '읽기만' 한다. (포인터는 파일의 맨 처음)$line =fgets( $f, 4096 ); // 한 줄을 읽는다.echo $line; // 한 줄을 출력한다.fclose($f) // 파일을 닫는다.각 함...
  • 웹지기 09-30 5389 0 0 댓글 0
+1
  • 49 [ php ] 모든 언어를 나의 언어로 만들자!!!(베타버젼 입니다.) - 헌이님
  • 구글 번역이 유료화 되면서 마이크로 소프트사의 API 번역기를 이용하여 만들어 봤습니다.연동하기 시작한지는 좀 되었는데, 오늘 마무리를 합니다.유료화 하는 스킨인데요 ....... .오늘은 특별히 이런 저런 일이 많았습니다. 특히나군포돼지님과 좋은친분으로 갖기로한 나만의(?) 기념으로 올립니다.TEST http://linkma.kr/bbs/write.php?bo_table=Community유료자료실 http://linkma.kr/bbs/board.php?bo_table=SIR_SKIN2초보자를 위...
  • 웹지기 09-30 3454 0 0 댓글 0
  • 48 [ php ] [ class ] 클래스( Class ) 사용을 위한 기본 지식
  • 1. Class 란?클래스는 변수와 변수에 관계되는 함수로 이루어진 하나의 변수형이다.함수저장소 또는 비슷한 함수모음 이라고 이해하면 되겠다.2. Class의 기본 형태&lt;?phpclass Plan{ function testPlan() { echo(" Call to testPlan function!"); }}$skyplan =newPlan; // 객체변수를 생성하기 위해 new를 사용함$skyplan-&gt;testPlan(); // testPlan...
  • 웹지기 09-30 3399 0 0 댓글 0
  • 47 [ php ] [ class ] 클래스( class )에서 지시자( -> )의 의미
  • 객체는 자신만의 변수와 함수 가질 수 있습니다. 객체에서 변수, 함수는 각각 멤버변수 , 메쏘드 라고 불립니다.class test { var $a;// 멤버변수 (클래스 안에서 변수를 정의 할때는 var를 반드시 적어 주어야 한다.) var $b; function aaa() {// 메쏘드 (클래스안의 함수를 메쏘드 라고 한다.) $this-&gt;abcd = " 알파벳";// 메쏘드안에서 변수 정의할 때는 $this를 붙혀 준다. }}위와 같이 test 란 class 가...
  • 웹지기 09-30 19786 0 0 댓글 0
  • 45 [ php ] [ class ] Snoopy.class.php 를 이용하여 파일 긁어오기
  • 사이트를 긁어오기를 하다보면 fsockopen(): unable to connect to 라는 에러가 나면서 사이트 긁어오기가 되지 않는 경우가 종종있다.특히 외국 사이트중에 그런 곳이 많다. 사이트를 방문하지 않고 내용만 쏙 빼가는게 탐탁치 않아서 막아 놓은경우도 있고, 국가적인 차원에서 차단을 시킨경우도 있다.예를 들어 , 일본 최대 AV 회사중에 하나인 DMM은 한국에서 들어오는 방문자를 차단시켜놓았다. 실제로 AV를 구매하지도 않으면서 트래픽은 엄청나게 잡아 먹기 때문이다.또 다른예로 , ...
  • 웹지기 09-30 6475 0 0 댓글 0
  • 44 [ php ] Text Files 핸들링
  • 파일명 menu.ini회사소개,인사말씀,조직도,오시는길제품소개,가전제품,주방제품,욕실제품고객센터,A/S안내,불만접수,1:1게시판커뮤니티,공지사항,자유게시판,이용후기예제 1[code]$File = file('./menu.ini');echo $File;결과 : file 함수는 파일을 읽어서 배열로 반환하는 것을 알 수 있다.결과 array[/code]예제 2첫번째 배열을 출력[code]$File = file('./menu.ini');echo $File[0];결과 : 역시 파일의 전체 내용을 배열로 읽...
  • 웹지기 09-30 3144 0 0 댓글 0
  • 43 [ php ] glob 이용 패턴으로 파일 include 하기
  • [code]$library = array_merge( glob('**/*.class.php'));foreach($library as $lib) include_once $lib;[/code]PHP프레임워크를 제작하던 중 쓰던 방법glob 로 패턴으로나온 리스트를 array로 담고 그걸 merge로 합쳐서 include 하는 형태[code]array glob ( string $pattern [, int $flags= 0 ] )[/code]
  • 웹지기 09-28 3906 0 0 댓글 0
  • 42 [ php ] 자료형 비교표 gettype(), empty(), is_null(), isset(), bool…
  • __EXPRESSION__gettype()empty()is_null()isset()boolean:if($x)$x = "";stringTRUEFALSETRUEFALSE$x = null;NULLTRUETRUEFALSEFALSEvar $x;NULLTRUETRUEFALSEFALSE$xis undefinedNULLTRUETRUEFALSEFALSE$x = array();arrayTRUEFALSETRUEFALSE$x = false;booleanTRUEFALSETRUEFALSE$x = true...
  • 웹지기 09-28 5066 0 0 댓글 0
  • 41 [ 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 11019 0 0 댓글 0
  • 40 [ php ] allow_url_fopen = off 일때 url파일읽기
  • php.ini 파일에 allow_url_fopen=on으로 설정되어 있으면, URL 주소로 파일 읽어올 때 다음과 같이 처리하지만 allow_url_fopen=off로 설정되어 있는 경우, 일단 php.ini 파일을 수정그러나 웹호스팅을 하는 경우 php.ini 파일을 직접 수정할 수 없는 경우가 있다.이런 경우의 해결책을 찾아보니 다음과 같이 socket을 이용해 URL주소를 읽어오는 방법[code]&lt;?php$url = "URL 주소";$info = parse_u...
  • 웹지기 09-28 5887 0 0 댓글 0
+3
  • 39 [ php ] php 에서 xml 사용하기
  • php에서 사용하기SimpleXML SimpleXML 모듈은 사용자가 쉽게 XML문서를 객체화 시켜 사용 가능 요구사항 : PHP5 XML James Clark의 expat를 사용. XML 문서를 처리할 수 있게 하지만, 유효성을 검증하지는 않음 요구사항 : PHP를 아파치 1.3.9 이상의 모듈로 컴파일 expat 설치 =&gt; http://www.jclark.com/xml/expat.htmlDOM XML문서를 DOM API 로 제공함 요구사항 : java VM이 설...
  • 웹지기 09-27 4820 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
1,305
어제
9,384
최대
33,828
전체
8,407,861

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