[ 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,728회 작성일 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건 4 페이지
  • 36 [ php ] [ class ] 클래스( class )에서 지시자( -> )의 의미
  • 객체는 자신만의 변수와 함수 가질 수 있습니다. 객체에서 변수, 함수는 각각 멤버변수 , 메쏘드 라고 불립니다.class test { var $a;// 멤버변수 (클래스 안에서 변수를 정의 할때는 var를 반드시 적어 주어야 한다.) var $b; function aaa() {// 메쏘드 (클래스안의 함수를 메쏘드 라고 한다.) $this-&gt;abcd = " 알파벳";// 메쏘드안에서 변수 정의할 때는 $this를 붙혀 준다. }}위와 같이 test 란 class 가...
  • 웹지기 09-30 19901 0 0 댓글 0
  • 35 [ 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 3465 0 0 댓글 0
  • 34 [ php ] 모든 언어를 나의 언어로 만들자!!!(베타버젼 입니다.) - 헌이님
  • 구글 번역이 유료화 되면서 마이크로 소프트사의 API 번역기를 이용하여 만들어 봤습니다.연동하기 시작한지는 좀 되었는데, 오늘 마무리를 합니다.유료화 하는 스킨인데요 ....... .오늘은 특별히 이런 저런 일이 많았습니다. 특히나군포돼지님과 좋은친분으로 갖기로한 나만의(?) 기념으로 올립니다.TEST http://linkma.kr/bbs/write.php?bo_table=Community유료자료실 http://linkma.kr/bbs/board.php?bo_table=SIR_SKIN2초보자를 위...
  • 웹지기 09-30 3613 0 0 댓글 0
+1
  • 31 [ 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 5487 0 0 댓글 0
  • 30 [ php ] php 업로드 작성 및 파일 업로드 보안문제 - 7가지
  • 1.php,inc,html,htm,phtml,php3 등의 확장자는 절대로 올릴 수 없게 한다 !.txt 도 못올리게 합니다. .txt 를 사용해서 쿠키를 훔칠수도 있다.2.업로드 디렉토리는 무조건 htdocs 아래 말고 다른 디렉토리 에 올린다 !!/updir 이나 c:\updir 등 htdocs 와 관련이 없는 디렉토리에 올리게 한다. !!3.CP명령을 사용시에 exec(cp $file , 처럼 exec() 를 절대로 사용하지 말아야 한다.기냥 cp()만을 사용하라 !!!www.php.net/...
  • 웹지기 09-30 4901 0 0 댓글 0
  • 29 [ php ] php로 디렉토리 삭제
  • php 디렉토리와 하위 파일까지 한꺼번에 삭제하는 함수[code]// 사용시 모든 데이터가 날아가므로 주의를 요함(Recursive)function LIB_removeAllData( $URL ){ if( is_dir( $URL )) { if( $dh = opendir( $URL ) ) { while( ( $file = readdir( $dh ) ) !== false ) { if( $file == '.' || $file == ".." ) continue; if( f...
  • 웹지기 09-30 4369 0 0 댓글 0
  • 28 [ php ] 게시판 권한, 그룹관리자 권한 수정시
  • /lib/common.lib.phpfunction is_admin 을 변경// 관리자인가?[code]function is_admin($mb_id){ global $config, $group, $board; if (!$mb_id) return; if ($config['cf_admin'] == $mb_id) return 'super'; //if ($group['gr_admin'] == $mb_id) return 'group'; //그룹관리자를 몽땅 만들기 위해 추가 2011.1.2 FREEMASTER...
  • 웹지기 10-01 6274 0 0 댓글 1
  • 27 [ php ] PHP 정규식
  • 파일이나 문자열 내에 포함되어 있는 특별한 패턴(또는 특별한 조건을 만족하는 문자열)을 검색하기 위해 미리 정의된 다양한 특수 문자들의 조합을 정규식(regular __EXPRESSION__)이라 한다. 정규식에서의 특수 문자(special character)는 다음과 같다.(1) ^ (caret) : 라인의 처음이나 문자열의 처음을 표시예 : ^aaa (문자열의 처음에 aaa를 포함하면 참, 그렇지 않으면 거짓)(2) $ (dollar) : 라인의 끝이나 문자열의 끝을 표시예 : aaa$ (문자...
  • 웹지기 10-01 3435 0 0 댓글 0
  • 26 [ php ] foreach 및 array
  • [code]$state_list = array( 1 =&gt; "모집중", 2 =&gt; "마감", 3 =&gt; "운영중");if(!array_key_exists($state, $state_list)) $state = 0;$arr_key = array( "ed_name" =&gt; "평생교육사명", "ed_subject" =&gt; &#...
  • 웹지기 10-01 4788 0 0 댓글 0
  • 25 [ php ] $_SERVER 옵션 및 사용설명
  • [code]$_SERVER['DOCUMENT_ROOT'] = 현재 사이트가 위치한 서버상의 위치 =&gt; /webapp/include$_SERVER['HTTP_ACCEPT_ENCODING'] = 인코딩 받식 =&gt; gzip, deflate$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 언어 =&gt; ko$_SERVER['HTTP_USER_AGENT'] = 사이트 접속한 사용자 환경 =&gt; Mozilla/4.0(compatible; MSI...
  • 웹지기 10-01 5644 0 0 댓글 0
  • 24 [ php ] strstr() 문자열 함수
  • strstr() 함수는 찾고 싶은 문자를 찾은 후 그 이후 값까지 반환한다.대소문자 구분하지 않으려면 stristr() 함수를 사용하면 된다.함수의 원형은 다음과 같다.strstr() 함수 원형[code]string strstr ( string $haystack , mixed $needle [, bool $before_needle ] )[/code]인수- haystack : 입력 문자열- needle : 찾을 문자열- before_needle : 결과가 True이면(기본값은 FALSE) hayst...
  • 웹지기 10-01 5146 0 0 댓글 0
  • 23 [ php ] 다차원 배열을 원하는 필드로 정렬하고 싶을 때
  • 데이터베이스 테이블을 모방 한 배열이 있다고 가정합니다.각 배열 요소는 행을 나타내며 각 행 내에서 필드 이름과 값을 포함하는 다른 배열입니다.[code]Array( [0] =&gt; Array ( [name] =&gt; 'Sony TV' [price] =&gt; 600.00 ) [1] =&gt; Array ( [name] =&gt; 'LG TV' [price] =&gt; 350.00 ...
  • 웹지기 10-04 3914 0 0 댓글 1
게시물 검색

회원로그인

접속자집계

오늘
4,287
어제
8,307
최대
33,828
전체
8,655,753

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