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