[3주차 TIL] KnockOn Bootcamp PHP

2024. 12. 21. 21:04· KnockOn
목차
  1. 프롤로그
  2. PHP
  3. PHP 특징
  4. php 설치하기(로컬 환경)
  5. php의 기본 문법
  6. 1. 변수 선언
  7. 2. 입출력
  8. 3. 배열
  9. (1) 인덱스 배열
  10. (2) 연관 배열
  11. (3) 배열 내부 함수들
  12. 4. 조건문
  13. 5. 반복문
  14. 6. 함수
  15. 폼 데이터 처리
  16. 에필로그
728x90
반응형

프롤로그

PHP 개념이랑 데이터베이스 연동, apache2 연동만 알아보고, 바로 이제 게시판 만드는 프로젝트 진행해보자.

 

 

PHP

PHP(Hypertext Preprocessor)는 서버 사이드 스크립팅 언어로, 웹 개발에서 동적인 웹 페이지를 생성하는데 사용한다.

PHP는 HTML 코드 안에 삽입되어서 서버에서 실행이 되고, 그 결과를 클라이언트에게 전달한다. 이 PHP가 데이터베이스와의 연동, 세션 관리, 파일 처리 등 다양한 기능을 할 수가 있다.

 

웹 브라우저에서 PHP 코드가 실행되는 것이 아니라, 서버측에서 PHP 코드가 실행되고 나온 결과를 처리해서 HTML 결과로 클라이언트로 전송한다. 그래서 PHP코드가 사용자에게 노출되지 않도록 하여 보안을 강화할 수 있다.

그리고 동적으로 사용이 가능하다.

 

 

PHP 특징

1. 크로스 플랫폼

Windows, Linux, macOS 등 다양한 운영체제에서 실행될 수 있기에 어떤 서버에서든 PHP를 사용할 수 있다.

2. 데이터베이스 연동

MYSQL같은 데이터베이스 시스템과 쉽게 연동이 된다.

3. 오픈소스

기에 무료이다

4. 다양한 기능 제공

이 된다.

 

구조로는 HTML 코드에다가 중간에, 처리해야할 내용들은 <?php?> 이 구문 내부에다가 내용들을 입력한다 예시를 들자면

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PHP Example</title>
</head>
<body>
    <h1>Welcome to My Website</h1>
    <p>Current date: <?php echo date('Y-m-d H:i:s'); ?></p>  <!-- PHP로 현재 날짜/시간 출력 -->
</body>
</html>

기존 HTML코드랑 같은데, 중간에 php로 처리하는 코드들 저런 곳에서 이제 사용을 한다.

 

 

 

 

php 설치하기(로컬 환경)

sudo apt install php

를 입력을 하면 된다.

php언어만을 설치하는 명령어이다. php의 기본 패키지를 설정하는데, 웹 서버와의 통합은 포함되지 않는다.

그렇기 때문에 우리는 아파치 웹 서버에서 PHP를 실행할 수 있게 해주는 모듈(libapache2-mod-php)을 설치하는 명령어이다.

아파치랑 연동할려면 저 모듈을 설치해야한다.

sudo apt install php libapache2-mod-php

이렇게 설치 안 하면, 나중에 따로 웹 서버에서 php를 처리하기 위한 추가 설정이 필요하다.

그 다음에, 이제 파일 index.php를 만들고

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
    echo "Hello, World!";
    ?>

    
</body>
</html>

이를 입력한 다음에, 터미널에다가

php -S localhost:8000

를 입력해보자.

이렇게 php로 작성한 다음에 내부적으로 열 수 있다. 이렇게 코드를 작성한 것을 가지고 후에 깃허브에 올려서, 나온 결과물을 서버에 아파치를 통해서 올려야 할 것이다. 그 과정은 조금 나중에 하고, 일단은 윈도우에서든 맥에서든 php를 이용해서 개발하는 데에 집중하자.

 

 

php의 기본 문법

기본적으로 뭐든, 코딩을 할 때 어떤 언어든간에

1. 변수 선언

2. 입출력

3. 배열

4. if문(조건문)

5. for문, while문 (반복문)

6. 함수

 

이렇게만 알면 어떻게 해서든 코드는 돌아가게 짤 수 있다고 생각을 한다. 그래서 저 위에 것만 간단하게 알아봐서 해볼 것이다.

 

1. 변수 선언

얘는 파이썬 처럼 동적 타이핑을 지원한다. 그래서

<?php
$name = "a";
$age = 30;
$height = 171,5;
?>

이렇게 $ 달러 표기 뒤에다가 변수명을 적은 다음에 넣고자 하는 데이터를 집어넣으면 된다.

이때 변수 선언시, 영문자, 숫자, 밑줄로 이루어져야 하며, 처음에 숫자로 시작못하는 건 다른 언어랑 똑같다.

 

 

 

2. 입출력

(1) 출력

출력으로는  print문과 echo 문 이렇게 두 개가 있다.

echo 부터 보면

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
    echo "hello", "world";
    echo "<h1>안녕 세상아</h1>";
    echo "<h2>이제 안 반가워</h2>", "<h3>저리가</h3>";

    ?>

    
</body>
</html>

이 echo를 활용해서 실행시켜보면

이렇게 나온다. 여러 문장을 출력할 떄는 , 를 이용해서 출력한다.

print를 이용해본다면

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
    print("<h1>안녕</h1>");
    print("<h1>하세요</h1>");
    print("반갑습니다" . "<p>제 이름은</p>" . "서민재 입니다");

    ?>

    
</body>
</html>

이렇게 .을 이용해서 문장들을 연결해서 출력할 수 있다.

이걸 실행해보면

이렇게 나온다. 그리고 print를 쓰면 반환값으로 1을 반환하는데, 이를 토대로 출력이 됐는지 안 됐는지 확인을 할 수가 있다. 이따가 if문때 알아보자. 

 

변수를 출력하고 싶다면, 출력할 부분에 $변수 적기만 하면 된다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
    $firstName = "John";
    $lastName = "Doe";
    $age = 30;

    echo "<h1>My name is ", $firstName, " ", $lastName, " and I am ", $age, " years old.</h1>";  

    print "<h1>My name is " . $firstName . " " . $lastName . " and I am " . $age . " years old.</h1>";  
    ?>

</body>
</html>

이렇게 하고 실행하면

이렇게 결과가 웹 사이트에서 출력이 된다. 변수를 그대로 사용이 된 것이다.

 

 

 

(2) 입력

어쨌거나 웹 페이지기 때문에, 입력을 받을 시에는 파일, GET, POST, REQUEST 등의 폼으로 입력받아야하는데, 이는 나중에 알아볼 것이다.

 

 

 

3. 배열

php에서 배열은 여러 개의 값을 하나의 변수로 저장할 수 있는 데이터 구조이다. 배열을 사용하면 데이터를 효율적으로 관리하고, 여러 값을 그룹화하여 처리할 수 있다.

인덱스 배열과 연관 배열 두 가지 주요 유형으로 구분이 된다.

배열을 사용할 때는 array()함수를 사용하거나, []을 사용할 수 있다.

 

(1) 인덱스 배열

파이썬의 리스트 느낌이다.

<?php
$a = array("a", "b", "c");
$b = ["d", "e", "f"];

echo $a[0];
echo $b[0];
?>

이렇게 하면

a배열과 b배열의 0번인덱스를 출력하는 것을 확인할 수 있다.

이게 파이썬 같은 리스트 역할을 하나 서로 각기 다른 값들을 넣어봤는데

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
$a = array("a", "b", "c", 3, 3.5);

echo $a[0], $a[1], $a[2], $a[3], $a[4];

?>

</body>
</html>

진짜 딱 파이썬 리스트 느낌처럼 어떤 값이든 다 들어가지는 것 같다.

이중 리스트 처럼 내부에 배열도 들어가지는지 확인해보자.

배열 전체를 출력하려면

print_r(배열)

을 쓰면 된다.

예제를 보면

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
$mixArray = array(
    "Hello",
    10,
    3.14,
    true,
    array("apple", "banana"),
    null
);

print_r($mixArray);
?>


</body>
</html>

이 코드를 실행시키면

이렇게 출력이 되는 것을 확인할 수 있다.

 

아, 파이썬에서는 맨 뒤에 값 추가할 때 .append()를 썼다면, 여기서는 그냥 a[] = "값" 해주면 그냥 알아서 맨 뒤에 추가가 된다.

방금 코드에다가

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
$mixArray = array(
    "Hello",
    10,
    3.14,
    true,
    array("apple", "banana"),
    null
);

$mixArray[] = "추가";

print_r($mixArray);
?>


</body>
</html>

print_r 전에 $mixArray[] = "추가";를 적고 출력하면

이렇게 추가가 되는 것을 알 수 있다.

 

 

 

(2) 연관 배열

파이썬으로 따지면 딕셔너리 같은 느낌이다. 각 요소에 대한 고유한 키를  문자열로 지정할 수 있고, 인덱스가 숫자가 아니라 사용자가 지정한 키로 접근한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
$temp = array("a" => 1, "b" =>2, "c"=>3);
print_r($temp);
?>


</body>
</html>

=> 을 기준으로 키와 값이 나뉘어지고, 각 키는, 을 기준으로 나뉜다.

각 데이터에 접근할때는 인덱스인 [0] 이렇게 접근 하는 게 아닌, [a] 이렇게 키 값으로 딕셔너리 처럼 접근한다.

마찬가지로, 파이썬 딕셔너리 처럼, Array 배열 내부에 없는 값을 키로 입력하고, value 넣어주게 되면 새로운 값이 추가 된다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
$temp = array("a" => 1, "b" =>2, "c"=>3);
$temp["d"] = 4;
$temp["c"] = 5;
print_r($temp);
?>


</body>
</html>

이렇게 기존에 있는 값은 새로운 값을 넣어주면 해당 키 값에 대한 값은 수정이 되고

내부에 없던 키값을 가져오면 새로 추가되는 것을 확인할 수 있다.

 

 

(3) 배열 내부 함수들

파이썬에서도 많이 쓰던게 개수 세기, 정렬, 인덱스 구하기 정도인 것 같다.

우선 정렬부터 보자.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
$fruits = array("Banana", "Apple", "Cherry", "Orange");
sort($fruits); 
print_r($fruits);
print("<br>");

rsort($fruits); 
print_r($fruits);

?>



</body>
</html>

sort()를 쓰면 그냥 오름차순 정렬이 되고, rsort()를 쓰면 내림차순 정렬이 된다.

그다음 길이구하기는 len 이 아닌 count를 사용한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
$fruits = array("Apple", "Banana", "Cherry");
echo count($fruits);
?>




</body>
</html>

3이 출력되었다.

그 다음 저거 한 줄씩 출력하려면 

<?php
$fruits = array("Apple", "Banana", "Cherry");

foreach ($fruits as $fruit) {
    echo $fruit . "<br>";
}
?>

이런식으로  foreach (전체 as 변수)

를 이용하여 전체 순회할 수도 있다.

그 외에, 키랑 값 바꾸기 위해, 병합하기 위해

array_flip //키 값 바꾸기
array_merge //배열 합치기

이렇게 있는데, 지금은 넘어가겠다.

 

 

4. 조건문

참일때만 돌아가게 하는 것. 다른 언어 했으면 웬만하면 다 알 것이다.

여기서는 if - elseif - else 그분을 사용한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
    $a = 5;
    if($a <5){
        echo "5보다 작습니다";
    }
    elseif($a > 5){
        echo " 5보다 큽니다";
    }
    else{
        echo "5입니다";
    }
?>

</html>

그래서 여기는 넘어가겠다. 아 그리고 혹시나 맨 뒤에 \n 이거 하고 싶으면 맨 뒤에 <br> 이거 붙여주면 된다.

아 그리고 입출력 할 떄, print 문이 반환값이 있다고 했는데

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
    $a = print "안녕<br>";
    if($a == 1 ) {
        echo "잘 출력이 처리되었습니다<br>";
    }
    else{
        echo "안녕 못한대요<br>";
    }
?>

</html>

이렇게 작성해보면, print문이 출력이 되었을 때 반환값이 1이 나오게 되고, 그래서 출력이 되었는지 확인할 때 저렇게 확인한다.

조건문을 a==2 이렇게 바꿔버리면 바로 else구문이 실행이 된다.

 

 

5. 반복문

<?php
for ($i = 0; $i < 5; $i++) {
    echo "Iteration number: $i<br>";  // 0부터 4까지 반복
}
?>
<?php
$i = 0;

while ($i < 5) {
    echo "Iteration number: $i<br>";  // 0부터 4까지 반복
    $i++;  // 반복문 종료 조건을 증가시킴
}
?>

이렇게 for문과 while문이 있고, 얘네도 마찬가지로 break, continue등으로 제어할 수 있다.

파이썬이랑 그냥 기본적인 문법 거의 비슷하니까 넘어간겠다.

 

 

6. 함수

기본적으로 구조만 알아보자.

function functionName($parameter1, $parameter2) {
    // 함수가 수행할 작업
    return $result;
}

구조는 이렇게 되고, 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php
function sayHello() {
    echo "Hello, World!";
}

sayHello();  
?>


</html>

함수를 실행하면

이렇게 출력이 된다.

 

 

폼 데이터 처리

아까 입출력에서 이제 입력에 관한 내용이다.

index.php에다가 이렇게 입력하고

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2>이름과 나이를 입력하세요</h2>
    <form action="process.php" method="POST">
        <label for="name">이름 : </label>
        <input type="text" name="names" id="name" required><br><br>

        <label for="age">나이 : </label>
        <input type="number" name="ages" id="age" required><br><br>

        <input type="submit" value="Submit">
    </form>
    
</body>
</html>

process.php 새로운 파일을 만들고 거기에는

<?php
$name = $_POST['names']; 
$age = $_POST['ages'];  


echo "<h2>Your Input:</h2>";
echo "Name: " . $name . "<br>";
echo "Age: " . $age . "<br>";
?>

이렇게 입력한다.

 

label - id 이렇게 두 개가 한 세트이고, 저기 있는 name 부분은 _POST와 하나의 세트이다.

 

이렇게 입력을 하고 Submit을 누르면

이렇게 입력받은 값을 처리하는 것을 확인할 수 있다. 

name 부분에다가 넣는것이고, 그것을 $_POST[name값] 으로 처리하는 것이다.

 

 

 

에필로그

바로 이제 php와 apache, MySQL연결하고, 바로 이제 회원가입 로그인 부터 만들어보자.

 

728x90
반응형
저작자표시 비영리 (새창열림)

'KnockOn' 카테고리의 다른 글

[3주차 TIL] KnockOn Bootcamp PHP 게시판 생성 및 조회  (0) 2024.12.22
[3주차 TIL] KnockOn Bootcamp PHP와 MySQL 연결, 회원가입과 로그인  (1) 2024.12.22
[3주차 TIL] KnockOn Bootcamp MySQL  (1) 2024.12.20
[3주차 TIL] KnockOn Bootcamp Apache  (2) 2024.12.20
[1주차 TIL] KnockOn Bootcamp HTML, CSS, JS  (1) 2024.12.09
  1. 프롤로그
  2. PHP
  3. PHP 특징
  4. php 설치하기(로컬 환경)
  5. php의 기본 문법
  6. 1. 변수 선언
  7. 2. 입출력
  8. 3. 배열
  9. (1) 인덱스 배열
  10. (2) 연관 배열
  11. (3) 배열 내부 함수들
  12. 4. 조건문
  13. 5. 반복문
  14. 6. 함수
  15. 폼 데이터 처리
  16. 에필로그
'KnockOn' 카테고리의 다른 글
  • [3주차 TIL] KnockOn Bootcamp PHP 게시판 생성 및 조회
  • [3주차 TIL] KnockOn Bootcamp PHP와 MySQL 연결, 회원가입과 로그인
  • [3주차 TIL] KnockOn Bootcamp MySQL
  • [3주차 TIL] KnockOn Bootcamp Apache
성밍쟁
성밍쟁
성밍쟁 공붕방
성밍쟁
너드인의 밤
성밍쟁
전체
오늘
어제
  • 분류 전체보기 (182)
    • 일상 (1)
    • 스펙업 (7)
      • 학회 (0)
      • 멋쟁이사자처럼 (2)
      • 2024 winter-study (5)
    • 코딩테스트 - 백준 (9)
    • 보안 스터디 (56)
      • 시스템 해킹 (10)
      • 리버스 엔지니어링 (0)
      • 웹 해킹 (38)
      • 암호학 (8)
    • bandit (15)
    • 웹 개발 (11)
    • 머신러닝 (0)
    • 데이터베이스 (9)
    • KnockOn (72)
    • DevOps (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 드림핵
  • /bin
  • 1074
  • 11656
  • 1193
  • 2563
  • 3Des
  • 9613
  • AES
  • Alias

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
성밍쟁
[3주차 TIL] KnockOn Bootcamp PHP
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.