이번에는 게시글을 쓸 수 있도록 해보겠다.
우선 게시글을 작성하는 창을 html을 통해서 간단히 만들었다.
<!DOCTYPE html>
<html lang="kr">
<head>
<meta charset="UTF-8">
<title>IQ Spoofing</title>
<link rel="stylesheet" href="/nk/CSS/write_1.css">
</head>
<body>
<h1><a href="/nk/index.php">IQ Spoofing</a></h1>
<h2>글쓰기</h2>
<hr id = 'nana'>
<div id = 'content'>
<form action='/nk/upload_content_1.php' method='post'>
<input type="text" name="title" class="text-field" placeholder="제목을 입력해주세요." id="input_title" require>
<hr>
<textarea name="content" class="text-field" placeholder="내용을 입력해주세요." id="input_content" required rows="4" cols="40"></textarea>
<hr>
<input type="submit" value="저장" class="submit-btn">
</form>
</div>
</body>
</html>
중간중간 <hr>태그로 선을 그어주었다.
다만 글 작성을 로그인한 사용자만 사용할 수 있도록 제한하고싶다.
이를 위해서 session변수를 활용하였다.
세션 변수인 loggedin이 로그인시 true로 저장하게 하였으므로 우선 세션을 시작하고 난 뒤 이를 이용하여 로그인 상태를 확인 하였다.
만약 로그인이 되어있지 않을 경우에는 script태그를 이용하여 로그인이 필요하다는 창을 띄우고 게시판으로 리다이렉트시켰다.
<?php
session_start();
// require_once 'tool/chack_er.php';
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
//로그인 확인
} elseif (!isset($_SESSION['loggedin'])) {
?>
<script>
alert('글을 작성하기 위해서는 로그인이 필요합니다.');
window.location.href = "board1.php";
</script>
<?php
//로그인이 되지 않았을 경우 로그인이 필요하다는 창을 띄움.
}
?>
아래는 전체 코드이다.
<!-- write_1.php -->
<?php
session_start();
// require_once 'tool/chack_er.php';
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
//로그인 확인
} elseif (!isset($_SESSION['loggedin'])) {
?>
<script>
alert('글을 작성하기 위해서는 로그인이 필요합니다.');
window.location.href = "board1.php";
</script>
<?php
//로그인이 되지 않았을 경우 로그인이 필요하다는 창을 띄움.
}
?>
<!DOCTYPE html>
<html lang="kr">
<head>
<meta charset="UTF-8">
<title>IQ Spoofing</title>
<link rel="stylesheet" href="/nk/CSS/write_1.css">
</head>
<body>
<h1><a href="/nk/index.php">IQ Spoofing</a></h1>
<h2>글쓰기</h2>
<hr id = 'nana'>
<div id = 'content'>
<form action='/nk/upload_content_1.php' method='post'>
<input type="text" name="title" class="text-field" placeholder="제목을 입력해주세요." id="input_title" require>
<hr>
<textarea name="content" class="text-field" placeholder="내용을 입력해주세요." id="input_content" required rows="4" cols="40"></textarea>
<hr>
<input type="submit" value="저장" class="submit-btn">
</form>
</div>
</body>
</html>
위의 데이터를 전송하는 upload_content_1.php를 작성하도록 하자.
우선 세션을 시작하여 세션변수로 로그인을 확인한다. 만약로그인이 되었으면 쿼리문을 작성한다. 이때 쿼리문은 새로운 데이터를 삽입하므로 insert문을 사용하였다.
이때 제목과 내용의 컬럼 길이가 각 50,1000자이므로 이를 확인하여 안내창을 띄우도록 한다.
<!-- upload_content_1.php -->
<?php
session_start();
// require_once('tool/chack_er.php');
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true) {
require_once('tool/db_conn.php');
//db연결
$title = $_POST['title'];
$content = $_POST['content'];
$writer = $_SESSION['name'];
//변수 정의
$upload_query = "INSERT INTO board_1 (writer, title, content, regdate) VALUES('$writer', '$title', '$content', NOW())";
//쿼리문
if(strlen($title) >= 50){
echo "<script> alert('제목 글자수는 50자 제한입니다.');
window.history.back();</script>";
//제목 글자수 제한
}elseif (strlen($content) >= 1000) {
echo "<script> alert('본문 글자수는 1000자 제한입니다.');
window.history.back();</script>";
//본문 글자수 제한
}
if (mysqli_query($con, $upload_query)) {
echo "<script>
alert('글이 성공적으로 업로드 되었습니다.');
window.location.href = '/nk/board1.php'
</script>";
//업로드 성공시
} else {
echo "<script>
alert('업로드에 실패하였습니다.')
</script>";
//업로드 실패시
}
}elseif(!isset($_SESSION['loggedin'])) {
echo "<script>
alert('글을 작성하기 위해서는 로그인이 필요합니다.');
window.location.href = 'board1.php';
</script>";
//로그인 필요 안내
}
?>
아래와 같이 글을 쓴 뒤에 저장을 누르면 글의 작성이 완료된다.
위와같은 창이 뜬 뒤에 아래와같이 정상적으로 글이 작성됨을 확인 할 수 있다.
'프로그래밍 및 코딩 > PHP' 카테고리의 다른 글
게시판 만들기_글수정 (0) | 2023.05.19 |
---|---|
게시판 만들기_글삭제 (0) | 2023.05.19 |
게시판 만들기_게시글페이지 (3) | 2023.05.16 |
게시판 만들기_목록 (0) | 2023.05.16 |
회원가입_주소검색 페이지 작성 및 부모창에 전송 (0) | 2023.05.08 |