PHP 실습


기술의 상호작용 Review

주소를 입력하고 엔터를 친다.

웹브라우저는 웹서버에게 a.php를 요청한다.

웹 서버는 php확장자를 보고 자기가 처리할 수 없다는 것을 알고 php엔진에게 위임을 한다.

php엔진은 a.php파일을 읽어서 거기에 있는 php코드를 해석한 다음 그 결과를 웹 서버에게 돌려준다.

웹서버는 그 결과를 웹 브라우저에게 중계해준다.



이제까지는 실제로 존재했던 파일을 사용했다. 

파일들 끼리에는 중복되어있는 부분이 많은데 이것을 재 분류해서 

html은 index.php에만 담아두고 내용은 txt 파일로 만든다.

이 txt파일은 id 값으로 호출한다. 



정보는 txt파일로 꺼내어 놓고

php를 통해 입력받는 값을 가지고 프로그래밍적으로 정보를 보내준다. 

지금 언급한 방법은 과도기적인 방법이고

최종적으로는 DATABASE에 있는 정보를 꺼내오는 것이 바람직하다. 

  • DATABASE 는 소프트웨어. 데이터를 효과적으로 처리하고 보안성이 높다.

이 장점 때문에 대부분 정보를 DATABASE 에 저장하게 된다. 



실습 1. 선행적으로 알고있으면 좋은 것들

$_GET => 값을 가져올 때

<?php
  echo $_GET['id'];
?>

를 php확장자인 파일에 작성하고 

localhost/phptem/1.php?id=1 을 입력하면

1이라는 것이 화면에 나타난다.



만약 id가 아니라 name이란 것 으로 가져오고 싶다.

<?php
    echo $_GET['name'];
?>

으로 작성하고 

localhost/phptem/1.php?name=egoing

을 실행하면 egoing 이 나온다. 



name과 id 둘 다 쓰고 싶다. 

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

라고 작성하고


을 입력하면 egoing,1 이 나온다. 



주소와 값의 구분 => ?

값과 값의 구분 => &



php에서 파일의 내용을 불러오는 방법 1

     1.txt라고 파일을 만들고 내용을 입력한다.

     2.php를 만들어서 안에

file_get_contents("읽어오고 싶은 파일의 이름");
         
      을 사용한 php 코드를 작성한다.

<?php
      file_get_contents("1.txt");
?>
    
        이 file_get_contents 함수는 안에있는 파일의 내용을 return 하는데
        이 return 된 값을 확인하기 위해 앞에 echo를 붙인다.

<?php
      echo file_get_contents("1.txt");
?>

여기서 이제 1.txt라고 하지말고 1을 사용자 입력에 따른 가변적인 값으로 사용하기 위해

코드를

echo file_get_contents(&_GET['id'].".txt");
 
이렇게 작성할 수 있다.



실습 2. 이전에 작성했던 JavaScript 를 사용해서 html 정보는 php로 나머지는 txt로 나누기


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="http://localhost/style.css">
</head>
<body id="target">
  <header>
    <h1><a href="http://localhost/">JavaScript</a></h1>
  </header>
  <nav>
    <ol>
      <li><a href="http://localhost/page_html.html">JavaScript란?</a></li>
      <li><a href="http://localhost/page_vc.html">변수와 상수</a></li>
      <li><a href="http://localhost/page_op.html">연산자</a></li>
    </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>

</body>
</html>

index.php 파일에 이전에 작성했던 JavaScript 코드를 넣는다.

그리고 안에 정보인 부분들을 txt파일로 빼내는 것을 해야한다.

list.txt 파일을 만들어 저장한다. 

(h1의 내용도 정보이긴 하지만 우선 저장하지 않는다)

먼저 li의 내용을 그대로 cut해서 list.txt에 paste한다.

그리고 비어있는 ol 태그 안에

<ol>
      <?php
        echo file_get_contents("list.txt");
       ?>
    </ol>

을 입력해서 list를 참조할 수 있게 한다. 

웹 브라우저 입장해서는 php를 쓰고 있는지 안쓰고 있는지 알 수가 없다. 

만약 조건문이라는 list를 추가하고 싶으면

index.php를 수정할 필요 없이 list.txt만 수정하면 된다. ==> 목적!



실습 이제 index.php?id= 를 이용해서 1,2,3일 때 각각의 항목을 띄울 수 있게 한다. 

index.html 에서

</div> 아래에 

<article>
 <?php
  echo file_get_contents("1.txt");
 ?>
</article>

해서 1.txt 파일에 JavaScript에 대한 설명을 넣으면 된다.

하지만 최종적인 목적은 가변적으로 사용하기 위함. 

<article>
    <?php
      echo file_get_contents($_GET['id'].".txt");
     ?>
  </article>

을 통해서 id값을 통해 제어할 수 있게 한다.

list.txt에 링크되어 있는 주소값을 id 값에 따라 제어할 수 있게 수정한다.

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

=> list를 클릭하면 저 id 값을 입력한 것과 거의 비슷한 효과.

제목 부분도 수정

<header>
    <h1><a href="http://localhost/phptem/index.php">JavaScript</a></h1>
  </header>

  •       echo file_get_contents($_GET['id'].".txt"); 여기에서 index.php파일의 id 값은 NULL 이다
  •      => 그러면 .txt 파일을 열려고 시도를 한다
  •      error가 발생 할 수도 있다.

이 예외 case를 처리하기 위해 

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

이렇게 코드를 작성할 수 있다. 



웹페이지 h1 태그 아래에 이미지 삽입

<img src="원하는 이미지가 있는 주소" alt="값이름">

이것도 모든 페이지에 적용하기 위해서 css에 넣는다 .

style.css 코드 안에

header img{
    float:right;
    height:100px;
}



데이터베이스를 활용하는 것이 최종 목표

'웹 프로그래밍' 카테고리의 다른 글

데이터베이스 MYSQL 실습  (0) 2017.12.28
데이터베이스 MYSQL 이론  (0) 2017.12.23
JavaScript 실습  (0) 2017.12.21
JavaScript 실습  (0) 2017.12.20
UI vs API  (0) 2017.12.19

+ Recent posts