본문 바로가기
  • think normal
새로워지기/서른의 생활코딩

생활코딩 따라하기 WEB2 - PHP _ CRUD를 FILE로 구현해보기

by 청춘만화 2019. 3. 2.

php 생활코딩 2019.03.01


생활코딩 따라하기 WEB2 - PHP _ CRUD를 FILE로 구현해보기 



PHP를 배워야겠다는 다짐은 생활코딩에 한 챕터가 모두 더해서 6시간 조금 넘을 뿐이다. 라는 점에서 자신감이 생겼다. 삼월 일일. 정오 뉴스와 대통령 선언을 보고 미세먼지도 많은데 내 마음속 독립을 위해 7시간 정도를 주욱 매진했다. 이고잉 덕분에 하루에 다 끝낼 수 있었다. 늘 고마우신 분이다. 

별도의 실습과정을 포스팅 할까? 하다가.. 아무래도 이고잉 동영상만큼 깔끔할 수는 없을 것 같고 괜한 시간 낭비일 것 같아 생략하기로 했다.

다만 나중에 기억을 최대한 빨리 회상할 수 있도록 학습 과정에 정리해둔 키워드들을 블로그에 포스팅 해두기로 한다.


한가지 더 기분좋은 일은 막연했던 PHP 학습의 방향을 찾을 수 있었다는 점이다.

교양 수업 이후 갈 방향은 라라벨에 등반하는 일이다. 그 과정에서 새롭게 변화하고 있는 PHP 7.x와 MySQLi 등 새로운 데이터베이스 활용방안, PHP MVC 개발방식 등을 채득할 수 있을 것으로 기대된다. 


다만 바로 라라벨에 가기 전에 생활코딩에서 준비 운동을 차분히 다 마치고 등반을 나설 예정이다! 

두근구든 고고~ 


실습 내용 : https://opentutorials.org/course/3130

실습 결과 : http://127.0.0.1:8080/index.php   ( <— MAMP 실행 후, 브라우저 주소 창에 입력 )


개발 환경 : MAC OS 





비트나미 설치 

비번 설정 : e~7

MAMP MYSQL port 조정 : 중복을 방지하기 위해 7 -> 3



php 환경설정 조정

1.경로 

apache2/php/etc/php.ini


2. 조정 

1) 에러 표시 켜기 ; 서비스 시에는 off

display_errors = on


2) 성능 최적화 끄기 ; 서비스 시에는 1

opcache.enable=0



php 동작 원리 

웹서버(아파치)  

정적 파일(html) 들어오면, 

자신이 처리해서 브라우저에 바로 회신한다.


외의 파일(php) 들어오면, 

처리할 있는 (php)으로 처리를 위임한다. 


php(공장) 

<?php ?> 해당 하는 부분(재료) 

정적 언어로 생성(제품)하여 ( 과정에서 php 모두 사라진다 )

웹서버에게 전달하고 


웹서버는 php에게 전달받은 정적언어를 브라우저에 회신한다.



일반 상식  

expr 값이 되는 것이 있다. 

statement 일반 코드의 서술 

argument(구체적인 표현식 = 실제 입력한 : 2,4 )

parameter( 직접 받아서, 매개해서 함수 안에서 사용하는 변수 : $left, $right )



php 문법 


PHP supports data types. 지원하는 데이터 타입 ? 

http://php.net/manual/en/language.types.intro.php


적용 구간 

<?php 내용;   ?>

단순 출력

echo = print()


문자열 더하기 

문장”.”문장

문자열 개수 새기

strlen()


변수 선언  

$변수이름


GET parameter

url 넘어온 파라미터 이름의 = domain.php?name=홍길동

$_GET[ ' name ' ]


html pre 처리 

nl2br(“작성된 코드 내용에 대한 줄바꿈을 반영하여 정적코드 생산시, 자동으로 <br/> 처리”);

(연산 결과에 따른) 데이터 타입 출력  (개발 과정에서 사용)

var_dump( )

= print_r( ) 

boolean type 출력

isset( )


디렉토리 안에 있는 파일이름 배열에 담기 

scandir( ) 


포스트 파라미터 

$_POST[ ' name ' ]


파일 저장하기 

file_put_contents('data/'.$_POST['title'],$_POST['description']);


리다이랙션

header('Location: /index.php?id='.$_POST['title']);


파일 이름 수정

rename('data/'.$_POST['old_title'],'data/'.$_POST['title']);

파일 삭제 

unlink('data/'.$_POST['id']);


리펙토링 

<?php require('lib/print.php'); ?>

<?php require_once('lib/print.php'); ?>


보안 cross site scripting 

<?php echo htmlspecialchars("<script>alert(\"baboya\");</script>"); ?>


보안으로 인한 본문 이미지, 스타일 스크립트 사용에 대한 대응 

strip_tags( ) 



관련 소스 : htdocs.zip

                     <-- 첨부파일을 넣어야할 위치입니다. 

 






+ 이고잉 추천

더 알아두면 좋을 것들  


 데이터베이스 

생코 강의 : https://opentutorials.org/course/3167


함수 

http://php.net/manual/en/funcref.php


session 회원, 회원 권한관리 

http://php.net/manual/en/book.session.php


타사인증     회원 + 보안

federation authentication ( facebook ) php 

https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/


composer 

PHP의 의존성 관리도구

     생코 강의 : https://opentutorials.org/course/3018/5221


composer 

홈페이지 - https://getcomposer.org/   

설치 

terminal 에서, 

해당 프로젝트폴더에서 composer 설치

디렉토리에서,

composer.json 파일생성

및 Packagist에서 검색한 composer 라이브러리 선언 

terminal 에서, 

선언한 composer 라이브러리 설치


composer.lock

지금 상태를 기록해둔 것이다. 컴포저 인스톨을 실행했을 때 이 파일이 존재한다면 컴포저는 이 파일에 기술된 라이브러리와 다른 버전의 라이브러리만을 설치할 것


* 컴포저의 메인 저장소    

https://packagist.org/



b 새로 발견한 배울 것들 

: 생코에서 php 공무 마치고 포스팅 할 것들 


composer 관련 자료를 꼬리에 꼬리를 물고 찾다보니 최근에 가장 주목받는 php 프레임웍(라라벨)을 비롯해 MySQL 익스텐션은 이제 사용하지 않는다는 정보와 이를 대신하여 MySQLi 등을 사용하고 있다는 정보들을 알게되었다. 간략히 라라벨 관련 링크 페이지들을 훑어보니 의존성을 추가하고 관리하는 방법과 php 코딩 방식이 spring에서의 그것과 매우 유사하다는 점을 발견하게 되었다.  시간을 들여서 학습해야할 새로운 산을 발견하였으니 ;D 생활코딩으로 마저 하던 준비운동을 다 마치고 본격 등반에 올라야겠다! 

php-the-right-way
       https://modernpug.github.io/php-the-right-way/

라라벨 국내 대표 커뮤니티                               
라라벨 5 입문 및 실전 강좌(온라인 도서)   

댓글