본문 바로가기
FULL-STACK

Http Request : (웹서비스:HTTP통신) /(HTML,PHP)*

by EUN-JI 2023. 8. 31.

index.html

<!DOCTYPE html>
<html>
    <head>
        <title>HTTP REQUEST</title>
        <meta charset="utf-8">
    </head>
    <body>
       
        <h2>This is Http Request Test Page</h2>

        <fieldset>
            <legend>GET METHOD TEST</legend>

            <!-- HTTP요청을 수행하는 요소(element) //form으로 전송됨-->
            <form action="./aaa.php" method="GET">
                <!-- name 식별자 -->
                <P>
                    <label for="">title:</label>
                    <input type="text" name="title">
                </P>
   
                <P>
                    <label for="">message:</label>
                    <input type="text" name="msg">
                </P>
                <p>
                    <input type="submit">
                    <!-- 제출버튼 -->
                </p>
            </form>

        </fieldset>


        <fieldset>
            <legend>POST METHOD TEST</legend>


            <form action="./bbb.php" method="POST" enctype="application/x-www-form-urlencoded">
<!-- 자동으로 인코딩방식은 어플로 되어있음. -->
                <P>
                    <label for="">아이디 : </label>
                    <input type="text" name="id">
                </P>

                <p>
                    <label for="">비밀번호 : </label>
                    <input type="password" name="pw">
                </p>

                <p>
                    <input type="submit" value="로그인">
                    <input type="reset">
                </p>

            </form>
        </fieldset>

        <fieldset>
            <legend>Image File Upload</legend>
<!-- 파일은 무조건 multipart -->
            <form action="./ccc.php" method="POST" enctype="multipart/form-data">
                <p>
                    <label for="">이미지 파일 : </label>
                    <input type="file" name="img">
                </p>

                <p>
                    <input type="submit" value="업로드">
                    <input type="reset" value="취소">
                </p>

            </form>
        </fieldset>

        <fieldset>
            <legend>POST data with File</legend>
            <form action="./ddd.php" method="POST" enctype="multipart/form-data">
                <P>
                    <label for="">제목 : </label>
                    <input type="text" name="title">
                </P>
                <P>
                    <label for="">내용 : </label>
                    <textarea name="msg" cols="40" rows="5"></textarea>
                </P>
                <p>
                    <label for="">이미지 파일 : </label>
                    <input type="file" name="img">
                </p>

                <p>
                    <input type="submit">
                    <input type="reset">
                </p>
            </form>
        </fieldset>

        <fieldset>
            <legend>Load Data</legend>
            <form action="./eee.php" method="GET">
                <input type="submit" value="게시글 보기">
            </form>
        </fieldset>


    </body>
</html>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

aaa.php

<?php
    //php는 httpreqest
    //한글깨짐 방지 및 응답하는 결과 데이터가 html형식이라는 설정
    header('Content-Type:text/html; charset=utf-8');

    //사용자가 GET방식으로 보낸 요청 파라미터(title,msg)를 받기
    //사용자가 GET방식으로 보낸 값들은 $_GET 이라는 배열변수에 저장되어 있음.
    $title= $_GET['title'];
    $message= $_GET['msg'];

    //사용자에게 응답하기
    echo "제목 : " . $title . "<br>";   //php언어에서 . 연산자는 문자열 결합연산자(+ )
    echo "메세지 : " . $message;

?>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

bbb.php

<?php

    header('Content-Type:text/html; charset=utf-8');

    //사용자가 POST방식으로 보낸 값들은 $_POST 라는 배열변수에 저장되어 있음.
    $id= $_POST['id'];
    $password= $_POST['pw'];

    //사용자[wed browser]에게 출력(응답:response)
    echo "ID : " . $id . "<br>";
    echo "PASSWORD : " . $password;

?>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

ccc.php

<?php
    header('Content-Type:text/html; charset=utf-8');

    //사용자가 File을 보내면 실제 파일데이터들은 임시저장소(tmp)에 임시로 저장되며
    //이 php문서에는 File의 정보만(파일은 안옴)전달됨. 그 정보를 $_FILES 라는 배열에 저장됨.
    $file= $_FILES['img'];

    //$file은 배열변수임. 파일1개의 여러정보를 가지고 있음.

    // 정해져있는 이름 name ,size,type,error,tmp_name

    $srcName= $file['name'];  //원본파일명
    $size= $file['size'];  //원본사이즈
    $type= $file['type'];  //원본타입
    $error= $file['error'];  //에러정보
    $tmpName= $file['tmp_name'];  //실제 파일데이터가 저장된 임시저장소의 파일주소(위치)

    //제대로 왔는지 확인해보기 위해 위 파일정보들을 출력(응답)해보기 //안해도 됨. 확인하려고 함.
    echo $srcName . "<br>";
    echo $size . "<br>";
    echo $type . "<br>";
    echo $error . "<br>";
    echo $tmpName . "<br>";


    //전송된 파일은 임시저장소에 있기에 곧 사라짐. 그래서 서버에 영구히
    //저장하려면 이동시켜야 함.  //파일질라에서 files를 만들고 쓰기 !!
    $dstName= "./files/" . date('YmdHis') . $srcName;
    $result= move_uploaded_file($tmpName,$dstName);
    if($result){
        echo "upload success";
    }else{
        echo "upload fail";
    }
?>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

ddd.php

<?php
header('Content-Type:text/html; charset=utf-8');

    $title= $_POST['title'];
    $message= $_POST['msg'];

    $file= $_FILES['img'];
    $srcName= $file['name'];  //원본파일명
    $tmpName= $file['tmp_name']; //임시저장소 파일주소


    echo $title . "<br>";
    echo $message . "<br>";
    echo $srcName . "<br>";
    echo $tmpName . "<br>";


    $dstName= "./files/" . date('YmdHis') . $srcName;
    $moveResult= move_uploaded_file($tmpName,$dstName);
    if($moveResult) echo "file upload success <br>";
    else echo "file upload fail <br>";

    //작성일 변수
    $now= date("Y-m-d H:i:s");

    //전달 받은 데이터들을 데이터베이스에 저장하기

    //1.MySQL DBMS에 접속하기
    $db= mysqli_connect('localhost','******8','q1w2e3r4!','******8');   //DB서버주소,DB접속아이디,DB접속비번,DB명

    //2.한글깨짐 방지 요청하는 쿼리문 실행  /set names utf8 정해진것
    mysqli_query($db, "set names utf8");

    //3.원하는 쿼리문을 작성하여 실행
    //전송된 데이터들 ($title,$message,$dstName)을 'board'라는 테이블 (표)에 삽입(insert)하는 명령어[SQL]
    $sql="INSERT INTO board(title, msg, file, date) VALUES('$title','$message','$dstName','$now')";
    $result= mysqli_query($db, $sql);
    if($result) echo "insert success<br>";
    else echo "insert fail<br>";


    //4.DB와의 연결 종료
    mysqli_close($db);

?>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

eee.php

<?php
    header('Content-Type:text/html; charset=utf-8');

    //1. MySQL DB에 접속
    $db=mysqli_connect('localhost','******8','q1w2e3r4!','******8');

    //2. 한글깨짐 방지 쿼리문 실행
    mysqli_query($db,"set names utf8");

    //3.원하는 쿼리문 작성 및 실행  (*모든칸) WHERE 구문이 없어서 모든줄(record,row)의 데이터를 가져옴
    $sql="SELECT * FROM board";
    $result= mysqli_query($db,$sql);
    //$result는 SELECT쿼리문에 의한 결과표 객체임
    $rowCount= mysqli_num_rows($result);  //총 레코드(줄)의 수
    for($i=0; $i<$rowCount; $i++){
        $row= mysqli_fetch_array($result, MYSQLI_ASSOC); //한줄을 배열로 내놔. 단,연관배열(인덱스번호 대신에 칸이룸으로 구별하는 법)로 주세요. 설정

        $no= $row['no'];
        $title= $row['title'];
        $message= $row['msg'];
        $file= $row['file'];
        $now= $row['date'];

        //DB의 줄바꿈 문자는 \n 이고 웹브라우저는 <br>임.
        $message= nl2br($message);

        echo "<h4>$no</h4>";
        echo "<h3>$title</h3>";
        echo "<p>$message</p>";
        if($file!=null) echo "<img src='$file' width='50%'>";
        echo "<p>$now</p>";
        echo "==========================================<br><br>";
    }

    //4.DB와 연결종료
    mysqli_close($db);

?>

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

* POST방식결과물 : 빠름 / 보안안좋음

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

* GET방식결과물:  조금 느림 / 보안좋음

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ**웹브라우저에 보여지는 것 결과물

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ**내용 입력 후 게시글 보기 하면 나오는 결과물