웹 애플리케이션 만들기

PHP 실습

PHP 실습 1

PHP 실습2

1.php

<?php
echo $_GET['name'].",".$_GET['id'];
?>

2.php

<html>
  <head>
    <title></title>
  </head>
  <body>
    <?php
      echo file_get_contents($_GET['id'].".txt");
    ?>
  </body>
</html>

PHP 실습3

PHP 실습 4

index.php

<!DOCTYPE html>
<html>
<head>
     <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="http://localhost/style.css">
</head>
<body id="target">
	<header>
    <img src="https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/course/94.png" alt="생활코딩">
		<h1><a href="http://localhost/index.php">JavaScript</a></h1>
  </header>
	<nav>
		<ol>
    <?php
      echo file_get_contents("list.txt");
    ?>
		</ ol>
	</nav>
  <div id="control">
    <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
    <input type="button" value="black" onclick="document.getElementById('target').className='black'" />
  </div>
  <article>
  <?php
    if( empty($_GET['id']) == false ) {
      echo file_get_contents($_GET['id'].".txt");
    }
  ?>
  </article>
</body>
</html>

list.txt

<li><a href="http://localhost/index.php?id=1">JavaScript란?</a></li>
<li><a href="http://localhost/index.php?id=2">변수와 상수</a></li>
<li><a href="http://localhost/index.php?id=3">연산자</a></li>

1.txt

<h2>JavaScript란?</h2>
JavaScript는 html을 제어합니다.

2.txt

<h2>변수와 상수</h2>
변수는 바뀌는 것 상수는 바뀌지 않은 것

3.txt

<h2>연산자</h2>
연산자는 계산하는 것입니다

소스코드

github

댓글

댓글 본문
작성자
비밀번호
  1. 나홀로문도리
    감사합니다~
    '중복의 제거'라는 개념이 이렇게 중요한 건지 몰랐네요. ^^
  2. 구찬우
    신세계네요..
    자바스크립트에선 이런 구조가 불가능 한거죠?? (파일을 분리하여 연동하는)
  3. 이병정
    echo file_get_contents("1.txt");
    1.txt 문서를 호출하는 것을 1 대신에 변수로 처리하여
    echo file_get_contents($_GET['id'].".txt"); 처리한 것입니다.
    id는
    http://localhost......d=1 호출하기 위해 정의한 것이고요.
    앞선 강의에 따르면 id 대신 name 으로도 사용할 수 있다고 하셨어요.^^
    대화보기
    • 완료
    • bnbn888@naver.com
      자바스크립트는 크롬에 잘 표현되는데 php를 크롬에 적용하면 왜 아무런 표현이 나타나지가않죠? 하얀 화면만 나오네요....
    • skysun2002@naver.com
      <nav> 태그안에서 불러오는 list.txt 보시면 리스트마다
      http://localhost......d=1 이런식으로 id를 지정해주었습니다.
      그래서 메뉴를 클릭하면 해당하는 id가 url에 들어가는거죠
    • 안정환
      if( empty($_GET['id']) == false ) {
      echo file_get_contents($_GET['id'].".txt");
      }

      이 부분에서 id 를 어디서 가져오는거죠???????

      답답하네요.. 주소에 있는 id 인건 알겠는데

      어떤 방식으로 if 문에 id가 주소에있는 id 로 지정되는지 모르겠네요.
    • querencia
      <- 16.1101 18:12 오늘진도 끝
    • 활화산
      똑 같이 해도 웹이 구현 안하는 경우가 생기네요. 제가 뭘 잘 못했을 수도 있는데 도무지못 찾겠어요. 복사해서 끌어다 붙여도 안되니... 일단 전체의 흐름을 느끼고 다시 거슬러 올라가 볼려구 해요
    • Kijin Roh
      아 오늘도 역시 포텐터지는 한 마디.. 중복을 제거하라.. 좋은 강의 감사합니다.
    • 양수
      질문있습니다!

      article 영역에 1.txt, 2.txt .... 파일 출력하는 조건문에서요.

      <?php
      if( empty($_GET['id']) == false ) {
      echo file_get_contents($_GET['id'].".txt");
      }
      ?>

      위의 조건문을 사용하셨는데요.

      말씀하신 것처럼,

      `empty()` - 함수는 변수의 값이 0 또는 null 값이라면 true, 존재한다면 false를 return한다.

      라고 알고 있는데요.

      굳이

      if( empty($_GET['id']) == false ) {
      // 실행코드 ... ...
      }

      를 통하여 비교연산자를 사용하신 이유가 별도로 있는 것인가요?

      id 값의 유무에 따른 코드를 그냥, 아래와 같이 작성하면

      if(empty($_GET['id'])) {
      echo "존재하지~~~ 않습니다.";
      } else {
      echo file_get_contents($_GET['id'].".txt");
      }

      '==' 비교 연산자를 사용하지 않고도 원하는 결과를 출력할 수 있는데요.



      비교 연산자를 사용하신 이유가 별도로.,

      empty 함수의 'true', 'false' 값에 대한 설명을 위한 비교문인건가요?
    • 양수
      '프로그램의 역사는 중복을 제거한다'라는 말이 멋지기도 하지만,

      무섭기도 하네요~

      !_!~ 일전에 동영상으로 보았던 '하이패스' 이야기가 떠 올라요.ㅋㅋ

      불타는 금요일 입니다!!~ Burning Coding~!!
    • 이성진
      수강 완료!
      좋은 강의 항상 감사 드립니다~
    • 이수재
      수강완료 10/10
    • DECIMO
      2016.09.28 감사합니다.
    • 2016/09/18
    • 그런데 그렇다고 하기엔 4분 49초에 리로드 하고 페이지가 변경이 되었는데도 여전히 JavaScript란? 그게 보이지 않으니 아무래도 화면에 안나온 채로 밑에 표시되었다고 보는게 맞는거 아닌가 싶은데요...
      그리고 잘 보시면 오른쪽에 있는 그 화면 올리고 내리는 바 길이가 갑자기 바뀌는 게 보이는데 아무래도 아래 쪽에 JavaScript란? 을 포함한 내용이 추가되어서 바가 작아지는게 아닌가 싶네요..

      왠지 내리면 나올 듯 해요.
      대화보기
      • "" (따옴표) 안에는 문자열로 인식을 해서 그럴거 같은데요
        우리가 사용하는 get...어쩌고는 php에 정의된 일종의 내장함수인데 떠옴표 안에 넣으면 그냥 "get..." 어쩌고 하는 문자열로 인식되는거 같아요

        한달전 올리신 글인데....
        게다가 저도 개초보인데.....
        주제넘게 댓글을 달아 봤습니다
        대화보기
        • 테리유
          그렇게 중요한 것은 아니지만, 복습할때도 보여서 남기게 되는데요, PHP실습 3번째 강의 중에 3분 40초때에 보여주신 화면은 index.php를 저장한 상태로 새로고침을 한 것이 아닌 것 같네요, 왜냐하면 index.php파일을 저장하고 새로고침을 하셨더라면 오른쪽 밑 부분에

          JavaScript란?

          JavaScript는 html을 제어합니다.

          이라는 글이 나와야 하니 말이죠..
        • GunLoc
          네, id값을 못가져오면 오류가 생길수도 있다고 하셔서,
          코드 부분에
          if(empty($_GET['id']) == false){
          echo file_get_contents($_GET['id'].".txt");
          }
          만약, id값을 가져올경우만 1.txt, 2.txt, 3.txt의 내용을 가져오게끔 if(조건)문을 만들어서
          오류를 없애고자 넣으셨다고 설명 해주셨어요.
          대화보기
          • 정말 좋은 강의 너무 감사합니다.
            맥으로 배우고 있는 중인데,
            코드도 그대로 따라서 적었는데 크롬에서 링크를 열면
            자꾸 주소앞에 추가적으로 http://localhost:8080/이 뜨고
            추가적 링크가 ""안에 떠서 주소오류로 다른 txt파일이 뜨질 않네요.

            http://localhost......ot;

            또한 txt파일안에 제목만 <h2>로 묶어주고 추가적으로 css에 font-size를 쓰지 않았는데도
            모든 글자가 다 h2크기로 뜹니다..

            무엇이 문제인건지 궁금합니다.
            도와주세요!
          • 김종엽
            2016.08.09 완료!
          • vnswo1@gmail.com
            localhost/index.php
            즉, 홈페이지의 id값은 없는데 뭔가요?
            $_GET['id']값이 없기 때문에
            echo file_get_contents($_GET['id'].".txt"); 에서 아무값도 가지고 오지 못하는 건가요?
          • index.php 중에
            <?php
            echo file_get_contents($_GET['id'].".txt");
            ?>

            여기서 질문이 있습니다. 저는 1.txt를 DOCUMENT ROOT에 두지 않고,
            php라는 폴더 안에 넣어 놨는데요. 이것때문에 warning이 뜨는지 궁금하네요.

            DOCUMENT ROOT에 있지 않은 txt파일이더라도
            echo file_get_contents($_GET['id'].".txt"); 을 해도 아무런 상관이 없나요?
          • Wookiiis
            잘 보았습니다. :)
          • 차누
            수강완료
          • 이현아
            요번강의는 더 재미있었습니다..
            놀라워요.. php
          • 수강 완료
          • ㅇㅇ
            Notice: Undefined index: id in C:\Bitnami\wampstack-5.6.22-0\apache2\htdocs\index.php on line 25

            Warning: file_get_contents(.txt): failed to open stream: No such file or directory in C:\Bitnami\wampstack-5.6.22-0\apache2\htdocs\index.php on line 25

            라는 오류가 뜨면서 id 3값인 연산자 페이지가 출력이 되질 않는데.. 왜 그러는걸까요?
            id값 1,2인 JavaScript란?이랑 변수와 상수 페이지는 제대로 뜨는데 말이에요 T_T;;;
          • 갤럭시
            이고잉님 질문있는데요 영상내용보고 따라하고 이태그가 여기에 걸려있고 어떻게 맞물리는지 이해는되는데요
            막상 처음부터 만들려고하면 엄청막막하던데 원래 당연한건가요?
            저는 비전공자고 퍼블리셔 준비를하는데요 여기서 html과 css 자바스크립트 제이쿼러까지 열심히 공부하면
            할수있을까요??
          • 김보균
            카인드한 강의 감사합시다.
          • 김준형
            수강했어요. 쉬운강의 감사합시다.
          • 류현승
            앗, 이고잉님 안녕하세요 ㅎㅎ

            그런데 file_get_contents("1.txt") 나 file_get_contents("1".".txt") 이렇게 하면 1.txt로 읽히는데
            file_get_contents("$_GET['id'].txt") 나 file_get_contents("$_GET['id']".".txt") 이렇게 하면
            오류가 나서요.

            이고잉님처럼 file_get_contents($_GET['id'].".txt") 이렇게 해야만 1.txt랑 2.txt가 다 되는데 이유가 뭔가요?
            대화보기
            • egoing
              완전히 같아요~
              대화보기
              • 류현승
                실습 2하다가 ""에 관해서 궁금한게 있습니다.

                file_get_contents("1.txt"); 여기에서
                $_GET['id'] 하면 이게 1이나 2의 값을 가지게 되어서 1.txt, 2.txt 를 불러온다고 생각했는데
                그럼
                file_get_contents("$_GET['id'].txt") 나 file_get_contents("$_GET['id']".".txt") 이렇게 하면

                file_get_contents("1.txt") 나 file_get_contents("1".".txt") 랑 다른건가요?
              • 궁금한점이 생겼습니다 2번째 동영상 을 팔로우 하던중 2.php 코드를 만들어 1.text, 2.text를 실행 하면 웹화면 상에 !coding, !hellowworld <-- 옆의 텍스트 처럼 !(느낌표)로 시작하며 출력됩니다
                저만 이런 현상이 있는건지요? 코드와 입력은 모두 예제처럼 했음 에도 불구하고, 이런 현상이 일어나는데 왜그런지 문의 드립니다.
              • Sy Kim
                아.. 이제 이해했습니다.. 가능불가능의 문제가 아니네요.. 표준에 의해서 언어의 역할이 정해져서.. 혹은 역할을 오래하다보니 표준화가 되어서.. 아무튼 현재는 각 언어의 역할이 자리잡은 체계라는 뜻이네요..아.. 진짜 이제 프로그래밍 언어가 무언지 좀 알겠습니다. 진짜 감사합니다.
                대화보기
                • egoing
                  저도 고맙습니다~
                  대화보기
                  • JustStudy
                    고맙습니다 2,
                  • 정확히는 JavaScript가 PHP가 하는 역할을 수행하지 못한다는 것은 아니고 단지 JavaScript라는 언어가 웹브라우저에서 그러한 역할을 하고 있기 때문입니다. 이는 웹의 역사가 말해주고 있는데, 간단히 말해 html이 나온 이후에 Brendan Eich 에 의해서 JavaScript가 나오고, 유럽 표준화 단체인 Ecma International 의해서 표준으로 자리잡게 됩니다.
                    여기서 중요한건 표준입니다. 표준의 힘은 굉장히 강력합니다. 이런 표준에 의해서 웹브라우저가 형성이 되어있고, 개발자들도 표준을 지키며 안정적인 웹 개발에 몰두 할 수 있습니다. 만약 html이후에 PHP로 체계가 잡히고 표준화 되었더라면 현재는 당연히 PHP가 클라이언트에서도 쓰였을 겁니다. 따지고 보면 html 태그나 css도 다른 형태로 사용되고 있었을 수도 있죠. 다만 그 때 당시에는 그런 언어로 나왔었었고, 그리고 각 언어의 역할이 분명하게 나뉘었기 때문에 (말씀하신것처럼 PHP는 서버, JavaScript는 클라이언트에 특화되어있었습니다.) 각각의 역할에 따라 표준으로써 자리매김하면서 현재의 웹이 현성이 된것이죠.
                    현재에 들어와서 PHP로도 클라이언트에서 동작하게 된다면 이미 표준으로 자리잡혀있는 수많은 웹브라우저와 개발자들에게는 엄청난 혼란을 야기시킬수 있습니다. 정말 특별한 상황이 아닌이상(속도나 편의성이 현재의 html과 JavaScript 보다 월등히 뛰어나다면..) 웹 클라이언트에서 새로운 언어체계가 자리잡기란 거의 0프로에 가깝지 않을까 하네요..
                    검색해서 찾아보시면 JavaScript를 사용하는 서버도 찾아볼수 있고, 웹에 관련된 부분 말고도 많은 곳에서 JavaScript가 쓰여지고 있으니 시간된다면 알아보시는것도 좋을거 같습니다.
                    대화보기
                    • Sy Kim
                      감사합니다!!!!! (좀 많이 궁금했습니다) // 클라이언트에 있는 JavaScript가 서버단의 PHP역할을 대신 못하는건 알겠습니다. 보안문제가 있을 수 있고, 그걸 일부 가능하게 하는게 Active X라는 것은 새로 알았습니다. (이걸 이해하고 Active X를 찾아 읽어보니 좀 이해가 됩니다)
                      // PHP가 html을 생성만 할 뿐 제어는 못한다는 것도 알겠습니다.. 생성과 제어라는 단어로 표현하니 조금 더 이해가 됩니다. 다만 여전히 PHP가 HTML 제어도 가능하게 만들어졌으면 편하지 않았을까 싶지만(물론 애초에 PHP 목적은 클라이언트가 아니라 서버단을 관리하기 위해서였다는건 알지만)
                      // 이 다음에 python을 공부할 것인데, 다른 언어를 배우고 나면 좀 더 이해할 수 있지않을까 기대합니다.
                      대화보기
                      • JavaScript는 클라이언트에서 동작하고, PHP는 서버에서 동작합니다.
                        다시 말해 클라이언트와 서버에서 하는일을 분산하기위해서 두 언어는 존재할수 있고,
                        서로 하는 역할도 다르며, JavaScript는 html을 직접 컨트롤 할 수 있지만 php는 html을 만들어 내기만 할 뿐 컨트롤은 불가능 합니다.(그렇게 되도록 유도는 할 수 있지만..)
                        단지 표현만 서로 비슷한(혹은 같은) 기능들로만 강의를 지금까지 진행했기 때문에 오해의 소지는 있을수가 있을거 같네요
                        위의 file_get_contents 같은 경우는 클라이언트(JavaScript)에서는 불가능한 영역입니다.
                        클라이언트의 내부 데이터를 서버쪽에서 마음대로 열람이 가능하다는 말이 되므로 보안적인 문제가 발생합니다.
                        이를 가능케 하는 것 중에는 보안이슈로 문제시 되고있는 엑티브 X 가 있습니다.
                        대화보기
                        • 나그네
                          태그가 잘못 입력되어있는 듯 합니다.

                          img scr -> img src
                          대화보기
                          • Jo Minho
                            <?php
                            if( empty($_GET['id']) == false ) {
                            echo file_get_contents($_GET['id'].".txt");
                            }else{
                            echo "no data";
                            }
                            ?>

                            여기에서 입력된 $_GET['id']가 빈 값일때는 if문이 실행되지 않는것은 이해 했습니다.
                            $_GET['id'].".txt"가 없는 파일이라면 그냥 오류문만 뜨네요.
                            'file_get_contents가 빈 자료라면' 을 if문으로 어떻게 쓸수 있을까요? 혹시 예전에 다른 언어에서 해봤던 try catch 문을 해봤는데 이것도 error가 아니고 warning이라 안되는거 같네요;;
                          • learner
                            항상 감사하게 강의 잘 보고 있습니다.
                            궁금한 점이 있는데... ?id에서 존재하지 않는 번호, 즉 5, 6, 7 등을 적었을 때 왜 오류가 나지 않는건가요?
                            empty 부분은 if로 오류를 방지하는 것 같던데... 5, 6, 7 등을 웹브라우저에서 적어 넣었을 때는 아무런 오류 없이 그냥 진행이 되는건가요? 감사합니다.
                          • JuHui Lee
                            (메모) 파생되는 activity들을 php로 처리하면, 이미지추가 등을 할때 메인 파일에 url추가 + css변경만 해주면 모든 activity들에 적용된다
                          • Sy Kim
                            음... 조금 헷갈리기 부분이요.. JavaScript는 웹브라우저의 인터프리터를 사용하는 언어이고, html을 제어하는 것이 역할이죠.. PHP는 웹서버에 별도의 소프트웨어를 깔아서 사용하는 언어이며, html이 점점 중복되고 복잡해지니, 그 중에서 '정보'에 해당하는 것을 따로 떼어서 서버에 데이터베이스로 보관을 하고, 이를 불러오는 구조를 만드는 것이죠.

                            그런데 JavaScript랑 PHP는 서울-강원도 말 만큼이나 비슷하다고 하셨고, PHP도 html을 제어할 수 있는것으로 보이거든요.(아닌가요? 워드프레스는 PHP만으로 홈페이지를 만든다고 듣기도 했고요).. 아무튼 이게 맞다면 그냥 html을 제어하는 역할도 PHP한테 주면안되나요? 반대로 JavaScript는 인터프리터가 클라이언트에 있으니 서버단의 정보를 불러오는 역할은 못하는것 같지만요.. (맞나요?)

                            한개의 웹애플리케이션을 만드는데 이렇게 여러종류의 언어가 '한꺼번에' 쓰인다는 것도 놀라운데, (이제 이유는 알겠지만 저는 외국어같은거라고 생각해서 각각 언어가 따로 쓰이는줄 알고 있었어요), 그나마 한개의 언어를 덜 쓸수 있는데.. 왜 계속 JavaScript인기가 높은지 모르겠어요..
                          • 계속 해볼려는데 안되네요..
                            file_get_contents 를 어떻게 2번쓰는지 알수 있을까요?
                            만약 예를 들어 위에 예제에 h2태그는 모두 중복이고 스트링만 바뀐다고 할때를 해보고 싶은데
                            아직은 계속 헷깔리네요ㅜㅠ
                          • Soongsil
                            가치가자님 img태그를 h1태그 위로 올려서 표시해보세요 그러면 img가 먼저 나오기 때문에 border위로 이미지가 잡히네여
                          • 가치가자
                            header img{
                            float:right;
                            height:150px

                            이 부분에서 img를 right를 주면 사진이 ------------- 헤더와 메인 부분에 걸쳐서 이미지가 표시되는데,

                            이미지 사이즈를 줄이고 늘이고 다 해도 안되네요.

                            top으로 주니까 제목 아래에 위치해 있어요

                            이미지 위치를 좀 더 정교하게 지정해 줄 수는 없나요?
                          버전 관리
                          egoing
                          현재 버전
                          선택 버전
                          graphittie 자세히 보기