PHP-04

68819 ワード

MySQL, PHP



DB接続(PHP-DBにバインド)

  • mysqli connect(「IPアドレス」,「アカウント名」,「パスワード」,「データベース名」,「ポート番号」)of die(「接続失敗時メッセージ」)
  • <!-- mysqli_connect를 이용하여 서버와 연결한다. -->
    <!-- 현재 연결하는 서버는 로컬서버이다.(서버ip, 서버명, 서버비밀번호, 데이터베이스명)으로 연결한다. -->
    <!-- die함수를 이용하여 실패시 문구를 만든다. -->
    <?php
    // $변수명을 만들어 변수에 연결 여부를 담는다. 
        $conn = mysqli_connect("127.0.0.1", "root", "1234", "frontend") or die("데이터베이스 연결 실패");
    ?>
  • 登録フォームコード、検証関数、およびアドレスapiを使用するcdnと対応する関数が接続されています.
  • 嗜好nameを嗜好[]に設定し、phpでフォームをコミットするときに順番に受信できるようにします.
  • <!DOCTYPE html>
    <html lang="en">
    <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">
        <!-- 회원 가입 양식을 검사하기 위한 js -->
        <script src="js/regist.js" defer></script>
        <!-- 주소찾기를 위한 cdn 연결 -->
        <script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
    
        <title>Document</title>
    </head>
    <body>
        <h2>회원가입</h2>
        <!-- action으로 php파일을 연결하고 onsubmit으로 자바스크립트 내의 함수가 실행되도록 했다., 이 함수는 유효성검사하는 함수임 -->
        <form action="2_regist_ok.php" name="regform" id="regform" method="post" onsubmit="return send_it()">
            <input type="hidden" name="isssn" id="isssn" value="n">
            <p><label>아이디 : <input type="text" name="userid" id="userid" maxlength="20"></label></p>
            <p><label>비밀번호 : <input type="password" name="userpw" id="userpw" maxlength="20"></label></p>
            <p><label>비밀번호 확인 : <input type="password" name="userpw_re" id="userpw_re" maxlength="20"></label></p>
            <p><label>이름 : <input type="text" name="name" id="username"></label></p>
            <p><label>휴대폰 번호 : <input type="text" name="hp" id="hp"></label></p>
            <p>
                <label><input type="radio" name="usergender" id="" value="남자" checked></label>
                <label><input type="radio" name="usergender" id="" value="여자"></label>
            </p>
            <p><label>이메일 : <input type="text" name="email" id="email"></label></p>
            <!-- 취미는 php에서 배열로 받는다. -->
            <p>
                <!-- 배열로 받기위해 name을 hobby[]로 작성한다. -->
                취미 : 
                <label>드라이브<input type="checkbox" name="hobby[]" value="드라이브"></label>
                <label>영화감상<input type="checkbox" name="hobby[]" value="영화감상"></label>
                <label>공부<input type="checkbox" name="hobby[]" value="공부"></label> 
                <label>게임<input type="checkbox" name="hobby[]" value="게임"></label> 
                <label>운동<input type="checkbox" name="hobby[]" value="운동"></label>
                <label>코딩<input type="checkbox" name="hobby[]" value="코딩"></label>
            </p>
            <p>
                <input type="text" id="sample6_postcode" placeholder="우편번호" name="zipcode" readonly>
                <!-- 여기에 주소를 찾기위한 함수를 연결한다. -->
                <input type="button" 
                onclick="sample6_execDaumPostcode()" value="우편번호 찾기"><br>
            </p>
            <p>
                <input type="text" id="sample6_address" placeholder="주소" name="address1" readonly>
                <input type="text" id="sample6_detailAddress" placeholder="상세주소" name="address2"><br>
                <input type="text" id="sample6_extraAddress" placeholder="참고항목" name="address3" readonly>
            </p>
            <p><input type="submit" value="가입완료"> <input type="reset" value="다시작성"></p>
        </form>
    </body>
    </html>
  • 登録完了php
  • 受信嗜好配列処理方法
  • sql文を変数に作成し、myspli queryとして
  • を送信して実行します.
    <?php 
    // include에 만들었던 연결 코드를 include하여 붙인다.
        include "./include/dbconn.php";
        // 넘어온 값들은 post 형식임으로 아래와 같이 사용한다.
        $userid = $_POST['userid'];
        $userpw = $_POST['userpw'];
        $username = $_POST['name'];
        // hobby를 가져오면 배열로 저장된다.
        $hobby = $_POST['hobby'];
        // 변수 최초 값을 할당
        // 어차피 얘가 넘어오면 선택한 값이 넘어옴
        $hobbystr = $hobby[0];
        // 배열의 길이를 다음과 같이 사용한다.
        for ($i=1; $i < count($hobby); $i++) { 
            // .으로 연결이 가능하여 누적연산자도 아래와 같이 사용
            //hobbystr에는 hobby의 값들이 누적되어 재할당되었다.
            $hobbystr .= ",".$hobby[$i];
        }
        $useremail = $_POST['email'];
        $hp = $_POST['hp'];
        $usergender = $_POST['usergender'];
        $zipcode = $_POST['zipcode'];
        $address1 = $_POST['address1'];
        $address2 = $_POST['address2'];
        $address3 = $_POST['address3'];
    
        // sql로 보내기위해 다음과 같이 변수를 저장한다. 
        // sql코드로 만들어 저장해야한다.
        $sql = "insert into tb_user (userid, 
        userpw, username, userphone, useremail, 
        userhobby, zipcode, address1, address2, address3, usergender) 
        values('$userid',md5('$userpw'),'$username','$hp','$useremail','$hobbystr','$zipcode','$address1','$address2','$address3','$usergender')";
    
        // include에 conn변수가 있다. 연결하고자 하는 서버와 해당 서버코드가 담긴 변수를 적으면 sql문이 동작하여 실행되게 된다.
       $result = mysqli_query($conn, $sql);
        // 쿠키를 만들어 담아 로그인 하기 쉽도록 만든다. (아이디를 자동으로 만들어 넣어줄꺼다)
       setcookie("joinid", $userid,time()+60*5,"/")
    ?>
    
    <script>
        // 회원가입 성공 창을 띄운다.
        alert("회원가입 성공!");
        // 다음 연결 php경로를 만든다.
        location.href="./3_login.php";
    </script>
  • ログインウィンドウ
  • Cookieが存在する場合、Cookieを使用して値の
  • に値を入れます.
    <!DOCTYPE html>
    <html lang="en">
    <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>
    </head>
    <body>
        <!-- 쿠키를 받아서 변수에 담을 것이다. -->
        <?php
        $joinid = "";
        if(isset($_COOKIE['joinid'])){
            // 해당 쿠키명을 찾아서 만든 변수에 넣는다.
            $joinid = $_COOKIE['joinid'];
        }
        ?>
        <h2>로그인</h2>
        <!-- 로그인이 완료되면 보낼 곳 -->
        <form action="3_login_ok.php" method="post">
            <!-- 타입과 name을 설정한다. -->
            <!-- 변수가 만들어져 있으면 value값을 변수로 세팅한다. -->
            <p>아이디 : <input type="text" name="userid" value="<?=$joinid?>"></p>
            <p>비밀번호 : <input type="password" name="userpw"></p>
            <p><input type="submit" value="로그인"></p>
        </form>
        <a href="./2_regist.php">회원가입</a>
    </body>
    </html>
  • ログイン成功ウィンドウ
  • sqlクエリ文をmysqlに送信して検索し、結果を配列
  • に格納
  • でインポートするデータは、キーと値
  • を含む.
  • flagを使用して、
  • に正常にログインするかどうかを決定します.
    <?php
        // 세션을 사용하기 위한 start()함수
        session_start();
        // 서버와 연결하기위한 코드가 담긴 php를 include
        include "./include/dbconn.php";
        // userid 변수에 post형식으로 받아온 userid를 넣는다.
        $userid = $_POST['userid'];
        // userpw 변수에 post형식으로 받아온 userpw를 넣는다.
        $userpw = $_POST['userpw'];
    
        //DB검색 sql문을 변수에다가 담는다.
        $sql = "select useridx, userid, username from tb_user where userid = '$userid' and userpw = md5('$userpw')";
        // result에 sql 실행 결과를 담는다.
        $result = mysqli_query($conn, $sql);
        // 가져온 데이터를 배열로 담는다. key(컬럼명), value(값)로 담긴다.
        $data = mysqli_fetch_array($result);
        // flag를 만들어 userid가 존재하는지 검사한다.
        // 데이터가 정상적으로 만들어지고 검색이 되면 userid가 존재할 것이다.
        $flag = isset($data['userid']) ? true : false;
        
        if($flag){
            // 세션에 해당 userid를 넣고 
            $_SESSION['userid'] = $userid;
            // 세션에 해당 useridx를 넣고
            $_SESSION['useridx'] = $data['useridx'];
            // 세션에 가져온 username을 넣으면 sesstion을 이용하여 새로운 값을 띄울 수 있다. 
            $_SESSION['username'] = $data['username'];
            // 다음과 같이 출력하고 이동시킨다. 
            echo "<script>alert('로그인 성공'); location.href = './4_main.php';</script>";
            
        }else{
            // 그렇지 않으면 다음과 같이 출력하고
            echo "<script> alert('로그인 실패! 아이디 비밀번호를 확인하세요');"; 
            // history.back();하여 뒤로 가기를 한다.
            echo "history.back(); </script>";
        }
    ?>
  • ログは成功後のメインウィンドウです
  • で保存したセッション値を使用して、ログイン成功ページまたはログインページを表示します.
  • <!DOCTYPE html>
    <html lang="en">
    <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>PHP 게시판</title>
    </head>
    <body>
        <h2>PHP 게시판</h2>
        
        <?php
        // 세션을 사용한다.
        session_start();
        // 세션에 이전 페이지에 넣은 값들이 있다. 해당 값을 찾아서 조건문에 이용하자.
        if(!isset($_SESSION['userid'])){
        ?>
        <script>
          // userid가 없다면 로그인 후 페이지 이용경고창을 띄우고 로그인창으로 보내자
          alert("로그인 후 이용하쇼")
          location.href = "./3_login.php";
        </script>
        <?php
        }else{
          // 만약 userid가 있다면
        ?>
        <!-- username값을 이용하여 환영문구를 만들자 -->
        <p><?=$_SESSION['username']?>님 어서옵쇼</p>
        <!-- logout도 할 수 있어야한다. -->
        <p><a href="./3_logout.php">로그아웃</a></p>
        <?php
        }
        ?>
    </body>
    </html>
  • ログアウトページ
  • セッション
  • をキャンセル
    <?php
    // 세션을 이용한다.
      session_start();
    // 해당 창으로 오면 세션을 모두 해제한다. 
      session_unset();
      // main페이지로 바로 가도 이제 세션의 값들이 없어서 로그인 페이지로 안내할것이다.
    ?>
    <script>
      // 세션에 값들이 모두 삭제되고 해당 경고창을 띄운다.
      alert("로그아웃이다");
      // login 페이지로 보낸다.
      location.href="./3_login.php";
    </script>