게시판 만들기(4) 코드에 대해서 정리한다.
이해하려고 하였고 추후에 시간이 된다면 게시판 기능을 조금더 보완해볼 생각이다..
- 게시판 전체 코드
index.php<?phpinclude 'db.php';session_start();?><!DOCTYPE html><html lang="en"> <head> <title> 게시판 </title> <!-- Bootstrap core CSS --> <link href="bootstrap-3.3.2-dist/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="bootstrap-3.3.2-dist/css/jumbotron.css" rel="stylesheet"> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#"> 게시판 </a> </div> <div id="navbar" class="navbar-collapse collapse"><?php if( !isset($_SESSION[is_login]) && $_SESSION[in_login] != 1 ) {?> <form class="navbar-form navbar-right" method=POST action=signin.php> <div class="form-group"> <input type="text" name=user_id placeholder="USER ID" class="form-control"> </div> <div class="form-group"> <input type="password" name=user_pw placeholder="Password" class="form-control"> </div> <button type="submit" class="btn btn-success">Sign in</button> </form><?php } else {?> <form class="navbar-form navbar-right" method=POST action=signout.php> <button type="submit" class="btn btn-success">Sign out</button> </form><?php }?> </div> </nav> <!-- Main jumbotron for a primary marketing message or call to action --> <div class="jumbotron"> <div class="container"> <table class="table table-striped"> <thead> <tr> <th> 번호 </th> <th> 게시글 제목 </th> <th> 작성자 </th> <th> 작성시간 </th> </tr> </thead> <tbody> <?php $resource = mysql_query( " SELECT * FROM board" );$total_len = mysql_num_rows( $resource );if( isset($_GET[idx]) ) { $start = $_GET[idx] * 10; $sql = "SELECT * FROM board ORDER BY no DESC LIMIT $start, 10";} else { $sql = "SELECT * FROM board ORDER BY no DESC LIMIT 10";}$resource = mysql_query( $sql );$num = 1;while( $row = mysql_fetch_assoc( $resource ) ) { print "<tr>"; print "<th scope='row'>$num</th>"; print "<td>$row[title]</td>"; print "<td>$row[writer]</td>"; print "<td>$row[time]</td>"; print "</tr>"; $num++;}$count = (int)($total_len / 10);if( $total_len % 10 ) { $count++; }print "<tr>";print "<td colspan=4 align=center>";for( $i = 0; $i < $count; $i++ ) { print "<a href=http://192.168.12.100/index.php?idx={$i}> ["; $j = $i+1; print $j; print "] </a>";}print "</td>";print "</tr>"; ?> </tbody> </table> </div> </div> <div class="container"> <form class="navbar-form navbar-right" method=POST action=write.php> <button type="submit" class="btn btn-success">글쓰기</button> </form> </div> <footer> <p>© made 20170823</p> </footer> </body></html>db.php<?php$db = mysql_connect( 'localhost', 'root', '1234' );if( !$db ) { die( 'MYSQL connect ERROR: ' . mysql_error());}$ret = mysql_select_db( 'bbs', $db );if( !$ret ) { die( 'MYSQL select ERROR: ' . mysql_error()); }?>
index.php
<?php
include 'db.php';
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title> 게시판 </title>
<!-- Bootstrap core CSS -->
<link href="bootstrap-3.3.2-dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="bootstrap-3.3.2-dist/css/jumbotron.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"> 게시판 </a>
</div>
<div id="navbar" class="navbar-collapse collapse">
if( !isset($_SESSION[is_login]) && $_SESSION[in_login] != 1 ) {
<form class="navbar-form navbar-right" method=POST action=signin.php>
<div class="form-group">
<input type="text" name=user_id placeholder="USER ID" class="form-control">
<input type="password" name=user_pw placeholder="Password" class="form-control">
<button type="submit" class="btn btn-success">Sign in</button>
</form>
} else {
<form class="navbar-form navbar-right" method=POST action=signout.php>
<button type="submit" class="btn btn-success">Sign out</button>
}
</nav>
<!-- Main jumbotron for a primary marketing message or call to action -->
<div class="jumbotron">
<table class="table table-striped">
<thead>
<tr>
<th> 번호 </th>
<th> 게시글 제목 </th>
<th> 작성자 </th>
<th> 작성시간 </th>
</tr>
</thead>
<tbody>
$resource = mysql_query( " SELECT * FROM board" );
$total_len = mysql_num_rows( $resource );
if( isset($_GET[idx]) ) {
$start = $_GET[idx] * 10;
$sql = "SELECT * FROM board ORDER BY no DESC LIMIT $start, 10";
$sql = "SELECT * FROM board ORDER BY no DESC LIMIT 10";
$resource = mysql_query( $sql );
$num = 1;
while( $row = mysql_fetch_assoc( $resource ) ) {
print "<tr>";
print "<th scope='row'>$num</th>";
print "<td>$row[title]</td>";
print "<td>$row[writer]</td>";
print "<td>$row[time]</td>";
print "</tr>";
$num++;
$count = (int)($total_len / 10);
if( $total_len % 10 ) { $count++; }
print "<td colspan=4 align=center>";
for( $i = 0; $i < $count; $i++ ) {
print "<a href=http://192.168.12.100/index.php?idx={$i}> [";
$j = $i+1;
print $j;
print "] </a>";
print "</td>";
</tbody>
</table>
<form class="navbar-form navbar-right" method=POST action=write.php>
<button type="submit" class="btn btn-success">글쓰기</button>
<footer>
<p>© made 20170823</p>
</footer>
</body>
</html>
db.php
$db = mysql_connect( 'localhost', 'root', '1234' );
if( !$db ) {
die( 'MYSQL connect ERROR: ' . mysql_error());
$ret = mysql_select_db( 'bbs', $db );
if( !$ret ) {
die( 'MYSQL select ERROR: ' . mysql_error());
signin.php<?phpinclude 'db.php';session_start();$id = $_POST[user_id];$pw = $_POST[user_pw];$sql = "SELECT * FROM user WHERE user_id = '{$id}' and user_pw = md5('{$pw}')";$resource = mysql_query( $sql ); $num = mysql_num_rows( $resource );$row = mysql_fetch_assoc( $resource );if( $num > 0 ) { // 인증에 성공한 경우 // 중복 체크 $sql = "SELECT * FROM session WHERE user_id = '{$id}'"; $resource = mysql_query( $sql ); $num = mysql_num_rows( $resource ); if( $num > 0 ) { // 이미 로그인한 사용자인 경우 echo "<script> alert('해당 아이디는 이미 로그인한 상태입니다'); </script>"; } else { // 아직 로그인하지 않은 경우 // 1. 세션 테이블에 사용자 정보를 입력(insert) $sess_id = session_id(); $sql = "INSERT INTO session VALUE( $row[no], '$id', '$sess_id' )"; $ret = mysql_query( $sql ); // 2. 세션 변수에 아이디 추가 $_SESSION[user_id] = $id; $_SESSION[is_login] = 1; // 3. 로그인 환영 메시지 출력 echo "<script> alert('로그인 되었습니다'); </script>"; }} else { // 인증에 실패한 경우 echo "<script> alert('아이디 또는 패스워드가 올바르지 않습니다.'); </script>"; }?><meta http-equiv='refresh' content="0;url='http://192.168.12.100/index.php'">
signin.php
$id = $_POST[user_id];
$pw = $_POST[user_pw];
$sql = "SELECT * FROM user WHERE user_id = '{$id}' and user_pw = md5('{$pw}')";
$num = mysql_num_rows( $resource );
$row = mysql_fetch_assoc( $resource );
if( $num > 0 ) {
// 인증에 성공한 경우
// 중복 체크
$sql = "SELECT * FROM session WHERE user_id = '{$id}'";
// 이미 로그인한 사용자인 경우
echo "<script> alert('해당 아이디는 이미 로그인한 상태입니다'); </script>";
// 아직 로그인하지 않은 경우
// 1. 세션 테이블에 사용자 정보를 입력(insert)
$sess_id = session_id();
$sql = "INSERT INTO session VALUE( $row[no], '$id', '$sess_id' )";
$ret = mysql_query( $sql );
// 2. 세션 변수에 아이디 추가
$_SESSION[user_id] = $id;
$_SESSION[is_login] = 1;
// 3. 로그인 환영 메시지 출력
echo "<script> alert('로그인 되었습니다'); </script>";
// 인증에 실패한 경우
echo "<script> alert('아이디 또는 패스워드가 올바르지 않습니다.'); </script>";
<meta http-equiv='refresh' content="0;url='http://192.168.12.100/index.php'">
signout.php<?phpinclude 'db.php';session_start(); $user_id = $_SESSION[user_id];$sql = "DELETE FROM session WHERE user_id = '{$user_id}'";$ret = mysql_query( $sql );setcookie( session_name(), '', time()-99999999 );session_destroy();?><meta http-equiv='refresh' content="0;url='http://192.168.12.100/index.php'">
signout.php
$user_id = $_SESSION[user_id];
$sql = "DELETE FROM session WHERE user_id = '{$user_id}'";
setcookie( session_name(), '', time()-99999999 );
session_destroy();
write.php<?phpinclude 'db.php';session_start();$user_id = $_SESSION[user_id]; $sql = "SELECT * FROM session WHERE user_id = '{user_id}'";$ret = mysql_query( $sql );if( $ret ) {?><!DOCTYPE html><html lang="en"> <head> <title> 게시판 </title> <!-- Bootstrap core CSS --> <link href="bootstrap-3.3.2-dist/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="bootstrap-3.3.2-dist/css/jumbotron.css" rel="stylesheet"> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#"> 게시판 </a> </div> <div id="navbar" class="navbar-collapse collapse"><?php if( !isset($_SESSION[is_login]) && $_SESSION[in_login] != 1 ) {?> <form class="navbar-form navbar-right" method=POST action=signin.php> <div class="form-group"> <input type="text" name=user_id placeholder="USER ID" class="form-control"> </div> <div class="form-group"> <input type="password" name=user_pw placeholder="Password" class="form-control"> </div> <button type="submit" class="btn btn-success">Sign in</button> </form><?php } else {?> <form class="navbar-form navbar-right" method=POST action=signout.php> <button type="submit" class="btn btn-success">Sign out</button> </form><?php }?> </form> </div><!--/.navbar-collapse --> </div> </nav> <!-- Main jumbotron for a primary marketing message or call to action --> <div class="jumbotron"> <div class="container"> <form class="form-horizontal" method=POST action=write_ok.php> <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">제목</label> <div class="col-sm-10"> <input type="text" name=title class="form-control" id="inputEmail3"> </div> </div> <label for="inputEmail3" class="col-sm-2 control-label">게시글</label> <div class="col-sm-offset-2 col-sm-10"> <textarea name=body class="form-control" rows="10"></textarea> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default">작성 완료</button> </div> </div> </form> </div> </div> <footer> <p>© made 20170823</p> </footer> </body></html><?php }else { echo "<script> alert('로그인한 사용자만 글 작성이 가능합니다'); </script>";?> <meta http-equiv='refresh' content="0;url='http://192.168.12.100/index.php'"><?php}?>
write.php
$sql = "SELECT * FROM session WHERE user_id = '{user_id}'";
if( $ret ) {
</div><!--/.navbar-collapse -->
<form class="form-horizontal" method=POST action=write_ok.php>
<label for="inputEmail3" class="col-sm-2 control-label">제목</label>
<div class="col-sm-10">
<input type="text" name=title class="form-control" id="inputEmail3">
<label for="inputEmail3" class="col-sm-2 control-label">게시글</label>
<div class="col-sm-offset-2 col-sm-10">
<textarea name=body class="form-control" rows="10"></textarea>
<button type="submit" class="btn btn-default">작성 완료</button>
}else {
echo "<script> alert('로그인한 사용자만 글 작성이 가능합니다'); </script>";
write_ok.php<?phpinclude 'db.php';session_start();$title = $_POST[title];$body = $_POST[body];$user_id = $_SESSION[user_id];$date = date("Y-m-d H:i:s");$sql = "INSERT INTO board( title, body, writer, time ) VALUE ( '{$title}', '{$body}', '{$user_id}', '{$date}' )";$ret = mysql_query( $sql );?><meta http-equiv='refresh' content="0;url='http://192.168.12.100/index.php'">
write_ok.php
$title = $_POST[title];
$body = $_POST[body];
$date = date("Y-m-d H:i:s");
$sql = "INSERT INTO board( title, body, writer, time ) VALUE ( '{$title}', '{$body}', '{$user_id}', '{$date}' )";
signup.php<?phpinclude 'db.php';$user_id = $_POST[user_id];$user_pw = $_POST[user_pw];$email = $_POST[email];if( $user_id != '' && $user_pw != '' && $email != '' ) { // duplicate check $sql = "SELECT * FROM user WHERE user_id='{$user_id}'"; $resource = mysql_query( $sql ); $num = mysql_num_rows( $resource ); if( $num > 0 ) { echo "<script> alert('already use id'); </script>"; echo "<script> window.history.back(); </script>"; exit(0); } $sql = "INSERT INTO user( user_id, user_pw, email ) VALUE( '{$user_id}', md5('{$user_pw}'), '{$email}' )"; $ret = mysql_query( $sql ); if( $ret ) { echo "<script> alert('회원가입이 정상적으로 처리되었습니다'); </script>"; echo "<meta http-equiv='refresh' content=\"0;url=http://192.168.12.100/index.php\">"; exit(0); }else { die( 'MYSQL query ERROR: ' . mysql_error()); }}else {?><!DOCTYPE html><html lang="en"> <head> <title>게시판</title> <!-- Bootstrap core CSS --> <link href="bootstrap-3.3.2-dist/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="bootstrap-3.3.2-dist/css/signin.css" rel="stylesheet"> </head> <body> <div class="container"> <form class="form-signin" method=POST> <h2 class="form-signin-heading">Please sign up</h2> <input type="text" name=user_id class="form-control" placeholder="User ID" required autofocus> <input type="password" name=user_pw class="form-control" placeholder="Password" required> <input type="email" name=email class="form-control" placeholder="Email address" required> <button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button> </form> </div> <!-- /container --> </body> </html><?php}?>
signup.php
$user_id = $_POST[user_id];
$user_pw = $_POST[user_pw];
$email = $_POST[email];
if( $user_id != '' && $user_pw != '' && $email != '' ) {
// duplicate check
$sql = "SELECT * FROM user WHERE user_id='{$user_id}'";
echo "<script> alert('already use id'); </script>";
echo "<script> window.history.back(); </script>";
exit(0);
$sql = "INSERT INTO user( user_id, user_pw, email ) VALUE( '{$user_id}',
md5('{$user_pw}'), '{$email}' )";
echo "<script> alert('회원가입이 정상적으로 처리되었습니다'); </script>";
echo "<meta http-equiv='refresh' content=\"0;url=http://192.168.12.100/index.php\">";
die( 'MYSQL query ERROR: ' . mysql_error());
<title>게시판</title>
<link href="bootstrap-3.3.2-dist/css/signin.css" rel="stylesheet">
<form class="form-signin" method=POST>
<h2 class="form-signin-heading">Please sign up</h2>
<input type="text" name=user_id class="form-control"
placeholder="User ID" required autofocus>
<input type="password" name=user_pw class="form-control"
placeholder="Password" required>
<input type="email" name=email class="form-control"
placeholder="Email address" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
</div> <!-- /container -->