생활코딩

Coding Everybody

코스 전체목록

닫기

PHP에서 FORM과 POST

수업소개

서버로 데이터를 전송할 때 사용하는 HTML의 기능인 form을 살펴봅니다. 또, URL을 통하지 않고 은밀하게 데이터를 전송하는 방법인 POST 방식도 알아보겠습니다. 

 

 

form.html

<!doctype html>
<html>
  <body>
    <form action="form.php" method="post">
      <p><input type="text" name="title" placeholder="Title"></p>
      <p><textarea name="description"></textarea></p>
      <p><input type="submit"></p>
    </form>
  </body>
</html>

form.php

<?php
file_put_contents('data/'.$_POST['title'], $_POST['description']);
?>

 

댓글

댓글 본문
  1. 완료
  2. クレヨンしんちゃん
    ㅇㄹ
  3. 눈누난나
    완료
  4. 박준영
    200627 완료 다시보기
  5. hpyseun
    05/26/2020 감사합니다
  6. 이서연
    강의 재밌게 잘 보고있어요.
    완료
  7. 아자요
    HTML, Java Script 완강 후 새로운 도전시작

    20.05.10일 / 완료
  8. 아자요
    감사해요ㅎㅎ 덕분에 넘어갔어요
    대화보기
    • Notice: Undefined index: description in C:\Bitnami\wampstack-7.3.13-0\apache2\htdocs\form.php on line 2
      이문제 뜨시는 분들 form.html에서 저장안하시고 뒤로가기 눌러서 오류가 나온겁니다. 127.0.0.1/form.html을 post로 수정하신후 저장하시고 다시 html을 검색해보세요, 그럼 될겁니다.
    • ArcTempest
      완료!
    • OneJae EE
      20.04.11 토 / 37세 비전공자 / 완료
    • 스티븐잡숴
      완료
    • samachun99
      Notice: Undefined index: description in C:\Bitnami\wampstack-7.3.13-0\apache2\htdocs\form.php on line 2
      어디가 문제인지 알수가 없네요 아무리 해도 똑같은 문장이 나오네요
    • 정말 감사합니다.!!
    • softmania
      directory가 lib인데 127.0.0.1에 바로 나타나는 것은 어떻게 조정하는건가요?
      저는 file이 없다고 나오네요 너무 초보적이라 생각마시고 답을 주세요 아무리 책이나 영상을 보아도 방법이 없네요
    • 조승현
      <!doctype html>
      <html>
      <body>
      <form action="form.php">
      <p><input type="text" name="title" placeholder="Title"></p>
      <p><textarea name="description"></textarea></p>
      <p><input type="submit"></p>
      </form>
      </body>
      </html>

      Error : method를 작성하지 않고 전송눌렀는데 url이 http://127.0.0.1......로 바뀌고 title=PHP부분이 나타나지 않아요!! form.php파일에 var_dump($_POST['title'])하면 PHP라고는 뜹니다.

      질문 : url에 나타나게 하려면 어떻게 해야할까요
    • 햄쮸맨
      이번 시간에는 form태그에 대해서 배웠어요. form태그는 서버의 지정된 경로로 데이터를 전송하는 태그 같네용! 그리고 그 아래에 input type="text"(내용입력 부분) input type="submit"(전송확인 버튼) 같은 추가태그로 문서 작성 폼을 만들어 데이터를 입력 시키고 form을 통해서 전송하나봐요! 그런데 form태그는 보내는 데이터를 공개적으로 보내는 get방식이 있고 비밀리에 보내는 post방식이 있나봅니다. get방식은 url을 변화시킬 수 있으므로 북마크와 연계해서 각각 다른 페이지를 띄워줄때 유용하구요.post방식은 url변형 없이 비공개로 값을 전송해서 게시판에 글 같은 것을 작성할때 유용한 것 같습니다.
    • 몽글몽글솜사탕
      감사합니다
    • tinycaterpillar
      check your 'data' dirctory's write authority to other.

      use follow command in the shell
      chmod 777 data
      in the directory which contain 'data' directory
      대화보기
      • cary2010
        일요일 죄송합니다. 말씀하신대로 코드를 작성 했는데요 data 폴더에 파일이 생성이 안되네요 ㅠㅠ

        밑에 댓글 처럼 해도 안되네요 ㅠㅠ 혹시 이런 문제 겪어서 해결 하신분 댓글 좀 부탁드립니다
      • 허공
        190507 감사합니다.
      • 연습생
        form.php 코드안을

        <?php
        file_put_contents('../htdocs/data/'.$_POST['title'], $_POST['description']);
        ?>

        이렇게 '../htdocs/data/' 썼더니 됐어요. 절대경로를 써보라고 하더라구요.
        대화보기
        • Gihoon Pomme Ryu
          완료. 고맙습니다.
        • Gihoon Pomme Ryu
          바꾼거는 따로 없는데 하루 뒤에 정상 작동 하네요.
          대화보기
          • Gihoon Pomme Ryu
            form.html
            <!DOCTYPE html>
            <html>
            <body>
            <form action="form.php" method="post">
            <p>
            <input type="text" name="title" placeholder="Title">
            </p>
            <p>
            <textarea name="description" rows="8" cols="80"></textarea>
            </p>
            <input type="submit">
            </form>
            </body>
            </html>



            소스입니다. 정상 작동이 안되네요 ㅠ
            1. method를 post로 했는데도 url이
            http://127.0.0.1......+is
            이렇게 나옵니다.
            정상 저장 됐는데도 그러네요..
            2. php파일에서 POST로 변환시 에러가 발생합니다.

            form.php
            <?php
            file_put_contents('data/'.$_POST['title'], $_POST['description']);
            ?>
          • 로버트한
            감사합니다.^^
          • 주소를 입력하실때 영어로 된 localhost/form.html 이 아니라,
            숫자로 된 127.0.0.1/form.html 로 들어가서 제출버튼을 클릭하십시오.
            대화보기
            • powhy123
              이고잉님 강의는 마치 '스토리'가 있는 것처럼 느껴져서 재밌습니다. 감사합니다
            • 쓸기몬
              안녕하세요. 항상 좋은 강의 제공 해 주셔서 감사합니다.
              html페이지에서 title 과 description을 입력하고 submit 하면
              file_put_contents 함수를 통해 새로운 file이 생성되지 않는데 뭐가 문제인 걸까요??
            • kula
              Notice: Undefined index: title in C:\Bitnami\wampstack-7.1.12-0\apache2\htdocs\lib\form.php on line 2
              title :


              Notice: Undefined index: description in C:\Bitnami\wampstack-7.1.12-0\apache2\htdocs\lib\form.php on line 3
              descrption :

              html뿐만 아니라 php에도 title랑, descrption를 어떤 함수다 라고 선언해줘야 하나요?
            • sealwind
              사실 구글 검색했을때도 sudo chmod 777 data 어렇게 적용해보라는 답변이 있었는데, 해당명령어를 어떻게 적용하는지 몰라서 헤메고 있었습니다 ㅡ ㅡ;;

              그냥 해당폴더의 Permissions를 775 에서 777로 권한을 변경하니 되네요^^

              근데 sudo chmod 777 data은 어떻게 적용시키는건가요?
              대화보기
              • egoing
                위험 하지만 학습용 환경에서하면 sudo chmod 777 data 명령을 써보세요~
                대화보기
                • sealwind
                  Codeanywhere에서 실행하면 Warning: file_put_contents(data/fsdf): failed to open stream: Permission denied in 라는 에러가 뜨는데, var_dump();로 확인해보면 정확하게 정보가 전달은 됩니다.

                  혹시 Codeanywhere 같은 클라우드 개발환경에서 동작하게 하는 방법은 없을까요?
                • namimoon
                  아~ 이고잉님 말씀이 맞네요. 그 부분 해결하고 보니 실제 권한에러가 발생했습니다. 고맙습니다.~~
                  Warning: file_put_contents(./tile_test): failed to open stream: Permission denied in 해당경로~
                  대화보기
                  • egoing
                    저것은 파일이 없다는 말이에요~
                    index.php와 data 디렉토리가 같은 경로에 있는지 확인해보셔요~
                    대화보기
                    • namimoon
                      centos 에서 동일하게 했더니 아래와 같은 에러가 발생합네요.

                      Warning: file_put_contents(data/sdfsdf): failed to open stream: No such file or directory in 블라블라~

                      egoing님이 시키는대로 비트나미 설치하고 했으면 에러가 안 났을텐데..

                      제 문제는 권한문제 같네요...그냥 푸념인데..개인적으로 이럴때마다 OS를 먼저 공부해야 하는 생각이 계속 드네요 그냥 하소연 이었습니다.
                    • kelly123
                      음 아까부터 제출을 누르면
                      <?php
                      file_put_contents('data/'.$_POST['title'], $_POST['description']);
                      ?>
                      이렇게 코드가 그대로 나오고 실행은 되지 않네요..
                      대화보기
                      • egoing
                        아이고 지금 보니까 제가 예제를 잘 못 올렸네요.

                        method="get"을 method="post"로 하셔야 합니다!

                        한번 해보시고 문제 있으면 말씀해주세요~
                      • kelly123
                        이런 식으로 계속 똑같은 오류가 뜨는 데 검색해서 비슷한 오류들에 대한 대처법을 실행해봐도 변화가 없네요..ㅠㅠ

                        [Mon Feb 05 16:27:55.504565 2018] [mpm_winnt:notice] [pid 3352:tid 536] AH00418: Parent: Created child process 3628
                        [Mon Feb 05 16:27:56.115028 2018] [ssl:warn] [pid 3628:tid 456] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
                        [Mon Feb 05 16:27:56.322580 2018] [ssl:warn] [pid 3628:tid 456] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
                        [Mon Feb 05 16:27:56.344138 2018] [mpm_winnt:notice] [pid 3628:tid 456] AH00354: Child: Starting 64 worker threads.
                        대화보기
                        • egoing
                          우선 오류가 있는지 확인을 해보시면 좋을 것 같아요. 아래 보시면 환경설정 부분을 보면 오류를 출력하는 방법이 있습니다.
                          https://opentutorials.org......319

                          또 form을 전송할 때는 데이터가 URL로 전달하지 않기 때문에 코드를 수정하셨다면 form.html 쪽에서 페이지를 확실하게 리로드 한 후에 다시 시도해야 합니다. 이런 부분이 잘 되었는지 확인해보셔요~

                          또 php 쪽에서 var_dump($_POST);를 찍어보시면 값이 제대로 도착했는지 확인해 볼 수 있습니다.

                          값의 전달이 눈에 보이지 않기 때문에 좀 어렵게 느껴지실꺼에요. 화이팅 :)
                          대화보기
                          • kelly123
                            코드를 복사해서 실행해봐도 실행이 안되네요. 브라우저를 바꿔도 소용이 없고 다른 PHP파일은 잘 작동하는 데 왜 form.php 파일만 작동을 안할까요..
                          버전 관리
                          egoing
                          현재 버전
                          선택 버전
                          graphittie 자세히 보기