레이블이 PHP인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PHP인 게시물을 표시합니다. 모든 게시물 표시

2014년 1월 26일 일요일

MySQL 연동하기

PHP에서 MySQL에 연결해서 쿼리를 보내 결과를 출력하는 예제이다.

자주 쓰지만 쓸 때마다 찾아서 쓰게된다..

이런 기본적인 소스는 저장 해놨다가 꺼내 써야지 ㅋㅋ
<?php
$mysqli = mysqli_connect("localhost", "root", "passwd", "test", 3306);

if (mysqli_connect_errno($mysqli)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$res = mysqli_query($mysqli, "SELECT a FROM t");

while($row = mysqli_fetch_assoc($res)) {
echo $row['a'];
}
?>

 

2014년 1월 18일 토요일

타겟 서버의 헤더 가져오기

서버 시간 확인하기 사이트를 보신 분들 중에 궁금증을 가지신 분들이 있을 것 같습니다.

(보는 사람도 없지만 혼자서..그렇다고 생각하고...ㅋㅋ)

웹을 통해서는 서버에 접속할 방법이 없죠..

서버에 접속을 하지 못하면 해당 서버의 시간이나 다른 정보들을 확인할 수 없습니다.

그런데 어떻게 다른 서버의 시간을 확인한단 말인가?!



네, 그렇습니다..



웹을 통해서 HTTP 프로토콜로 통신을 할 때는 항상 서버와 클라이언트 간에 헤더를 주고 받습니다.

이 헤더에 바로 서버의 시간이 들어가 있는 것이죠!

그렇다면 어떻게 그 헤더를 확인할까요?

PHP에서는 아래와 같은 함수를 제공해서 쉽게 헤더의 정보를 확인할 수 있습니다.
<pre>
<?php
    print_r(get_headers("http://www.google.com"));
?>
</pre>

get_headers 함수를 사용하면 헤더의 정보를 배열로 가지고 옵니다.

아래와 같이 출력이 되죠..
Array
(
    [0] => HTTP/1.0 200 OK
    [1] => Date: Fri, 17 Jan 2014 05:54:31 GMT
    [2] => Expires: -1
    [3] => Cache-Control: private, max-age=0
    [4] => Content-Type: text/html; charset=ISO-8859-1
    [5] => Set-Cookie: PREF=ID=ba7f1efc9ec1115d:FF=0:TM=1389938071:LM=1389938071:S=2t679jx5Jn1jQBKx; expires=Sun, 17-Jan-2016 05:54:31 GMT; path=/; domain=.google.com
    [6] => Set-Cookie: NID=67=Hjk8uiYHUXHHR0Mwp6GvSpXdztd5xvPmeVWrxa33pcaljTShBUGl2YoRbk3hrSFXxeUbyQy9Uv1FggIXD87__YjW9jh5YjDTV052pVdxEzZkn9uDu9-GAc0eZ1DbgP7r; expires=Sat, 19-Jul-2014 05:54:31 GMT; path=/; domain=.google.com; HttpOnly
    [7] => P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
    [8] => Server: gws
    [9] => X-XSS-Protection: 1; mode=block
    [10] => X-Frame-Options: SAMEORIGIN
    [11] => Alternate-Protocol: 80:quic
)

배열을 숫자가 아닌 key 형태로 가져오고 싶을 땐 get_headers 함수에 파라미터 하나만 더 추가해 주면 됩니다.
<pre>
<?php
    print_r(get_headers("http://www.google.com", 1));
?>
</pre>

그럼 아래와 같이 key 형태의 배열로 값을 가져오게 됩니다.
Array
(
    [0] => HTTP/1.0 200 OK
    [Date] => Fri, 17 Jan 2014 05:56:25 GMT
    [Expires] => -1
    [Cache-Control] => private, max-age=0
    [Content-Type] => text/html; charset=ISO-8859-1
    [Set-Cookie] => Array
        (
            [0] => PREF=ID=8f419d80f7122ce6:FF=0:TM=1389938185:LM=1389938185:S=ke8O3WHqhTOLocAD; expires=Sun, 17-Jan-2016 05:56:25 GMT; path=/; domain=.google.com
            [1] => NID=67=oFNKouP20OJI0pI_2yjJ5TmOmYfXO_L3vS7GMET9g1t6hfUm4oDoozDDFy9Ox5Xw3Icqt04J6D5NZt2cIQmyw4wh7re3xUgrV4llSP2SLA5DX-xnwMQRZm1em98yEOat; expires=Sat, 19-Jul-2014 05:56:25 GMT; path=/; domain=.google.com; HttpOnly
        )

    [P3P] => CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
    [Server] => gws
    [X-XSS-Protection] => 1; mode=block
    [X-Frame-Options] => SAMEORIGIN
    [Alternate-Protocol] => 80:quic
)

저~기에 Date가 보이시죠?ㅎㅎ

저 값이 바로 서버에서 클라이언트로 response를 보낸 시간입니다.

서버의 정확한 시간을 알아내려면 한가지 숙제가 남아있죠!



바로 오차 줄이기 입니다..

클라이언트와 서버 간에 데이터를 주고 받는 데 발생하는 시간적 오차입니다.

그건 여러분이 한번 생각해 보시기 바랍니다! ^^

허접하지만 소스는 GitHub를 통해 공유했습니다.