일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- jQuery
- 메소드
- document
- 조건문
- property
- 파이썬
- 자바스크립트
- 사칙연산
- burp suite
- lord of sql injection
- suninatas 풀이
- IF문
- element 조회
- blind sql injection
- Pwndbg
- python
- 김성엽 대표님
- sql injection
- xss game 풀이
- htmlspecialchars
- object
- github
- 배열
- 백준 알고리즘
- xss game
- 객체
- 함수
- 백준 파이썬
- 포인터
- window
- Today
- Total
power-girl0-0
[ PHP & MySQL ] 글 생성 본문
생활코딩 PHP & MySQL을 참고하여 공부하였습니다.
스스로 공부한 것을 정리하고 복습하기 위한 목적으로 작성하였습니다.
( 출처 : https://opentutorials.org/course/743inf.run/pBzy opentutorials.org/course/3167)
이전 글에 실습했던 것을 토대로, 해당 글에서는 간단한 글 생성을 해보자.
html소스코드에서 create.php로 이동하는 a태그를 작성한다.
<a href = "create.php">create</a>
create를 클릭하였을 때, 이동되는 create.php를 생성해보자.
간단한 입력 form으로 소스는 아래와 같다.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>WEB</title>
</head>
<body>
<h1>Create Board</h1>
<form action="process_create.php" method="POST">
<p><input type="text" name="title" placeholder="title"></p>
<p><textarea name="description" placeholder="description"></textarea></p>
<p><input type="submit"></p>
</form>
</body>
</html>
이번에는 제출을 눌렀을 때, 이동되는 process_create.php를 구현해보자.
그 전에, 해당 값이 잘 넘어오는지 확인해볼 필요가 있다.
<?php
var_dump($_POST);
?>
위 코드에서 var_dump( )는 변수의 정보를 출력하는 함수이다.
사진과 같이, a와 b의 값이 전송되는 것을 확인할 수 있다.
값이 잘 넘어왔는지 확인되었으니, 이제 sql문을 활용하여 직접 데이터베이스에 삽입해보자.
<?php
$sql = "
INSERT INTO topic
(title, description, created)
VALUES(
'{$_POST['title']}',
'{$_POST['description']}',
NOW()
)
";
echo $sql;
?>
하지만, 이대로만 작성하면 안된다.
데이터베이스 연결하는 명령어도 작성해줘야 한다.
<?php
$conn = mysqli_connect("localhost","root","db비밀번호","opentutorials");
$sql = "
INSERT INTO topic
(title, description, created)
VALUES(
'{$_POST['title']}',
'{$_POST['description']}',
NOW()
)
";
mysqli_query($conn, $sql);
echo $sql;
?>
해당 구문을 실행하기 전, 데이터베이스를 확인해보자.
위와 같이, 해당 테이블이 비어있는 것을 확인하였다.
이제 실행하여 값을 넣어보자.
실행을 위해, 위 코드의 페이지를 reaload한 후 테이블을 다시 확인해보았다.
아래 사진과 같이, 입력한 값이 테이블에 들어간 것을 확인할 수 있다.
마지막으로, 에러 발생시 문제가 발생하였다는 문구가 출력되도록 작성해보자.
또한, error 메시지를 관리자만 보도록 error_log에 따로 저장해보자.
$result = mysqli_query($conn, $sql);
if(result === false){
echo '저장된 과정에서 문제가 발생하였으니, 관리자에게 문의해주세요.';
error_log(mysqli_error($conn));
}
총 소스 코드는 아래와 같다.
<?php
$conn = mysqli_connect(
'localhost',
'root',
'wjdqhqhdks',
'opentutorials');
$sql = "
INSERT INTO topic
(title, description, created)
VALUES(
'{$_POST['title']}',
'{$_POST['description']}',
NOW()
)
";
$result = mysqli_query($conn, $sql);
if($result === false){
echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
error_log(mysqli_error($conn));
} else {
echo '성공했습니다. <a href="main.php">돌아가기</a>';
}
?>
'언어 > PHP' 카테고리의 다른 글
[ PHP & MySQL ] PHP & MySQL 보안 (0) | 2021.03.29 |
---|---|
[ PHP & MySQL ] 글 읽기 (0) | 2021.03.29 |
[ PHP & MySQL ] SELECT (0) | 2021.03.29 |
[ PHP & MySQL ] PHP와 MySQL 연동하기 (0) | 2021.03.28 |
[ PHP & MySQL ] web과 mysql 환경 구축 (0) | 2021.03.28 |