우분투 리눅스에 Apache 2 + PHP 8 설치하기(Ubuntu 20.04 LTS) - Creative Nomad LondonCity
<aside>
💡 php -v : 현재 사용중인 php 버전 알 수 있음
php -m : 현재 깔려 있는 php tension알 수 있음
</aside>
php → node
<?php
$conn = mysqli_connect("210.123.124.186","sjtest","sjtest#!@","sjtest");
if(!$conn) {
echo 'db에 연결하지 못했습니다.'.mysqli_connect_error();
}else {
$sql = "SELECT * FROM board WHERE NUMBER=34";
$result = mysqli_query($conn,$sql);
$row = mysqli_fetch_array($result);
$sqlT = "SELECT * FROM board WHERE NUMBER=35";
$resultT = mysqli_query($conn,$sqlT);
$rowT = mysqli_fetch_array($resultT);
if ($row[2] == $rowT[2]) {
echo "ok";
} else {
echo "no";
}
echo htmlspecialchars($rowT[2]);
// print_r($row);
// print_r($rowT);
}
?>
호출된 url정보를 가져온다.
<aside> 💡 다룰 수 있는 프로토콜과 인증서 :
cURL의 장점
3 cURL의 메소드 종류
</aside>
curl_close() : URL handle을 닫습니다.
curl_copy_handle(): cURL handle을 속성채로 복사한다.
url_errno() : 에러번호를 리턴합니다.
curl_exec() : 설정된 옵션으로 실행한다.
curl_getinfo() : 통신의 정보 표시
curl_init() : cURL handle 생성
curl_multi_add_handle() : handle 배열에 cRUL handle을 추가한다
curl_multi_close() : cURL handle 배열 전체를 닫는다.
curl_multi_exec() : 여러개의 설정된 옵션으로 실행합니다.
curl_multi_getcontent() : 통신결과 컨텐트를 표시한다.
curl_multi_info_read() : 통신 정보들을 표시한다.
curl_multi_init() : 여러개의 handle을 생성한다.
curl_multi_remove_handle() :여러개의 handle을 삭제한다.
curl_setopt_array() :옵션을 배열로 한 번에 설정한다.
curl_setopt() : 한가지 옵션을 설정한다.
curl_version() : cURL의 버전 정보를 가져온다
//초기화
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "<http://www.sample.com>");
//결과에 헤더값을 포함 (TRUE, FALSE)
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//연결 대기 시간(초). 무한정 대기는 0
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
//cURL 함수를 실행할 수있는 최대 시간 (초)
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
//TRUE 설정 시 curl_exec () 반환 값의 문자열을 반환
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//HTTP 요청에 사용되는 User-Agent 헤더 내용
curl_setopt($ch, CURLOPT_USERAGENT, "sample");
//FALSE로 설정 시 cURL이 피어의 인증서를 확인하지 못하게합니다.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
// 1 은 SSL 피어 인증서의 일반 이름의 존재를 확인합니다.
// 2 를 사용하여 공통 이름이 있는지 확인하고 제공된 호스트 이름과 일치하는지 확인
// 0 은 이름을 확인하지 않음. 프로덕션 환경에서이 옵션의 값은 2 (기본값) 로 유지해야합니다 .
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
// TRUE는 일반 HTTP POST를 수행.
curl_setopt($ch, CURLOPT_POST, 1);
//HTTP "POST"작업으로 게시 할 전체 데이터.
curl_setopt($ch, CURLOPT_POSTFIELDS, Array());
//CURL 실행 //curl_exec()의 결과는 Boolean 값.
//출력되는 결과(문자)물을 받기위해서는 CURLOPT_RETURNTRANSFER 옵션을 사용해야 한다.
//여기서 헤매다가 file_get_contents를 사용했다가 지적.. 보안을 위해 file_get_contents는 지양.
$result = curl_exec($ch);
//CURLINFO_HTTP_CODE 정보(200 or 400)
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//결과를 json 디코딩하여 출력. true 시 배열. 기본 오브젝트.
$recv = json_decode($result, true);
// getinfo로 가져올 수 있는 모든 정보 다 가져옴
$code = curl_getinfo($ch);
//curl 닫기
curl_close($ch);
get_headers($url) : 이걸 쓰면 curl을 쓰지 않고도 해당 url의 헤더를 가져올 수 있다.
get_headers($url, 1) : 이렇게 쓰면 키 값이 인덱스 값으로 들어옴
curl 명령어는 터미널 창에서도 쓰이는 게 많기 때문에 curl cli 명령어도 많은 공부가 필요할 듯하다
밑에 명령어를 쓰려면 curl 버전이 중요하고 해당언어에서 쓰고 있는 curl 버전도 중요하다
curl -I --http2 $url : 이거하면 해당 url이 http1 인지 http2인지 알 수 있다.
count() : 가로안에 배열 넣으면 길이 나옴
for문 기본구조
for ($i = 0; $i < $n; $i++) {
echo "$i" . "입니다.<br>";
}
배열에 push하는 법
array_push($배열이름, "넣고자 하는거");
배열이나 변수의 값이 비었는지 확인하는 법
empty($확인하고자하는것) : 비었으면 1 들어있음 0반환
foreach 문에서 인덱스 값 얻는 법
foreach ($array as $key => $value) {
이렇게 쓰면 $key자리에 있는 게 인덱스 값이 된다
}
explode(delimiter, string [, limit ]) : 문자열을 분할하여 배열로 저장하는 함수
delimiter : 문자열을 분할할 기준을 정합니다.
string : 분할할 문자열입니다.
limit : 옵션으로, 분할할 개수를 정합니다. 정수를 입력합니다.
ex)) $divide = explode(' ',$k->plaintext); 뒤에값을 공백 단위로 나눠라
array_count_values() : 배열안에 값들이 몇번 중복되는 지 나열해준다 그래서 결과적으로는 키 값과
실제 값의 위치가 바뀐다
sort() - 배열을 오름차순(ascending order)으로 정렬
rsort() - 배열을 내림차순(descending order)으로 정렬
asort() - associative 배열을 오름차순으로 정렬, 값(value)에 따라
ksort() - associative 배열을 오름차순으로 정렬, 키(key)에 따라
arsort() - associative 배열을 내림차순으로 정렬, 값(value)에 따라
krsort() - associative 배열을 내림차순으로 정렬, 키(key)에 따라
array_slice($array,시작점,끝점-1) : 배열에서 인덱스 시작점부터 끝점 -1 까지 짤라서 반환
array_search(찾는값,$array) : 있으면 인덱스값 반환 없으면 false
preg_match("/[\xA1-\xFE]/", $m) : $m 값이 한글이 아닌 다른 값인지 찾을 수 있는 함수
unset($variableName) : 배열에서 $variableName 키에 해당하는 요소 삭제
gethostbyname(도메인주소) : 이러면 return 값으로 ip주소가 나온다 .
$_SERVER['DOCUMENT_ROOT'] : 사이트 루트의 물리적 경로. ex) /home/ksprg/www
$_SERVER['HTTP_ACCEPT_ENCODING'] : 인코딩 받식. ex) gzip, deflate
$_SERVER['HTTP_ACCEPT_LANGUAGE'] : 언어. ex) ko
$_SERVER['HTTP_USER_AGENT'] : 사이트 접속한 클라이언트 프로그램 정보.
ex) Mozilla/4.0(compatible; MSIE 7.0; Windows NT 5.1; Q312461; .NET CLR 1.0.370
$_SERVER['REMOTE_ADDR'] : 사이트 접속한 클라이언트의 IP. ex) 192.168.0.100
$_SERVER['HTTP_REFERER'] : 이전페이지 주소값
$_SERVER['SCRIPT_FILENAME'] : 실행되고 있는 파일의 전체경로. ex) /home/ksprg/www/index.php
$_SERVER['SERVER_NAME'] : 사이트 도메인 : roadrunner.tistory.com (virtual host에 지정한 도메인)
$_SERVER['HTTP_HOST'] : 사이트 도메인 : roadrunner.tistory.com (접속할 때 사용한 도메인)
$_SERVER['SERVER_PORT'] : 사이트 포트. ex) 80
$_SERVER['SERVER_SOFTWARE'] : 서버의 소프트웨어 환경
ex) Apache/1.3.23 (Unix) PHP/4.1.2 mod_fastcgi/2.2.10 mod_throttle/3.1.2 mod_ssl/2.8.6
$_SERVER['GATEWAY_INTERFACE'] : CGI 정보. ex) CGI/1.1
$_SERVER['SERVER_PROTOCOL'] : 사용된 서버 프로토콜. ex) HTTP/1.1
$_SERVER['REQUEST_URI'] : 현재페이지의 주소에서 도메인 제외. ex) /index.php?user=ksprg&name=hong
$_SERVER['PHP_SELF'] : 현재페이지의 주소에서 도메인과 넘겨지는 값 제외. ex) /test/index.php
파일명만 가져올때 : basename($_SERVER['PHP_SELF']);
$_SERVER['APPL_PHYSICAL_PATH'] : 현재페이지의 실제 파일 주소. ex) /home/ksprg/www/
$_SERVER['QUERY_STRING'] : GET 방식의 파일명 뒤에 붙어서 넘어오는 파라미터 값. ex) ?user=ksprg&name=hong
array_key_exists('apple', $arr) : apple라는 키가 $arr라는 배열안에 있는 지 확인하고 true false반환
parse_url(도메인) : parse_url 의 결과 변수로는 scheme host path query fragment 가 있으니
직접다 찍어봐야한다.
strpos(대상문자열, 찾고자하는 문자) : 찾고자 하는 문자가 있는 첫번째 인덱스를 반환한다.
getimagesize(얻고자하는 파일) : [0]Width 값 [1]Height 값 [2]Image Type Flag, 타입을 정수로 반환
[3] Width, Height값, [bits] 비트, [channels] channels ,[mime] 파일 mime-type;
$doc = str_get_html('<img data-src="foo">');
echo $doc->find('img', 0)->getAttribute('data-src'); 이렇게도 dom구조 찾기 가능
htmlspecialchars() :HTML 환경에서 < 또는 > 문자를 HTML 엔티티로 인코딩하여, 레이아웃이 깨지거나 스크립트 오류가 나는 것을 방지한다.
urlencode() : url에 문자를 표기하기 위한 문자 encoding 방법
urldecode() : urlencode의 반대
strip_tags(태그 제거할 문자열) : PHP 문자열에 섞여 있는 HTML, PHP 태그를 제거하는 함수
strlen() : 문자열 길이 반환
mb_strlen() : 문자열 길이 반환 UTF-8은 한글의 한문자를 3 Byte로 인식한다 그래서 한글이 포함
되어 있으면 이걸 써야함
substr('대상문자열', '문자열시작인덱스', '끝인덱스') : 대상문자열을 시작인데스 부터 끝인덱스
까지 조건에 맞게 자른다. 끝 인덱스 없어도 됨.
is_numeric(data): data값이 숫자인지 아닌지 판단해준다 이제 0 때문에 조건문에 2개 조건 넣을
필요없어짐
sleep() : 초 단위로 시간지연 안에 숫자넣으면 됨
header("Location: 가고 싶은 url");
die();