테스트 사이트 - 개발 중인 베타 버전입니다

DB에 데이터가 입력되질 않는군요[사례있음]

· 14년 전 · 1715 · 4
"입력값이 부족합니다" 와 함께 아래의 메시지가 출력되며,
DB에 데이터가 입력되질 않는군요.
정확한 원인을 찾아주시면 사례하겠습니다^^

Warning: Cannot modify header information - headers already sent by (output started at C:\inetpub\wwwroot\0\config.cfg:16) in C:\inetpub\wwwroot\0\functions.inc on line 32
Fatal error: Cannot redeclare is_url_valid() (previously declared in C:\inetpub\wwwroot\0\functions.inc:3) in C:\inetpub\wwwroot\0\functions.inc on line 9


#-------------------------- write.php--------------------------------#
<?PHP include( "./functions.inc" ); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
<!--

<?PHP include( "./common_style.inc" ); ?>

.ques_head
{
background-color : #F9E79D;
text-align : center;
}

.input_td
{
background-color : #FEFCE2;
}
-->
</style>
<title>게시판</title>
</head>
<body>
<form name="write_form" method="post" action="write_db.php">
<center>
<table>
<tr>
<td class="ques_head">글쓴이</td>
<td class="input_td">
<input type="text" name="name" size="10" maxsize="10">
</td>
</tr>
<tr>
<td class="ques_head">e-mail</td>
<td class="input_td">
<input type="text" name="email" size="40" maxsize="50">
</td>
</tr>
<tr>
<td class="ques_head">홈페이지</td>
<td class="input_td">
<input type="text" name="homepage" size="40" maxsize="50">
</td>
</tr>
<tr>
<td class="ques_head">암호</td>
<td class="input_td">
<input type="password" name="passwd" size="10" maxsize="10">
</td>
</tr>
<tr>
<td class="ques_head">제목</td>
<td class="input_td">
<input type="text" name="subject" size="50" maxsize="255">
</td>
</tr>
<tr>
<td class="ques_head">내용</td>
<td class="input_td"><textarea name="article" cols="60" rows="20"></textarea>
</tr>
</table>
<table>
<tr>
<td width="100"> </td>
<td align="center"><input type="submit" value="입력"></td>
<td width="100" align="right">
<a href="<?=dest_url( "./list.php", $page )?>">목록</a>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>

-------------------------------------write_db.php-----------------------------------------

<?PHP
include( "config.cfg" );
include( "functions.inc" );
/*
$name=$HTTP_POST_VARS["name"];
$subject =$HTTP_POST_VARS["subject "];
$passwd =$HTTP_POST_VARS["passwd "];
$article =$HTTP_POST_VARS["article "];
*/

$name =$_POST['name'];
$subject =$_POST['subject'];
$passwd =$_POST['passwd'];
$article =$_POST['article'];


#------------------- 앞뒤 스페이스 제거 ----------------#
$name = trim( $name );
$email = trim( $email );
$homepage = trim( $homepage );
$subject = trim( $subject );
$writedate = date( "y-m-d" );
$article = trim( $article );

#------------------ 입력값 이상유무 확인 ----------------#
if( !$name || !$subject || !$passwd || !$article )
{
error( "입력값이 부족합니다." );
exit;
}
#---------------- 간단한 이메일 이상유무 확인 --------------#
if ( $email && !is_email_valid( $email ) )
{
error( "이메일을 잘못 입력하셨습니다." );
exit;
}

#------------- 간단한 홈페이지 이상유무 확인 ----------------#
if ( $homepage && !is_url_valid( $homepage ) )
{
error( "홈페이지를 잘못 입력하셨습니다." );
exit;
}

#------------------ 암호 encrpt ---------------------#
$passwd = substr( md5( trim( $passwd ) ), 0, 10 );

#----------------- 데이타베이스 연결 -------------------#
$connect = mysql_connect( "localhost", "user", "password" );

mysql_select_db( "db", $connect );

#---------------- uid, gid, depth 결정 -------------------#
$query = "select MAX( gid ) as gid from t_board";
$result = mysql_query( $query, $connect );
$gid = current(mysql_fetch_array( $result ));
$gid = $gid + 1;

#----------------- 테이블에 글 삽입 --------------------#
$query = "INSERT INTO t_board VALUES('$_POST[gid]', '$_POST[name]', '$_POST[email]', '$_POST[homepage]', '$_POST[passwd]', '$_POST[subject]', '$_POST[article]', '$_POST[writedate]','$_POST[refnum]')";

//$query = "insert into t_board ( gid, name, email, homepage, passwd, subject, article, writedate ) values ( '$gid', '$name', '$email', '$homepage', '$passwd', '$subject', '$article', '$writedate' )";

mysql_query( $query, $connect );
mysql_close( $connect );

forward( "list.php" );
?>



-------------------------------------functions.inc-----------------------------------------

<?PHP
#------- homepage 이상유무 체크 ----------#
function is_url_valid( $url )
{
if ( eregi( "[a-z0-9]+\.[a-z0-9_]+", $url ) )
return TRUE;
else
return FALSE;
}


#---------- email 이상유무 체크 ----------#
function is_email_valid( $email )
{
if( eregi( "^[a-z0-9\._-]+@[a-z0-9\._-]+\.[a-z]+", $email ) )
return TRUE;
else
return FALSE;
}

#------------------ error 처리 함수 --------------------#
function error( $msg )
{
echo("
<script language=\"javascript\">
alert( \"$msg\" );
history.back();
</script>" );
}

#---------------- forwarding 처리 함수 ------------------#
function forward( $url )
{
header( "Location:".$url );
//echo( "<meta http-equiv='Refresh' content='0'; URL=list.html" );
}

#--------------- 링크를 만들어 주는 함수 ------------------#
function dest_url( $link, $page, $uid=NULL )
{
GLOBAL $kind;
GLOBAL $key;

$link .= "?page=$page";
if ( $uid )
$link .= "&uid=$uid";
if ( $key )
$link .= "&kind=$kind&key=$key";
return $link;
}

?>
-------------------------------------reply_db.php-----------------------------------------

<?PHP
include( "config.cfg" );
include( "functions.inc" );

#------------------- 앞뒤 스페이스 제거 ----------------#
$name = trim( $name );
$email = trim( $email );
$homepage = trim( $homepage );
$subject = trim( $subject );
$writedate = date( "y-m-d" );
$article = trim( $article );

#------------------ 입력값 이상유무 확인 ----------------#
if( !$name || !$subject || !$passwd || !$article )
{
error( "입력값이 부족합니다." );
exit;
}

#--------------- 간단한 이메일 이상유무 확인 ---------------#
if ( $email && !is_email_valid( $email ) )
{
error( "이메일을 잘못 입력하셨습니다." );
exit;
}

#-------------- 간단한 홈페이지 이상유무 확인 ---------------#
if ( $homepage && !is_url_valid( $homepage ) )
{
error( "홈페이지를 잘못 입력하셨습니다." );
exit;
}

#------------------ 암호 encrpt ---------------------#
$passwd = substr( md5( trim( $passwd ) ), 0, 10 );

#------------------ 데이타베이스 연결 ------------------#
$con = mysql_connect( "localhost", "user", "password" );
mysql_select_db( "PHP", $con );

#----------------- gid, depth 결정 --------------------#
$gid = trim( $gid );
$depth = trim( $depth );
$query = "select max( depth ) depth from
board where depth like '$depth%' and gid=$gid";
$result = mysql_query( $query, $con );
$row = mysql_fetch_array( $result );

if( $row[depth] != $depth )
$depth = $depth.chr( ord( substr( $row[depth], -1 ) ) + 1 ) ;
else
$depth = $depth."A";

#--------------- 테이블에 글 삽입 ----------------------#
$query = "insert into board
( gid, depth, name, email, homepage, passwd, subject, article, writedate )
values ( $gid, '$depth', '$name', '$email', '$homepage',
'$passwd', '$subject', '$article', '$writedate' )";

mysql_query( $query, $con ) or die ( mysql_error() );
mysql_close( $con );
forward( "./list.php" );
?>



-----------------------------------config.cfg-----------------------------------------------
<?PHP
# 한페이지에 나타나는 글의 수
$rows_page = 10;

# list의 하단에 나타나는 직접 이동할 수 있는 페이지 수
$direct_pages = 10;

# html tag의 허용 유무
$tag_enable = FALSE;

# list에 나타나는 제목의 길이제한
$row_length = 42;

# 읽기에서 보여지는 제목의 길이 제한
$subject_length = 65;

?>

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 4개

14년 전
#------------------ 입력값 이상유무 확인 ----------------#
if( !$name || !$subject || !$passwd || !$article )
{
error( "입력값이 부족합니다." );
exit;
}

위의 변수가 비어있기 때문에 나오는 메시지군요..
정상적으로 데이터가 넘어가고 있나요?
write_db.php에
echo "$name"; 이렇게 해 보니
넘어온 데이터가 보입니다.
headers already sent .........이 에러는
functions.inc 화일 32행 이전에 공백이던 무엇이던 출력이 있기 때문입니다

Cannot redeclare is_url_valid() ........이 에러는
같은 함수가 두번 들어가있다는 말입니다
functions.inc 화일 32행이라면 아래 내용인데, 이해가 가지 않습니다.

function forward($url)
{
header("Location:".$url); //32행
}

그리고 write_db.php에는 이 함수가 한번만 사용되고 있습니다.

if ( $homepage && !is_url_valid( $homepage ) )
{
error( "홈페이지를 잘못 입력하셨습니다." );
exit;
}

게시글 목록

번호 제목
284438
284437
284435
284430
284420
284417
284409
284401
284399
284397
284380
284378
284371
284370
284366
284364
284360
284357
284355
284354