php
php로 작성된 부분은 web server에 의해 php interpretor에 위임되어 행해지는 부분이고
java script로 작성된 부분은 web browser에 의해 행해지는 부분이다.
web browser 페이지의 소스를 보면 js는 작성한 그대로 보이지만
php코드 부분은 결과만을 확인할 수 있다. 이유가 바로 위에서 언급한 특징 때문이다.
<?php
php코드
?>
※<?php .. 에서 ?와 p 사이에 띄어쓰기 하면 안됨
<script>
java script 코드
</script>
---------------------------------------------------------------------
- echo
echo "Hello world"; //문자의 경우" "로 감싸줘야 한다.
echo 10000;
echo "10000"+"10000"; //20000 출력
echo "H"+"W";//0 출력
echo "10" . "10";//1010 출력 // . 은 두 문자열 연결
---------------------------------------------------------------------
- $변수명
: 앞에 $를 붙인다.
---------------------------------------------------------------------
- 배열
$list = array("1","2","3"); // php , ※ var list = new Array("1","2","3"); // java script
- 배열의 크기
$size = count($list); // php , ※ var size = list.length; // js
---------------------------------------------------------------------
- 함수
function FuncPHP($input)
{
return $input + 1;
}
- 함수 호출
FuncPHP(3);
---------------------------------------------------------------------
-디렉토리(경로) 관리
getcwd(); // 현재 디렉토리 구함
chdir("../"); // 경로 변경, ("../" 은 부모 경로 = 한 계층 위 의미 )
chdir("폴더명"); // 해당 경로로 이동
$dir = "./"; // = current directory
$files1 = scandir($dir);//경로내 파일들 순차 정렬
$files2 = scandir($dir, 1);//경로내 파일들 역순 정렬
만들기
mkdir("1/2/3/4", 0700, true);
//1이라는 폴더 밑에 2 밑에 3 밑에 4라는 폴더가 없으면 만든다. 있으면 warning
//0700: 권한 설정, 오너 그룹 아더, 자세한건 추후 기입
//true: 1/2/3 까지의 경로가 없다면 1,2,3을 만들어 준다는 설정 설정
---------------------------------------------------------------------
-파일명 보안
basename = 이하 b 로 표시
b("/etc/sudoers.d", ".d"); // -> "sudoers"
b("/etc/sudoers.d"); // -> "sudoers.d"
b("/etc/pass"); // -> "pass"
b("/etc/"); // -> "etc"
b("."); // -> "."
b("/"); // -> ""
//이렇게 파일명만을 추려내는 기능 이스케이핑 같은 목적으로 사용
---------------------------------------------------------------------
-ini 설정 runtime 변경
ini_set("display_error", "1");
//
---------------------------------------------------------------------
-이미지 파일 전송 받아 출력하기
form 태그로 전송 받은 경우 form 속 input 의 name="이름" 을 이용해서
$_POST["이름"] 으로 사용할 수 있지 않을까? 하는 생각은 버리자
파일의 경우 $FILES 라는 약속된 변수에 저장되어 있다.
"이름"은 폼 태그 하위 인풋 태그에서 사용한 name="이름" 의 그 이름이다.
$FILES["이름"] 으로 배열화 되어있는 파일의 정보에 접근할 수 있다.
$FILES["이름"]["name"] //-> 파일 이름. 확장자
$FILES["이름"]["type"] //-> image 인지 text 인지 / 형식?(png , plain 등 )
$FILES["이름"]["tmp_name"] //->템프 경로, 파일을 목표 경로로 옮기기 전 잠시있는 곳
$FILES["이름"]["error"] //-> 전송중? 에러 사항?
$FILES["이름"]["size"] //-> 파일 용량
$uploadDir = '경로\\';// 이 경로는 서버의 물리적 경로
//경로 까지만 담고있고 끝에 역슬래쉬가 두개 있는게 특징. 윈도우에서만 그렇다
$uploadFile = $uploadDir.basename($_FILES["이름"]["name"]);
//경로에 파일명을 붙여주는 작업, .을 이용해 텍스트+텍스트 해준다.
//basename은 여기서는 이스케이핑 역할, 정확한 파일명만 추리기 위해
if( move_uploaded_file($_FILES["이름"]["tmp_name"], $uploadFile)){
echo " 파일 유효 업로드 성공";
}
else {
print "파일 업로드 공격의 가능성이 있음";
}
//임시파일로 존재하는 파일을 $uploadFile 로서 해당 위치와 파일명으로 이동
<img src="file/<?=$_FILES['userFile']['name']?>" />
//이미지를 출력, 이곳 src="URL" 임, php파일이 있는 경로에 이미지 파일이 있음
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
댓글 없음:
댓글 쓰기