php 파일생성과 삭제

php 파일생성과 삭제

QA

php 파일생성과 삭제

본문

안녕하세요?

php 구 버전의 책을 보고 연습하고 있는데,

아래 소스코드에서 파일생성과 파일삭제가 되지 않는군요...

(아마도 책의 저자는 순수 php 코드를 이용하여 설명하고자 한 것 같네요)

링크 페이지를 보면

삭제버튼과 생성버튼이 동작하지 않습니다.

이전에도 도움을 받았는데...........또 도움을 청합니다. 

(몇일 찾아서 해 보아도 되질 않네요.. ㅠㅠ)

 


<?php
$NewsDir = "/dolsoft/www/amw/news/news/";        //뉴스파일이 들어가는 디렉토리
$Extension =".txt";
$AdminFile ="newsAdmin.php";
//뉴스 파일을 읽어서 시간 순으로 정렬한다.
function SortNewsFiles()
{
    global $NewsDir, $Extension, $NewsFiles;
    
    $NewsFiles=array();
    if($dirhandle = opendir($NewsDir))
    {
        
        while(false !== ($filename = readdir($dirhandle)))
        {
            $fn = strtolower($filename);
            if (strstr($fn, $Extension))
                {
                $filetime = filemtime($NewsDir.$filename);
                $NewsFiles[$filename] = $filetime;
                }
                
        }
    closedir($dirhandle);
        
    arsort($NewsFiles);
        
//    print $NewsFiles."<br>";
                
    }
}

//하이퍼링크 자동으로 걸기 사용문장 "#{url |단어나 문장}" 
function HyperLinking($line)
{
    $subA=strstr($line, "#{");
    if($subA)
    {
    $subB=strstr($subA,"}");
        if($subB)
        {
            $lengA=strlen($subA);
            $lengLine=strlen($line);
            $line=substr($line,0,$lengLine-$lengA);
            $subA=substr($subA,2);
            $lengB=strlen($subB);
            $lengA=strlen($subA);
            $subA=substr($subA,0,$lengA-$lengB);
            $subB=substr($subB,1);
        $ta=strstr($subA,"|");
        if($ta){
            $lengA=strlen($subA);
            $lt=strlen($ta);
            $linktext=substr($subA,$lenA-$lt+1);
            $subA=substr($subA,0,$lengA-$lt);
        } else {
            $linktext=$subA;
        }
        //$line=$line."<a href=".$subA.">".$linktext."</a>".$subB;
          $line=$line."<a href=".$subA." target=_blank>".$linktext."</a>".$subB;
        }
    }
    return($line);
}

//뉴스 파일 내용을 보여 준다.
function ShowNewsContent($filename)
{
        global $NewsDir;
        $contents = file($NewsDir.$filename);
        $n = count($contents);
        $filedate=date("l,F d,Y", filemtime($filename));    //echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
        
        echo "<font color =#3f5e9e size=4><I><B>
                $contents[0]
                </I></B></FONT><BR>
                <HR><FONT SIZE=2><B>
                $filedate
                </B><BR>";
                
        for ($i=1; $i<$n; $i=$i+1)
        {
            $line=chop($contents[$i]);
            $line=htmlspecialchars($line);
            $line=HyperLinking($line);
            echo($line."<BR>");
        }
}
/*
//읽을 뉴스 파일을 지정한다.
function ShowNews()
{
        global $NewsFiles;
        
        for(reset($NewsFiles);$filename = key($NewsFiles);
        next($NewsFiles))
            {
                ShowNewsContent($filename);
                echo "<P>";
            }
}
*/
//관리자 화면을 디스플레이한다.
Function ShowNewsAdmin()
{
    global $NewsFiles, $AdminFile;
    
    echo "<FORM METHOD=POST ACTION=$AdminFile>";        //$AdminFile - /*<form method="post" action="<?=$_SERVER['PHP_SELF']*/
    
    for(reset($NewsFiles);$filename = key($NewsFiles);
        next($NewsFiles))    
        {
        
            ShowNewsContent($filename);
            
            echo "<INPUT TYPE=SUBMIT NAME=DeleteButton VALUE=\"Delete ".$filename."\">";
            echo "<P>";
        }
        
        echo "<BR>
                뉴스 제목 :<BR>
                <INPUT type=text NAME=title size=40><BR>
                뉴스 내용 :<BR>
                <TEXTAREA NAME=message ROWS=8 COLS=60></TEXTAREA><BR>
                <INPUT type=SUBMIT NAME=SubmitButton VALUE=Submit>
                </FORM>
            ";
}
//새로운 뉴스를 등록해 준다.
function CreateNewsEntry($title,$message)
{
    global $NewsDir, $Extension;
    
    $fp=fopen($NewsDir.time().$Extension,"w");
    fwrite($fp,$title."\n".$message);
    fclose($fp);
    SortNewsFiles();    //사용자 함수 호출
}
//특정 뉴스를 지워 버린다.
function DeleteNews($fn)
{
    global $NewsDir;
    unlink($NewsDir.$fn);
    SortNewsFiles();
}
if($SubmitButton=="Submit"){
    CreateNewsEntry($title,$message);
}
elseif($DeleteButton !=""){
    $tok = strtok($DeleteButton," ");
    $fn=strtok(" ");
    DeleteNews($fn);
}

SortNewsFiles();
ShowNewsAdmin();
        
?>
 

이 질문에 댓글 쓰기 :

답변 2

일단 눈에 들어오는 오류는..

함수 예약어를 대문자로 작성하셨네요

소문자로 변경해보셔요~!

Function -> function



function ShowNewsAdmin() //Function ShowNewsAdmin() 소문자로 입력하셔야합니다.

답변 감사합니다.
소문자로 바꾸어도 변동 없습니다.
form의 값을 못 받아서 그런것 같아요... 파일 생성은 되었습니다.
아래와 같이 폼의 값을 돌려 받는 것 추가하니... 다시읽기 하면 계속하여
자동생성되는 문제는 있지만 파일 생성은 됩니다.
삭제는 아직........??
$SubmitButton = $_REQUEST['SubmitButton'];
$title = $_REQUEST['title'];
$message = $_REQUEST['message'];

DogFoot개발 님의 코드로 하니 삭제도 잘 됩니다.^^

일단 작동과 별개로
오타가 있어서 말씀드렸습니다. ^^;

혹시 submit 버튼을 이렇게 한번 변경 시도 부탁드립니다.

echo "<INPUT TYPE='button' NAME=DeleteButton VALUE=\"Delete ".$filename."\" onclick='this.form.submit();'>";

이코드도 아래 코드 처럼 변경해주세요.
얼마나 옜날 버전 PHP를 가르쳐 주고 있는지는 모르겠지만
받아오는 파라미터 구분은 정확하게 해주셔야 합니다.
$_POST로 전송이 되어있으니 POST로 처리를 해주셔야합니다.

elseif( $_POST[DeleteButton] !="" ){
    $tok = strtok($_POST[DeleteButton] ," ");
    $fn=strtok(" ");
    DeleteNews($fn);
}

감사합니다..
옛날 책 집에 있어서...........아주 간단해 보여서 연습해 보는데...이게 더 어렵네요..
서버는 php 7 버전 책은 확장자가 .php3 로 되어 있으니 php가 막 알려지기 시작한..
2008년도 책입니다...ㅎ.. 책 버릴까요????
그래도 책 내용이 자바스크립트 그런 것 없이
순수 php 코드로만 책을 집필한 것 같아서...., 공부해 보고 있습니다.

네 책을 교보문고에 찾아봐서 요즘 실정에 맞는 책을 추천해 드리겠습니다.

https://www.hanbit.co.kr/store/books/look.php?p_code=B1459383572

지금 보고계신 책으로는 현재 php를 따라가기 힘드실겁니다^^;

디렉터리에 쓰기 권한이 있는지 확인해보세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 30
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT