가장 기본인 회원가입 구현해보기
회원가입 전에 session을 통해 로그인 여부를 확인먼저 해보자
1. 메인
index.php
<?php
session_start();
if(!isset($_SESSION['userid'])) {
echo "<p>로그인이 필요합니다</p>";
echo "<p><button onclick=\"window.location.href='login.php'\">로그인</button> </p>";
} else {
$userid = $_SESSION['userid'];
echo "<p>WELCOME $userid";
echo "<p><button onclick=\"window.location.href='logout.php'\">로그아웃</button></p>";
}
?>
index 파일에 입력하고 아이디가 필요한 페이지에 include 해주기
session_start();
세션 아이디가 존재하는지 확인하고 없으면 새로 만들어준다
session이 필요한 곳에서는 상단에 꼭 넣어줘야한다
session은 사용자가 브라우저를 닫아 연결을 끝내는 지점까지를 말한다
isset()
변수가 설정되어있는지 확인
if(!isset($_SESSION['userid'])) {
} else {
$userid = $_SESSION['userid'];
}
session에 'userid'가 존재하지 않는다면 ~ {
실행 코드
} else {
$userid 에 세션아이디 'userid' 저장 }

2. 회원가입
아주 간단하게만 구현해봤다
회원 db
create table member(
no int (10) not null auto_increment primary key, //회원번호
userid varchar(20)not null, //아이디
userpw varchar(100) not null, //비밀번호
username varchar(20) not null, //이름
date date not null //가입날짜
);
auto_increment : 데이터를 추가할따마다 자동으로 1 증가
join.php
<?php
include 'index.php';
?>
<p>회원가입</p>
<form method = "post" action ="join_ok.php">
<table>
<tr>
<td>아이디</td>
<td><input type="text" name=userid placeholder="아이디를 입력하세요" required></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="text" name=userpw placeholder="비밀번호를 입력하세요" required></td>
</tr>
<tr>
<td>이름</td>
<td><input type="text" name=username placeholder="이름을 입력하세요" required></td>
</tr>
</table>
<div class="btnset">
<button type="submit" value="회원가입">회원가입</button>
</div>
</form>
- 상단에 index.php include해줘서 로그인 여부 확인해주고
form에 담아서 데이터 전송,

- form의 method는 post
action은 데이터를 전송할 주소, join_ok.php로 input에 입력된 값을 보내준다


- required를 입력해주면 간단하게 필수 입력 설정
- button을 클릭하면 submit 됨
join_ok.php
넘어온 데이터를 가지고 이 파일에서 db에 저장을 해준다
<?php
include 'index.php';
$userid = $_POST[userid];
$userpw = $_POST[userpw];
$username = $_POST[username];
$date = date('Y-m-d');
//비밀번호 암호화(비밀번호 값이 매번 달라짐)
$userpw_hash = password_hash($userpw, PASSWORD_DEFAULT);
//echo $userid;
//echo $userpw_hash;
$URL = 'login.php';
$query = "insert into member(userid,userpw,username,date)
values('$userid','$userpw_hash','$username','$date')";
$result = mysqli_query($connect,$query);
?>
<script>
alert("<?php echo "회원가입이 완료되었습니다."?>");
location.replace("<?php echo $URL?>");
</script>

$userid~~ 각각의 변수에 넘어온 값 저장하기
$_POST['userid];
form으로 넘겨줬기때문에 POST,
form 안 input의 name값으로 전송된다
password_hash()

password_hash는 비밀번호를 암호화 해주는 함수,
db에서 확인할때마다 다른 비밀번호가 나온다
(처음 member db 만들때 비밀번호를 varchar(10)으로 줘서 에러가 났었다
비밀번호를 암호화 하게되면 특수문자가 포함된 긴 문자열이 비밀번호가 되기때문에
충분한 범위를 지정해주어야 한다 )
$userpw_hash라는 변수에 비밀번호 암호화,
$userpw : 암호화할 문자열 ( 사용자가 입력해 POST로 받은 $userpw)
