WEB2 - PHP

PHP에서 글생성 기능 구현하기

수업소개

PHP를 이용해서 불특정 다수가 웹을 통해서 글을 제출하는 방법을 살펴보겠습니다. 

 

 

변경사항

index.php


<?php
function print_title(){
  if(isset($_GET['id'])){
    echo $_GET['id'];
  } else {
    echo "Welcome";
  }
}
function print_description(){
  if(isset($_GET['id'])){
    echo file_get_contents("data/".$_GET['id']);
  } else {
    echo "Hello, PHP";
  }
}
function print_list(){
  $list = scandir('./data');
  $i = 0;
  while($i < count($list)){
    if($list[$i] != '.') {
      if($list[$i] != '..') {
        echo "<li><a href=\"index.php?id=$list[$i]\">$list[$i]</a></li>\n";
      }
    }
    $i = $i + 1;
  }
}
?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>
      <?php
      print_title();
      ?>
    </title>
  </head>
  <body>
    <h1><a href="index.php">WEB</a></h1>
    <ol>
      <?php
      print_list();
      ?>
    </ol>
    <a href="create.php">create</a>
    <h2>
      <?php
      print_title();
      ?>
    </h2>
    <?php
    print_description();
     ?>
  </body>
</html>

create.php

<?php
function print_title(){
  if(isset($_GET['id'])){
    echo $_GET['id'];
  } else {
    echo "Welcome";
  }
}
function print_description(){
  if(isset($_GET['id'])){
    echo file_get_contents("data/".$_GET['id']);
  } else {
    echo "Hello, PHP";
  }
}
function print_list(){
  $list = scandir('./data');
  $i = 0;
  while($i < count($list)){
    if($list[$i] != '.') {
      if($list[$i] != '..') {
        echo "<li><a href=\"index.php?id=$list[$i]\">$list[$i]</a></li>\n";
      }
    }
    $i = $i + 1;
  }
}
?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>
      <?php
      print_title();
      ?>
    </title>
  </head>
  <body>
    <h1><a href="index.php">WEB</a></h1>
    <ol>
      <?php
      print_list();
      ?>
    </ol>
    <a href="create.php">create</a>
    <form action="create_process.php" method="post">
      <p>
        <input type="text" name="title" placeholder="Title">
      </p>
      <p>
        <textarea name="description" placeholder="Description"></textarea>
      </p>
      <p>
        <input type="submit">
      </p>
    </form>
  </body>
</html>

create_process.php

<?php
file_put_contents('data/'.$_POST['title'], $_POST['description']);
header('Location: /index.php?id='.$_POST['title']);
?>

 

댓글

댓글 본문
작성자
비밀번호
  1. 제갈량
    사용자가 웹 브라우저에서 서버에게 작업을 요청하면
    서버는 그것을 받아 처리하여서 사용자한테 제공하는 거였군요.
    단순해 보이지만, 여기에는 눈에 보이지 않는 뭔가가 존재하는데
    이건 우리가 알기에는 어렵다는 생각이 듭니다.
    그나마 웹 브라우저와 서버가 통신을 어떻게 하는지 조금은 알게되서 좋습니다.
    감사합니다. ^^
  2. 마샤
    해결했어요

    파일명이 'PHP 6 ', 스페이스 한 칸이 뒤에 들어가 있어서 그랬어요 고맙습니다
    대화보기
    • egoing
      파일을 찾을 수 없다는 말이에요. 경로 잘 찾아보서요~
      대화보기
      • Dong-In Andy Kang
        학생들의 심리를 어떻게 이렇게 잘 파악하시는지... 작지만 강의를 계속해 나갈 수 있는 윤활유와도 같은 이고잉님의 격려!!
      • PHP 6, PHP 7처럼 한 칸 띄어져 있는 이름을 클릭하면 경고창이 뜨면서 본문은 뜨지 않네요

        Warning: file_get_contents(data/PHP 7): failed to open stream: No such file or directory in /Applications/mampstack-7.1.13-0/apache2/htdocs/index.php on line 11

        왜 그런지 아는 분 계신가요?
      • egoing
        그런 파일이 없다는 말이네요~ 파일의 경로를 잘 확인해보셔요
        대화보기
        • Yi Hong-cheon
          Warning: file_get_contents(data/egoing): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/index.php on line 11

          egoing 님 코드를 그대로 붙여도 이럽니다. file_get_contents() 를 못하게 설정 되어있나... 궁금합니다
          참고로 저장 할때마다 Atom Helper 가 비밀번호를 요구하네요.
        • 스파이크
          int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

          http://php.net......php

          콤마 앞은 파일명, 뒤는 파일 내용 맞습니다~
          대화보기
          • Mingi Son
            강의 감사합니다
          • 코딩잘하고싶어요 ㅎ
            이 강의에서는 $_POST['title'] => form태그의 전송방식(Method)가 POST이고 name값이 title로 설정된 input필드가 '제목'을 입력하는 창으로 설정이 되었고 마찬가지로 $_POST['description']은 파일의 내용을 입력하는 textarea필드의 name값으로 description이 설정이 되었습니다. 따라서 반드시 $_POST['title']이 파일의 제목이 되고 $_POST['description']이 반드시 파일의 내용이 되는 것은 아닙니다.
            대화보기
            • godpapa
              'data/'.$_POST['title'], $_POST['description']에서 앞에 $_POST['title']은 파일의 제목이 되고 컴마 뒤에 있는 것은 무조건 그 파일의 내용이 되나요?
            버전 관리
            egoing
            현재 버전
            선택 버전
            graphittie 자세히 보기