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 " ";}
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_*() 함수가 보이는군요.
얘네들도 변경해주면 됩니다.
1. "mail.php3"가 존재하지 않는다고 나오네요.
2. switch 문은 문법적으로는 별 문제 없어 보입니다.
3. edit, del, rel, write 어떤 걸 눌러도 화면이 같습니다.
아래와 같이 로그를 찍어보시고 $mode에 값이 제대로 들어가는지 확인해보세요.
include('./config.ccc');
print_r2( $_GET["mode"] );
print_r2( $mode );
switch($mode){
///입력하기/////////////////////
!-->
네.. 만수킴님..
print_r2( $_GET["mode"] );
print_r2( $mode );
이것은 아예 되지 않습니다.