PHP

[6] PHP - 파일 불러오기(include,require)

너개발 2024. 4. 14. 12:30
728x90

[ 환경 ]
ㄴ php 7
ㄴ MySQL 5.7

※ 최근 세션, 로그인, 로그아웃시에 각 페이지마다 session_start()를 사용해야 했다.

ㄴ 이는 각 페이지마다 불 필요하게 코드가 계속 늘어나야 한다는 문제가 있다.

 


 

1. 함수 설명

  기능설명 에러 여부 파일중복여부
include include 입력하여 파일 호출 오류 x - 파일 없어도 다음코드 실행 O 중복 o
include_once include_once 입력하여 파일 호출 오류 x - 파일 없어도 다음코드 실행 O 중복 x
require require 입력하여 파일 호출 오류 O - 파일 없으면 다음코드 실행 X 중복 o
require_once require_once 입력하여 파일 호출 오류 O - 파일 없으면 다음코드 실행 X 중복 x

 

2. 사용 예시

<?php 
	include 'a.php'; // ex1)
	include_once 'a.php'; // ex2)
	require 'a.php'; // ex3)
	require_once 'a.php'; // ex4)
?>

 

3. SESSION_START()를 공통 파일로

※ 세션은 웹사이트 전체에서 필요하고 없을 경우 로그인이 안되기 때문에 require_once를 사용

ㄴ 오류도 나타내고, 파일도 중복되지 못하도록 설정


※ MySQL서버 연결 구문도 필수파일이기에 공통으로 빼서 관리해야함. (마찬가지로 require_once사용)

<?php 
	// 설정페이지
	session_start(); // 세션 시작
?>

 ㄴ config.php 페이지

 

 

 

<?php 
	require_once 'config.php'; // 설정 페이지 호출
	// db연결구문
	$host = "11.111.111.1"; // 아이피
	$user = "root"; // 사용자명
	$password = "???????"; // 비밀번호
	$dbname = "???????"; // 데이터베이스명
	$conn = new mysqli($host, $user, $password, $dbname); // 객체지향
	$mysql_check = $conn->connect_error; // mysql에러확인

	if($mysql_check){ // db연결여부 확인 코드.
		die("연결실패 :".$mysql_check); // 연결 실패 원인 함께 출력
	}else{
		echo "DB서버 연결성공<br>";
	}

// $_POST[] : form method [post]로 전송했을때 php에서 $_POST[]값을 확인할수 있다.
// print_r()로 $_POST를 출력시 입력한 전체 POST값을 확인할 수 있다.
	$id = $_POST['id']; // 입력한 아이디값 변수
	$pw = $_POST['password']; // 입력한 비밀번호값 변수
    
	// 아이디 비밀번호를 체크하여 회원목록 테이블에서 체크
	// r_pw는 입력한 비밀번호를 암호화하여 서브쿼리로 체크
	$sql = "
		SELECT 
			idx,
			id,
			pw,
			( SELECT PASSWORD('{$pw}') ) AS r_pw 
		FROM member 
		WHERE id = '{$id}' 
	";

	$result = $conn->query($sql); // 객체지향 - 쿼리 실행 함수
	$select = $result->fetch_assoc(); // 객체지향 - 데이터를 문자형 연관배열로 변환

	// 필요한 컬럼을 $select배열에서 추출하여 체크
	if($select['id'] != $id){ // 아이디 체크
		die("아이디가 일치하지 않습니다.");
	}else if($select['pw'] != $select['r_pw']){ // 비밀번호 체크
		die("비밀번호가 일치하지 않습니다.");			
	}else{ // 아이디, 비밀번호가 일치할 경우
		// session_start(); // 세션시작
		$_SESSION['serial_idx'] = $select['idx']; // 회원고유번호 세션등록
		$_SESSION['serial_id'] = $select['id']; // 회원아이디 세션등록
		echo "<script>alert('로그인에 성공하였습니다.');</script>"; // 로그인 성공 출력
		header("location:main.php"); // 로그인 성공 후 해당페이지 이동
	}
    
?>

ㄴ 로그인 실행페이지

ㄴ 로그인 성공시에 세션 실행하는 코드였지만, 최상단에 설정페이지 호출로 주석

 

<?php 
	// session_start();
	require_once 'config.php'; // 설정페이지 호출
	$login = $_SESSION['serial_idx'];
	if(!$login){
	 	echo "<script>alert('로그인을 하지 않았습니다.');</script>";
	 	echo "<script>window.location.href='index.php';</script>";
	}
?>

ㄴ 로그인 성공 후 페이지

 

<?php
    require_once 'config.php'; // 설정페이지 호출
    unset($_SESSION["serial_idx"]); 
    header("location:index.php"); 
?>

 ㄴ 로그아웃 페이지

 

※ 위와 같이 전체페이지에 설정파일을 호출하고 세션 시작구문은 삭제하면 된다.

728x90