php 이전 버전 스크립트 인데 swith 문 작동여부?

php 이전 버전 스크립트 인데 swith 문 작동여부?

QA

php 이전 버전 스크립트 인데 swith 문 작동여부?

본문

안녕하세요?

php 이전 버전 스크립트 인데 swith 문이 작동하지 않습니다.

방명록 소스인데

글쓰기 버튼 등 쓰기, 수정, 삭제 기능이 작동하지 않습니다.

예제 사이트입니다.

http://dolsoft.dothome.co.kr/5202/guest/guest.php

무엇을 고쳐야 쓰기/수정 등이 작동할까요?

 

[code]

<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> 짝퉁-방명록 수정 및 스킨 v1.01</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="최종찬(*** 개인정보보호를 위한 이메일주소 노출방지 ***)">
<meta name="Author" content="잡힌개(*** 개인정보보호를 위한 이메일주소 노출방지 ***)">
<meta name="Author" content="눈비나(*** 개인정보보호를 위한 이메일주소 노출방지 ***)">
<bgsound src="http://nunbina.ncafe.net/music/ooo.asf" loop="infinite">
<script language='JavaScript'>
    <!--
    var CheckWin = null;
    function openWin(url)
    {
        CheckWin=window.open(url, 'notice', 'location=no, directories=no, resizable=no, status=no, toolbar=no, menubar=no, width=450, height=330, scrollbars=no')
    }
//-->
</script>

<style type="text/css">
<!--
 TD, BODY { font-size:9pt; font-family:vardana,돋움;}
 TH { font-size:9pt; }
-->
body {background:url(img/hy.gif);
background-repeat:no-repeat;background-position:right bottom;
background-color:#ffffff;
background-attachment:fixed}
  </style>

</head>

<body bgcolor=white>
<script language="javascript" src="img/snow.js"></script>
<center>
<img src='./guestbook.gif'><p>

<?php


//////////////////////////////////////////////////////////
///짝퉁-방명록
///ver 1.00
///2000년 9월 13일 수요일 오후 5:45:35
///제작자: 최종찬(*** 개인정보보호를 위한 이메일주소 노출방지 ***)
///홈페이지 : http://cnu.ac.kr/~channy
///
///짝퉁 방명록 Ver 1.01
///ver 1.01
///2000년 11월 9일 목요일 0시 5분
///수정배포자 : 김호현(*** 개인정보보호를 위한 이메일주소 노출방지 ***)
///홈페이지:http://cldn.new21.org 글한마디로 남겨주떼염..
///
///짝퉁 이미지
////ver 1.01
////2000년 11월 9일~~^^*
////배포자 : 눈비나(*** 개인정보보호를 위한 이메일주소 노출방지 ***)
////홈페이지 : http://nunbina.ncafe.net
////////////////////////////////////////////////////////////

include('./config.ccc');

switch($mode){

///입력하기/////////////////////
    case 'input':    
            echo "
            <table>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                         이름
                        </font>
                    </td>
                    <td>
                        <form name='form' action='$PHP_SELF' method='post'>
                        <input type=text name=name size=20 maxlength=20 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>
                    </td>
                </tr>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                        비밀번호
                        </font>
                    </td>
                    <td>
                        <input type=password name=password size=20 maxlength=12 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'><font class=ver9>삭제나 수정시 비밀번호가 필요해요.</font>
                    </td>
                </tr>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                        이메일
                        </font>
                    </td>
                    <td>
                        <input type=text name=email size=40 maxlength=40 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>
                    </td>
                </tr>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                        홈주소
                        </font>
                    </td>
                    <td>
                        <input type=text name=homepage size=40 maxlength=40 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>
                    </td>
                </tr>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                        내용
                        </font>
                    </td>
                    <td>
                        <textarea name=comment cols=40 rows=13 style='color:black; background-image: url(img/sunwer.gif); border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'></textarea>
                    </td>
                </tr>
                <tr>
                    <td colspan=2 align=right>
                        <input type=submit value='write' style='color:gray; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>   
                        <input type=reset value='reset' style='color:gray; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>
                        <input type=hidden name=mode value='up'>
                    </td>
            </table>
            ";
            break;

    case "up":        //방명록을 쓰고 등록버튼을 눌렀을때
            //입력내용 확인
            if(!$name)
            {
                echo "
                <script>
                    window.alert('이름을 입력하지 않았네요.')
                    history.go(-1)
                </script>
                ";
                exit;
            }
            if(!$comment)
            {
                echo "
                <script>
                    window.alert('내용을 입력하셔야 해요...^^;')
                    history.go(-1)
                </script>
                ";
                exit;
            }

            
            $query="INSERT INTO guest VALUES('', '$password', now(), '$REMOTE_ADDR', '$name', '$email', '$homepage', '$comment', '$reply')";
            $result=mysqli_query($connect,$query);
            if($result)
            {
                echo "
                <font class=ver10 color=green>방명록에 글을 남기셨습니다....고맙습니다....</font><br>
                <font class=ver9 color=d1d1d1>4초후에 방명록으로 돌아갑니다</font>
                <p>
                <a href='$PHP_SELF'>방명록으로 돌아가기</a>
                <meta http-equiv='refresh' content='4; URL=$PHP_SELF'>
                ";
            }
            else
            {
                echo "
                <script>
                    window.alert('DB 에러가 발생했네요...다시 한번 해보세요...')
                    history.go(-1)
                </script>
                ";
            }
            break;

///수정하기////////////////////////
    case "edit":
            $query="SELECT DATE_FORMAT(date,'Y.m.d. H:i:s'), no, ip, name, email, homepage, comment, password FROM guest WHERE no=$id";
            $result=mysqli_query($connect,$query);

            $pass=mysql_result($result, 0, "password");
            $homepage=mysql_result($result, 0, "homepage");
            $name=mysql_result($result, 0, "name");
            $email=mysql_result($result, 0, "email");
            $comment=mysql_result($result, 0, "comment");


            echo "
            <table>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                             이름
                        </font>
                    </td>
                    <td>
                        <form name='form' action='$PHP_SELF' method='post'>
                        <input type=text name=name2 size=20 maxlength=20 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30); value='$name'>
                    </td>
                </tr>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                        비밀번호
                        </font>
                    </td>
                    <td>
                        <input type=password name=password2 size=20 maxlength=12 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'><font class=ver9>삭제나 수정시 비밀번호가 필요해요.</font>
                    </td>
                </tr>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                        이메일
                        </font>
                    </td>
                    <td>
                        <input type=text name=email2 size=40 maxlength=40 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30); value='$email'>
                    </td>
                </tr>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                        홈주소
                        </font>
                    </td>
                    <td>
                        <input type=text name=homepage2 size=40 maxlength=40 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);' value='$homepage'>
                    </td>
                </tr>
                <tr>
                    <td align=right>
                        <font color=gray class=ver9>
                        내용
                        </font>
                    </td>
                    <td>
                        <textarea name=comment2 cols=40 rows=13 style='color:black; background-image: url(img/sunwer.gif); border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>$comment</textarea>
                    </td>
                </tr>
                <tr>
                    <td colspan=2 align=right>
                        <input type=submit value='edit' style='background-color:#ffffff; color:gray; border:1 solid back '>   
                        <input type=reset value='reset' style='background-color:#ffffff; color:gray; border:1 solid back '>
                        <input type=hidden name=mode value='editup'>
                        <input type=hidden name=num value='$id'>
                    </td>
            </table>
            ";
            break;            

    case "editup":
            $query="SELECT DATE_FORMAT(date,'Y.m.d. H:i:s'), no, ip, name, email, homepage, comment, password FROM guest WHERE no=$num";
            $result=mysqli_query($connect,$query);
            $pass=mysql_result($result, 0, "password");

            if($pass != $password2)
            {
                echo "
                    <script>
                        window.alert('비밀번호가 틀립니다. 다시 확인하여주세요.')
                        history.go(-1)
                    </script>
                ";
            }else    {
                $query="UPDATE guest SET email='$email2', homepage='$homepage2', comment='$comment2' WHERE no=$num";
                $result=mysqli_query($connect,$query);
                    echo "
                        <font class=ver10>방명록 글을 수정하셨습니다....고맙습니다....</font><br>
                        <font class=ver9 color=d1d1d1>4초후에 방명록으로 돌아갑니다</font><p>
                        <a href='$PHP_SELF'>방명록으로 돌아가기</a>
                        <meta http-equiv='refresh' content='4; URL=$PHP_SELF'>
                    ";
            }
            break;

///지우기////////////////////
    case "del":     
            echo "
                    <form action='$PHP_SELF' method='post'>
                    <font class=ver10>비밀번호를 입력하세요.</font><p>
                    <input type=password name=pass size=20 maxlength=12 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'><p>
                    <input type=submit value='del' style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>
                    <input type=hidden name=mode value='delup'>
                    <input type=hidden name=num     value='$id'>
                    ";
            break;

    case "delup":
            $query="SELECT * FROM guest WHERE no=$num";
            $result=mysqli_query($connect, $query);
            $password=mysql_result($result, 0, "password");
        if(!$pass)
        {
            echo "
            <script>
                window.alert('비밀번호를 입력하여주세요.')
                history.go(-1)
            </script>
            ";
        }else{

            if($pass==$password || $pass==$adminpass)
            {
                $query="DELETE FROM guest WHERE no=$num";
                $result=mysqli_query($connect, $query);
                if($result)
                {
                    $query="UPDATE guest SET no=no-1 WHERE no>$num";
                    $result=mysqli_query($connect, $query);

                    echo "
                    <center>
                    <font class=ver10 color=green>발자취를 지웠습니다...</font><br>
                    <font class=ver9 color=d1d1d1>4초후에 방명록으로 돌아갑니다</font><p>
                    <a href='$PHP_SELF'>방명록으로 돌아가기</a>
                    <meta http-equiv='refresh' content='4; URL=$PHP_SELF'>
                    ";
                }
            }
            else
            {
                echo "
                <script>
                    window.alert('패스워드가 틀립니다. 다시 확인해 주셔요.')
                    history.go(-1)
                </script>
                ";
            }
        }
        break;
            
///댓글 달기/////////////////////////
    case "reply":
            $query="SELECT DATE_FORMAT(date, 'Y.m.d H:i:s'), no, ip, name, email, homepage, comment FROM guest WHERE no=$id";
            $result=mysqli_query($connect, $query);

            $guest=mysqli_fetch_array($result);
            $guest[comment]=nl2br($guest[comment]);
            //번호와 이름, 날짜, ip표시하는 테이블
            echo "
            <table width=600 border=0 cellspacing=0>
                <tr>
                    <td height=25 width=320 background='./bg.gif'>
                        <font class=ver10 color=3399ff>No. </font>
                        <font class=ver10 color=blue><b>$guest[no]</b></font>
                               
                        <font class=ver10>$guest[name]</font>
                    </td>
                    <td width=150 background='./bg.gif'>
                        <font class=ver8>when:</font><font class=ver8 color=gray> $guest[0]</font>
                    </td>
                    <td width=130 background='./bg.gif'>
                        <font class=ver8>where:</font><font class=ver8 color=gray> $guest[ip]</font>
                    </td>
                </tr>
            </table>";
            
            //방명록이 있는 부분..
            echo "
            <table width=600 border=0 cellspacing=0>
                <tr>
                    <td bgcolor=white width=500 colspan=2>
                        <img src='./e.gif'>   
                        ";
                        //홈페이지가 없는 사람인 경우
                        if(!$guest[homepage])
                        {echo "&nbsp";}
                        else{            
                        echo "
                        <a href='$guest[homepage]' target='_blank' valign=middle>$guest[homepage]</a>";
                        }
            echo "
                    </td>
                </tr>
                <tr>
                    <td bgcolor=white colspan=2>
                            <img src='./email.gif' valign=middle>  
                    ";
                        //email주소가 없는 사람인 경우
                        if(!$guest[email])
                        {echo " ";}
                        else{
                        echo "
                            <a href=javascript:openWin('./mail.php3?id=$guest[email]');> $guest[email]</a>";
                        }
            echo "
                    </td>
                <tr>
                    <td bgcolor=white colspan=2>
                        <blockquote>
                            $guest[comment]
                            <p> <p>
                            
                            <!---------댓글 쓰기 폼---------->
                            <center>
                            <table>
                                <tr>
                                    <td valign=middle align=right>
                                        <form action='$PHP_SELF' method=post>
                                        <font class=ver10 color=gray>admin password:</font>
                                    </td>
                                    <td>
                                        <input type=password name=pass size=15 style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'><br>
                                    </td>
                                </tr>
                                <tr>
                                    <td align=right>
                                        <font class=ver10 color=gray>reply:</font>
                                    </td>
                                    <td>
                                        <textarea name=reply cols=40 rows=13 style='color:black; background-image: url(img/sunwer.gif); border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'></textarea>
                                    </td>
                                </tr>
                                <tr>
                                    <td align=right colspan=2>
                                        <input type=submit value='reply' style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>
                                        <input type=reset value='reset' style='color:black; border-width:1px; border-color:#4B6074; border-style:dashed;filter:alpha(opacity=30);'>
                                        <input type=hidden name=mode value='replyup'>
                                        <input type=hidden name=num     value='$id'>
                                    </td>
                                </tr>
                            </table>
                            </center>
                            <!---------폼의 마지막------------->
                        </blockquote>
                    </td>
                </tr>
            </table>
            <p>
            ";
            break;

    case "replyup":

            if(!$reply)
            {
                echo "
                    <script>
                        window.alert('댓글을 쓰지 않았습니다...')
                        history.go(-1)
                    </script>
                ";
            }

            if($pass==$adminpass)
            {
                $query="UPDATE guest SET reply='$reply' WHERE no=$num";
                $result=mysqli_query($connect, $query);
                
                if($result)
                {
                    echo "
                    <font class=ver10>$num 번째 방명록에 댓글을 남기셨습니다....</font><br>
                    <font class=ver9 color=d1d1d1>4초후에 방명록으로 돌아갑니다</font><p>
                    <a href='$PHP_SELF'>방명록으로 돌아가기</a>
                    <meta http-equiv='refresh' content='4; URL=$PHP_SELF'>
                    ";
                }
                else
                {
                    echo "
                    <script>
                        window.alert('DB 에러가 발생했네요...다시 한번 해보세요...')
                        history.go(-1)
                    </script>
                    ";
                }
            }
            else
            {
                echo "
                    <script>
                        window.alert('관리자 비밀번호가 틀립니다. 다시 확인해주세요.')
                        history.go(-1)
                    </script>
                ";
            }
            break;

///방명록 리스트///////////////////
    default:    

            $query="SELECT DATE_FORMAT(date,'Y.m.d. H:i:s'), no, ip, name, email, homepage, comment, reply FROM guest ORDER BY date DESC";
            $result=mysqli_query($connect,$query);
            $num=mysqli_num_rows($result);


            if($num==0)//방명록이 없을 경우
            {
                    echo "
                    <table border=0 width=500>
                        <tr>
                            <td width=100>
                                    <font class=ver9>전체</font><font class=ver9 color=#4B6074> 0</font><font class=ver9>건</font>
                            </td>
                            <td width=310>
                                 
                            </td>
                            <td width=30>
                                 
                            </td>
                            <td width=30>
                                 
                            </td>
                            <td width=30>
                                    <a href='$PHP_SELF?mode=input'><img src='write2.gif' border=0 alt='방명록쓰기'></a>
                            </td>
                        </tr>
                    </table>

                    <br>
                    <font class=ver9>현재 기록되어있는 방명록이 없습니다.</font>

                    <table border=0 width=500>
                        <tr>
                            <td width=100>
                                    <font class=ver9>전체</font><font class=ver9 color=#4B6074> 0</font><font class=ver9>건</font>
                            </td>
                            <td width=310>
                                 
                            </td>
                            <td width=30>
                                 
                            </td>
                            <td width=30>
                                 
                            </td>
                            <td width=30>
                                    <a href='$PHP_SELF?mode=input'><img src='write2.gif' border=0 alt='방명록쓰기'></a>
                            </td>
                        </tr>
                    </table>
                    ";
            }else{


                    $total=mysqli_num_rows($result);

                    //first처음 시작  scale한페이지에 표시할 방명록갯수
                    if(!$first)
                    {$first=0;}
                    $scale=10;

                    $next_page=($first+$scale);
                    $prev_page=($first-$scale);

                    //다음페이지,이전페이지 링크
                    echo "
                    <table border=0 width=500>
                        <tr>
                            <td width=100>
                  

이 질문에 댓글 쓰기 :

답변 3

2002년 4월 22일, PHP v4.2 버전부터 php.ini - register_globals = Off 기본값으로 변경되었습니다.
- https://www.php.net/manual/en/ini.core.php#ini.register-globals

아래 페이지 참고하면 됩니다.
- https://www.php.net/manual/en/language.variables.external.php

 

switch($mode) → switch($_REQUEST['mode']) // GET, POST

 

$name → $_POST['name'] // 또는 $_REQUEST['name']

처럼 다른 변수도 마찬가지로 변경해주면 됩니다.

간단하게 URL을 통한 값은 $_GET, 폼(POST)을 통한 값은 $_POST,

또는 $_REQUEST 사용.

- https://www.php.net/manual/en/reserved.variables.request.php

 

include('./config.ccc'); → config.ccc의 확장자를 php로 변경하세요.

URL로 접속하면 해당 파일을 그대로 다운받을 수 있습니다.

DB 접속 정보가 노출되었으니 확장자 변경하고, 접속 정보도 변경하세요.

 

$PHP_SELF → $_SERVER['PHP_SELF']

$REMOTE_ADDR → $_SERVER['REMOTE_ADDR']

 

DB 접속은 mysqli_*() 함수로 잘 변경했는데, 질문의 소스에 mysql_*() 함수가 보이는군요.

얘네들도 변경해주면 됩니다.

thumb-2949618301_1593826751.4012_730x281.png

1. "mail.php3"가 존재하지 않는다고 나오네요.

2. switch 문은 문법적으로는 별 문제 없어 보입니다.

3. edit, del, rel, write 어떤 걸 눌러도 화면이 같습니다.
   아래와 같이 로그를 찍어보시고 $mode에 값이 제대로 들어가는지 확인해보세요.


include('./config.ccc');
 
 
                                 print_r2( $_GET["mode"] );
                                 print_r2( $mode );
switch($mode){
///입력하기/////////////////////

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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