WEB2 - PHP

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. 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를 어떤 함수다 라고 선언해줘야 하나요?
  2. 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 자세히 보기