오늘은 php와 mysql을 이용해서

회원가입

로그인

로그아웃

의 기능을 가지고 있는 페이지를 만들어봤습니다.

과제로 한거라 뭐 참고한 강의는 없고 제가 이전까지 공부했던 내용을 바탕으로 만들었습니다.

이런식으로 엄청나게 간단하게 만들었습니다.

 

동영상 후 캡처한 테이블입니다.

동영상 후 캡처한 데이터베이스입니다.

여기에서 보다시피 회원가입 시 비밀번호가 일치하지 않으면 데이터베이스에 입력되지 않습니다.

테이블의 자료형은 이렇게 생겼습니다.

이름만 봐도 뭘 저장하는지 알겠죠?

index.php

<?php
session_start();

$conn = mysqli_connect("localhost", "root", "111111", "info");

$sql = "SELECT * FROM privacy";
$result = mysqli_query($conn, $sql);

if(isset($_SESSION['id'])){
  $main = '
  <h3>안녕하세요'.$_SESSION["id"].'님!</h3>
  <a href = "process_sign_out.php">logout</a>
  ';
}
else{
  $main = '
    <h3>Login</h3>
    <form action="process_sign_in.php" method="post">
      id : <input type="text" name="id" value="" placeholder="Id를 입력해주세요.">
      <br>
      pw: <input type="password" name="pw" value="" placeholder="PW를 입력해주세요.">
      <br>
      <input type="submit" name="login" value="Login">
    </form>
    <a href="sign_up.php">Sign Up</a>
    ';
}
 ?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Nesquitto</title>
  </head>
  <body>
    <h1>Nesquitto's test page!</h1>
    <?=$main?>
  </body>
</html>

sign_up.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Sign Up</title>
  </head>
  <body>
    <h1><a href="index.php">Nesquitto's test page!</a></h1>
    <h2>회원가입</h2>
    <form action="process_sign_up.php" method="post">
      <h4>Id</h4>
      <input type="text" name="id" value="" placeholder="Id를 입력해주세요.">
      <h4>Pw</h4>
      <input type="password" name="pw" placeholder="PW를 입력해주세요.">
      <h4>Pw 다시 입력</h4>
      <input type="password" name="pw_re" placeholder="PW를 다시 입력해주세요">
      <h4>자기소개</h4>
      <textarea name="profile" placeholder="자기소개 해주세요..ㅎ"></textarea>
    </br>
      <input type="submit" name="Sign Up" value="Sign Up">
    </form>
  </body>
</html>

process_sign_up.php

<?php
$conn = mysqli_connect("localhost", "root", "111111", "info");

if($_POST['pw']==$_POST['pw_re']){
  $filtered = array(
    'id'=>mysqli_real_escape_string($conn, $_POST['id']),
    'pw'=>mysqli_real_escape_string($conn, $_POST['pw']),
    'profile'=>mysqli_real_escape_string($conn, $_POST['profile'])
  );

  $sql = "
    INSERT INTO privacy
      (id, pw, created, profile)
      VALUES(
          '{$filtered['id']}',
          '{$filtered['pw']}',
          NOW(),
          '{$filtered['profile']}'
        )
    ";

    $result = mysqli_query($conn, $sql);
    if($result === false){
    echo "데이터가 올바르지 않습니다. 관리자에게 문의해주세요.";
    }
    else {
    echo '가입 완료했습니다. <a href="index.php">돌아가기</a>';
    }
}
else {
  echo "비밀번호가 올바르지 않습니다. 다시 시도해주세요.";
  ?>
  <a href="sign_up.php">돌아가기</a>
<?php
}
?>

process_sign_in.php

<?php
session_start();
$conn = mysqli_connect("localhost", "root", "111111", "info");
$filtered = array(
  'id'=>mysqli_real_escape_string($conn, $_POST['id']),
  'pw'=>mysqli_real_escape_string($conn, $_POST['pw'])
);

  $sql = "SELECT * FROM privacy";
  $result = mysqli_query($conn, $sql);
  while($row = mysqli_fetch_array($result)){
    if($row['id']==$filtered['id']){
      if($row['pw']==$filtered['pw']){
        $_SESSION['id'] = $row['id'];
        header('Location: index.php');

      }
    }
  }
  if($success !=1){
    $success = 0;
?>
    <form action="index.php" method="post">
      <h1>로그인에 실패했습니다. 다시 입력해주세요.</h1>
      <input type="hidden" name="success" value="<?=$success?>">
      <input type="submit" name="submit" value="메인창으로 돌아가기">
    </form>
<?php
  }
?>

process_sign_out.php

<?php
session_start();
$res = session_destroy();
if($res){
    header('Location: index.php');
}
 ?>

이 코드들을 보게되면 처음 사용한 내용이 있습니다.

바로

session_start();
$_SESSION['id']
session_destroy();

Session에 관한 내용입니다.

이걸 사용하게 된 이유는 일반 변수나 post 방식으로 로그인을 했을 때에는 새로고침을 하게 되면 바로 로그아웃이 되는 경우가 있었기 때문입니다.

Session변수는 사용자가 서버와 연결을 하고 여러 페이지에 걸쳐서 활동을 하고 나중에 완전히 연결을 끊었을 때까지 유지되는 변수라고 합니다. 그렇기 때문에 사용할 수 있었고요.

session_start(); : session을 시작합니다.

$_SESSION['id']: 세션 변수에 배열 형식으로 id값이 존재하여 값을 넣을 수 있습니다.

session_destroy(); : 시작한 session 변수 내용을 모두 없앱니다.

이렇게까지 설명하겠습니다.

나머지는 코드를 통해 이해해주세요 ㅎ

https://github.com/Nesquitto/Login_out_Sign_up-PHP-MySQL

 

Nesquitto/Login_out_Sign_up-PHP-MySQL-

여러가지 짜집고 넣고 생각하고 찾아서 만들어봤습니다. Contribute to Nesquitto/Login_out_Sign_up-PHP-MySQL- development by creating an account on GitHub.

github.com

 

'Web-기초' 카테고리의 다른 글

PHP + MySQL 기초(2)完  (0) 2020.04.11
PHP + MySQL 기초(1)  (0) 2020.04.11

+ Recent posts