한번씩 읽고 가세요.
“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
로그인 하기
본문코드
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>로그인 페이지</title>
<?php include "../include/head.php" ?>
</head>
<body class="gray">
<?php include "../include/skip.php" ?>
<!-- skip -->
<?php include "../include/header.php" ?>
<!-- header -->
<main id="main" class="container">
<div class="login__inner">
<h2>로그인</h2>
<p>로그인을 하시면 게시글 및 댓글 작성이 가능합니다.<br>
회원가입을 하면 로그인이 가능합니다.<br>admin@admin.com/1234
</p>
<div class="login__form bmStyle btStyle">
<form action="loginSave.php" name="loginSave" method="post">
<fieldset>
<legend class="blind">로그인 영역</legend>
<div>
<label for="youEmail" class="blind required">이메일</label>
<input type="email" id="youEmail" name="youEmail" class="inputStyle" placeholder="이메일" required>
</div>
<div>
<label for="youPass" class="blind required">비밀번호</label>
<input type="password" id="youPass" name="youPass" class="inputStyle" placeholder="비밀번호" required>
</div>
<button type="submit" class="btnstyle2 mt20">로그인</button>
</fieldset>
</form>
</div>
<div class="login__footer">
<ul class="listStyle2">
<li>회원가입을 하지 않았다면 회원가입을 먼저 해주세요! <a href="join.html">회원가입</a></li>
<li>아이디가 기억이 나지 않는다면 <a href="#">아이디 찾기</a></li>
<li>비밀번호가 기억이 나지 않는다면 <a href="#">비밀번호 찾기</a></li>
</ul>
</div>
</div>
</main>
<!-- //main -->
</body>
</html>
로그인 페이지도 동일하게 include를 사용하여 헤더와 스킵메뉴를 불러와줍니다.
login.php
<?php
include "../connect/connect.php";
include "../connect/session.php";
$youEmail = $_POST['youEmail'];
$youPass = $_POST['youPass'];
// echo $youEmail, $youPass;
//데이터 출력
function msg ($alert){
echo "<p class='intro__text'>$alert</p>";
}
// 데이터 조회
$sql = "SELECT memberID, youEmail, youName, youPass FROM members WHERE youEmail = '$youEmail' AND youPass = '$youPass'";
$result = $connect -> query($sql);
if($result){
$count = $result -> num_rows;
if($count == 0){
msg("이메일 또는 비밀번호가 틀렸습니다. 다시 한번 확인해주세요! <br> <div class='intro__btn'><a href='../login/login.php'>로그인</a></div>");
} else {
//로그인 성공
$memberInfo = $result -> fetch_array(MYSQLI_ASSOC);
// echo "<pre>";
// var_dump($memberInfo);
// echo "</pre>";
//세션 생성
$_SESSION['memberID'] = $memberInfo['memberID'];
$_SESSION['youEmail'] = $memberInfo['youEmail'];
$_SESSION['youName'] = $memberInfo['youName'];
Header("Location:../main/main.php");
}
}
?>
include "../connect/connect.php";
include "../connect/session.php";
include를 사용해 connect.php 와 session.php 의 데이터를 가져와줍니다. connect.php $youEmail = $_POST['youEmail'];
$youPass = $_POST['youPass'];
를 가져와줍니다.
회원 가입 페이지와 같이
function msg ($alert){
echo "<p class='intro__text'>$alert</p>";
}
msg를 사용합니다.
먼저 이메일과 비밀번호가 사용자가 제공한 것과 일치하는 테이블 에서 memberID, youEmail, youName및 필드를 선택합니다. 그런 다음 쿼리에서 반환된 행이 있는지 확인합니다. 행이 없으면 이메일 또는 비밀번호가 잘못된 것이므로 오류 메시지를 표시하고 로그인 페이지에 대한 링크를 제공합니다.youPassmembers
쿼리가 행을 반환하면 로그인에 성공한 것입니다. 메서드를 사용하여 구성원의 정보를 연관 배열로 검색한 fetch_array()다음 superglobal을 사용하여 구성원의 ID, 이메일 및 이름에 대한 세션 변수를 생성합니다 $_SESSION. 마지막으로 함수를 사용하여 사용자를 메인 페이지로 리디렉션합니다.
$sql = "SELECT memberID, youEmail, youName, youPass FROM members WHERE youEmail = '$youEmail' AND youPass = '$youPass'";
$result = $connect -> query($sql);
if($result){
$count = $result -> num_rows;
if($count == 0){
msg("이메일 또는 비밀번호가 틀렸습니다. 다시 한번 확인해주세요! <br> <div class='intro__btn'><a href='../login/login.php'>로그인</a></div>");
} else {
//로그인 성공
$memberInfo = $result -> fetch_array(MYSQLI_ASSOC);
// echo "<pre>";
// var_dump($memberInfo);
// echo "</pre>";
//세션 생성
$_SESSION['memberID'] = $memberInfo['memberID'];
$_SESSION['youEmail'] = $memberInfo['youEmail'];
$_SESSION['youName'] = $memberInfo['youName'];
이것은 "헤더" 기능을 사용하여 사용자를 다른 웹 페이지로 리디렉션하는 PHP로 작성된 코드 라인입니다. 이 경우 사용자는 현재 폴더(폴더 이름 앞에 "../"로 표시됨)에서 한 수준 위의 폴더에 있는 "main.php"라는 파일로 리디렉션됩니다.
이 코드 줄은 대상 페이지의 URL을 지정하는 "Location" 특성과 함께 HTTP 헤더를 사용자의 브라우저로 보냅니다. 브라우저가 이 헤더를 수신하면 자동으로 사용자를 지정된 페이지로 리디렉션합니다.
Header("Location:../main/main.php");
헤더는 실제 콘텐츠보다 먼저 전송되어야 하므로 출력이 브라우저로 전송되기 전에 이 코드 줄을 배치해야 한다는 점에 유의해야 합니다.