해당 게시글은 빡공팟 4기(with TeamH4C)와 관련되어 있습니다
> 2차 시도
어제에 이어 게시물을 띄우기 위해 DB도 만들고 출력도 했다.

중간 코드 점검으로 아직 DB 구상을 제대로 끝마치지 못했다.
 그래서 일단 기본적으로 필요한 컬럼만 생성했다.
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="/css/mstyle.css">
        <title>P4CSS</title>
    </head>
    <body>
        <div id ="header_container">
            <div id="left-header">
                <a href="main.php" style="font-size: 150px">Story Shared</a>
            </div>
            <div id="right-header"><p ><br/>
                <?php   session_start();  if(isset($_SESSION['username']))  echo $_SESSION['username'];  else echo"<script>location.replace('/login.html')</script>"?> 님
                </p>
                <a href="logout.php" >LOGOUT</a>
            </div>
        </div>
<?php
    include('db_conn.php');
    $conn = db_connect();
    $sql ="SELECT * FROM story ORDER BY idx desc";
    $result = mysqli_query($conn, $sql);
    $total = mysqli_num_rows($result);
?>
        <div id="body_container">
            <div id="left-body">
                <input class="load_btn" type="button" onclick="alert(1);"><br/>
                <input class="load_btn" type="button" onclick="alert(1);">
            </div>
            <div id="right-body">
                <p>
                    <form action="search.php" method="post">
                        <select style="width: 70px;" name="track">
                            <option value="title">제목</option>
                            <option value="contents">내용</option>
                            <option value="writer">작성자</option>
                        </select>
                        <input type="text" name="value" placeholder="Search">
                        <input class="btn_search" type="submit" value="검색">
                    </form>
                </p>
                <p style="text-align:right">
                    <a href="write.php" style="font-size: 40px;">글쓰기 </a>
                </p>
                <table >
                    <thead>
                        <th width = "100">번호</th>
                        <th width = "200">날짜</th>
                        <th width = "800">제목</th>
                        <th width = "200">작성자</th>
                        <th width = "100">조회수</th>
                    </thead>
                    <tbody>
                        <?php
                            while($row = $result->fetch_array())
                            {
                              $title=$row['title'];
                              if(strlen($title)>15)
                              {
                                $title=substr($row['title'],0,15)."...";
                              }
                        ?>
                        <tr class='<?php echo $row['track']; ?>'>
                            <td width="100"><?php echo $row['idx']; ?></td>
                            <td width="200"><?php echo $row['createtime']?></td>
                            <td width="800"><a href="read.php?idx=<?php echo $row["idx"];?>"><?php echo $title;?></a></td>
                            <td width="200"><?php echo $row['writer']?></td>
                            <td width="100"><?php echo $row['hit']; ?></td>
                        </tr>
                        <?php } ?>
                    </tbody>
                </table>
            </div>
        </div>
    </body>
</html>
 
 
> 3차 시도
게시물을 php로 읽어보았다.

하염없이 하찮아 보이기는 하지만 되긴 했다..;;
 무한 f5 방지와 추천 기능은 대문 고치고 돌아와야겠다.
 
 
> 대문 단장하기
어느 정도 기본적인 틀은 갖추어진 것 같아서 조금 더 세세한 부분을 터치하려고 한다.
 메인 페이지로 넘어가기 전 단계인 로그인과 회원가입에 추가할 부분이다.
- 비밀번호 암호화하여 DB에 저장하기
- 이메일 인증하기
- 비밀번호 찾기 기능 추가하기(-> 이메일 인증되면 비밀번호 바로 수정가능)
모든게 날라갈뻔 했는데 살려서 다행이다 ㅠㅠㅠㅠㅠㅠ
https://github.com/Jminis/P4C <- 여기에 백업하면서 해야겠다…
비밀번호 암호화하기
$sql = "INSERT INTO userinfo (useremail,userid,userpw,username,usertrack,createtime)
VALUES('$uemail','$uid',sha2('$upw',256),'$uname','$utrack',now())";
검색해보니 password()를 사용하라는 글도 있었는데 DB에서 제공하는 함수를 사용하기로 했다. SHA2 함수에서 256bit도 지원하므로 단방향으로 암호화 한 다음에 로그인 시에 입력받은 비밀번호도 암호화 하여 저장된 비밀번호와 대조하는 식으로 인증한다.
이메일 인증하기
대부분 node.js 로 구현하라고 정보가 나와있어서 자바스크립트와 다른 게 없겠거니 했는데 정보를 찾아보면 찾아볼수록 두 언어가 다름을 알아채고 php로 구현하기로 했다.
 근데 다른 사람은 다 되는 php의 mail()이 나는 도저히 안되서 삽질 중이다.
점심에 시작했는데 저녁을 먹고도 3시간이 훌쩍 지났다.
 php의 mail()을 이용하여 이메일을 발송할 수 있고,
 난수를 생성하여 db에 올려둔 뒤 검사하는 방법도 생각해냈다.
 그런데 이상한 난관에서 삽질을 하고 있다.
- 일단 메일 발송이 너무 느리다. 30초 정도 걸린다.
- 인증 이후에 입력 값을 바꾸면 어떡하지?
- 인증 시간에 제한은 어떻게 만들 것인지?
- 난수를 때려 맞추면 어떡하지?
해결할 때까지 잠 안 자야겠다.
php 시간차이 구하는 법 찾다가 여기에 잠들다…