Posts php 기초 강의
Post
Cancel

php 기초 강의

PHP 기초

PHP의 원리

php 원리

  1. 웹브라우저에서 웹 서버로 index.php을 달라고 요청보냄
  2. 웹서버는 index.php을 처리할 수 있는 프로그램인 php에게 위임함
  3. php는 index.php를 찾고, 해석해서 html 파일을 만듬.
  4. 웹 서버는 html을 받고 웹브라우저로 보내줌.

PHP의 데이터 타입

숫자와 산술연산자

  • int : 정수형
  • float : 소수형

문자열과 문자열 처리

  • string
    • ’’
    • ””
  • 연산자
    • . : 문자열 붙이기 ex) “hello “.”world” -> “hello world”

변수

  • $변수명 으로 선언

PHP와 URL 쿼리

php 입력으로 URL 쿼리에 접근할 때는 $_GET['key']로 접근한다.

ex)

/index.php?name=shin

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

-> shin 출력

PHP 함수의 사용

php에는 많은 내장함수가 있음. 대표적으로는 문자열의 길이를 알려주는 strlen(), 새줄을 <br>로 바꿔주는 nl2br

내장함수 레퍼런스

반복문

배열의 형식

array() 함수로 배열을 만든다.

키 없이 생성하면 인덱스로 접근가능하고, 키를 함께 선언하면 키로 접근 가능하다.

1
2
3
4
5
6
7
8
9
<?php
  $cars=array("volvo", "bmw");
	echo $cars[1];
?>
<?php
  $cars_with_key = array(
    'aaa' => "volvo");
	echo $cars['aaa'];
?>

array 문서

웹 어플리케이션

form과 post

FORM의 action으로 php를 주어 데이터를 전송할 수 있고, POST로 넘긴 데이터는 $_POST['key']로 접근할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
<!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>

1
2
3
4
// form.php
<?php
file_put_contents('data/'.$_POST['title'], $_POST['description']);
?>

기타 predefined variable

글 수정 기능 구현

php는 html 태그 중간에도 삽입이 가능하다. 이는 문자열인 경우에도 마찬가지이다. 이를 통해 input 태그에 수정할 값을 디폴트 값으로 지정이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="update_process.php" method="post">
		<input type="hidden" name="old_title" value="<?=$_GET['id']?>">
		<p>
			<input type="text" name="title" placeholder="Title" value="<?php print_title(); ?>">
		</p>
		<p>
			<textarea name="description" placeholder="Description">
  			<?php print_description(); >
  		</textarea>
		</p>
		<p>
			<input type="submit">
		</p>
</form>

파일명 변경은 rename() 메서드를 사용하여 가능하다.

1
2
3
4
5
<?php
rename('data/'.$_POST['old_title'], 'data/'.$_POST['title']);
file_put_contents('data/'.$_POST['title'], $_POST['description']);
header('Location: /index.php?id='.$_POST['title']);
?>

필요한 경우에만 html 태그를 노출 시키는 것도 가능하다. 예를들어 아래 코드는 URL에 id 쿼리값이 있어야만 update 링크를 보이도록 한 예시이다.

1
2
3
<?php if(isset($_GET['id'])) { ?>
	<a href="update.php?id=<?=$_GET['id']?>">update</a>
<?php } ?>

마무리

파일로 모듈화 - require

  • require() : 필요한 파일을 불러옴. 파일이 없을 시 fatal error가 나타난다.
  • require_once() : require()와 동일하지만, 여러 모듈에 거쳐 한번만 불러옴.
  • include() : 필요한 파일을 불러옴. 파일이 없을 시 warning이 나타나지만 스크립트가 계속 실행됨.
  • include_once() : include()와 동일. 여러 모듈에 거쳐 한번만 불러옴.

보안

XSS

  • htmlspecialchars() : 내부에 스크립트 코드가 있어도 그대로 문자열로 출력함.
  • strip_tags() : allowable_tags로 허용할 태그만 남기고, 나머지 태그는 전부 지운 후 출력

파일경로보호

  • basename() : ., .. 와 같은 상대경로를 지우고, 파일명만 남기는 함수
    • ex) ../password.txt -> password.txt

출처

인프런 web2 - php 강의

This post is licensed under CC BY 4.0 by the author.

쿠버네티스 Ingress

next.js - data fetching

Comments powered by Disqus.