1

PHP - 코드 간결화

PHP - 코드 간결화

노아의 블로그

    목차
반응형

만들면서 느끼시는게 있으실겁니다.

바로 점점 페이지가 많아질수록 코드가 많아져서 보기가 어렵습니다..

프로그래머는 기본적으로 유지보수라는것을 생각하고 만들어야합니다.

한번 만들고 땡이 아니라 언제 어디서 버그가 터질지 모르니 아니면 새로운 기능을 추가할때..등 그때 그때마다 빠르고 쉽게 볼수있게

불필요한 코드를 제거하고 간결화를 시켜 가독성을 높이는것이 중요합니다.

 

이번시간에는 전에 만들어놓았던 비효율적이고 읽기 어려운 코드들을 고쳐보도록 하겠습니다.

 

지금 당장 떠오르셔야되는게 있어야합니다.

페이지를 만들때마다 계속 써야되는 단골손님이요.

 

바로 DB 연결코드입니다.

DB 연결은 데이터를 조회하거나 삽입할때 등등 기본적으로 필요한 코드이죠. 

하지만 페이지가 점점더 많아질수록 계속 계속 그 코드를 복사하고 페이지 코드가 길어지는 난감한 상황이 이어집니다.

 

아니 그러면 어떻게 해결할까요....

뭔가 좋은 방법이 없을까요?

 

로그인 페이지,메인 페이지,회원가입 페이지

모든 페이지에 이 코드가 들어가네요.

<?php
$servername = "localhost"; //서버주소
$username = "user1234"; //MYSQL 사용자 이름
$password = "1234Qwert!"; //MYSQL 사용자 비번
$dbname = "test"; //접속할 DB 이름

$conn = mysqli_connect($servername,$username,$password,$dbname); //mysql 연결

// 연결 확인
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error()); //에러메시지
}
?>

 

아 그렇다면 좋은 방법이 떠올랐습니다.

 

이런식으로 DB연결만 처리하는 페이지를 따로 만들어서

 

필요한 페이지(로그인,회원가입,메인) 에다가 꽂아버리는건 어떨까요?

 

네. 가능합니다. 

 

페이지에 다른 페이지를 포함시킬수 있습니다. 이것을 Include 라고 합니다.

 

그렇다면 db연결 페이지를 따로 빼봅시다.

connect.php를 만들어서 

db연결 코드만 넣을게요.

<?php
$servername = "localhost"; //서버주소
$username = "user1234"; //MYSQL 사용자 이름
$password = "1234Qwert!"; //MYSQL 사용자 비번
$dbname = "test"; //접속할 DB 이름

$conn = mysqli_connect($servername,$username,$password,$dbname); //mysql 연결

// 연결 확인
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error()); //에러메시지
}
?>

그러면 connect.php를 DB연결을 요구하는 페이지에(login,index,register에) 각각 포함시키면 되겠네요! (집어 넣은다 생각하세요)

 

 

기존에 있던 각각의 페이지 (login,index,register)에 있는 DB연결 코드를 싹 지워줍니다.

 

그리고 각각의 페이지 상단에다 다음과 같은 코드를 입력하면 DB연결 페이지를 넣을 수 있습니다.

<?php
	include 'connect.php';
?>

 

3개 페이지 모두 넣어주셔야해요!

 

일단 index.php로 예시를 들어보겠습니다.

<?php
	include 'connect.php';
?>

<?php 
	session_start();
	$id = $_SESSION["userid"];
	$sql = "SELECT * FROM test_tbl where id = '$id'"; 
    	$result = mysqli_query($conn, $sql); 
    	
    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
        echo "@@MAIN PAGE@@";
        echo "<br>";
        echo $row["name"]. " USER WELCOME!!!<br>";
    }
    //login faild
} else {
   header('Location: login.php');
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Welcome!</title>
</head>
<body>
    <h1>Main page</h1>
    <form method="post" action="logout.php">
    	<input type="submit" value="Logout">
    </form>
</body>
</html>

connet.php를 index.php상단에 집어넣은다 생각하세요.

그런데 connect.php에는 뭐가있었죠?

 

<?php
$servername = "localhost"; //서버주소
$username = "user1234"; //MYSQL 사용자 이름
$password = "1234Qwert!"; //MYSQL 사용자 비번
$dbname = "test"; //접속할 DB 이름

$conn = mysqli_connect($servername,$username,$password,$dbname); //mysql 연결

// 연결 확인
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error()); //에러메시지
}
?>

이 코드가 있었죠.

 

그래서 윗 윗 코드를 해석하면 

 

<?php
$servername = "localhost"; //서버주소
$username = "user1234"; //MYSQL 사용자 이름
$password = "1234Qwert!"; //MYSQL 사용자 비번
$dbname = "test"; //접속할 DB 이름

$conn = mysqli_connect($servername,$username,$password,$dbname); //mysql 연결

// 연결 확인
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error()); //에러메시지
}
?>

<?php 
	session_start();
	$id = $_SESSION["userid"];
	$sql = "SELECT * FROM test_tbl where id = '$id'"; 
    	$result = mysqli_query($conn, $sql); 
    	
    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
        echo "@@MAIN PAGE@@";
        echo "<br>";
        echo $row["name"]. " USER WELCOME!!!<br>";
    }
    //login faild
} else {
   header('Location: login.php');
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Welcome!</title>
</head>
<body>
    <h1>Main page</h1>
    <form method="post" action="logout.php">
    	<input type="submit" value="Logout">
    </form>
</body>
</html>

이 코드와 동일합니다. 

 

어떄요 기능은 똑같지만 보다 더 간결해졌죠?

 

이런식으로 중복된 코드를 하나로 뭉쳐서 여러곳에서 공유하는것이 좋습니다.

반응형

'WEB > PHP' 카테고리의 다른 글

PHP - 회원가입 중복검사  (0) 2023.04.22
PHP - 회원가입 구현  (0) 2023.04.22
PHP - 로그아웃 구현  (0) 2023.04.22