ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î


PHP ·Î À¥ÆäÀÌÁö ±Ü¾î¿À±â ¸ðµç ¹æ¹ý ÃÑÁ¤¸®!
1³â Àü
php·Î À¥»ó(¿ø°Ý)¿¡ ÀÖ´Â ÆÄÀÏÀ» Àд ¹æ¹ýÀ¸·Î´Â ¾Æ·¡ÀÇ 4°¡Áö ¹æ¹ýÀ» »ç¿ëÇؼ­ ±¸ÇöÀÌ °¡´ÉÇÏ´Ù

1. fopen() ÇÔ¼ö »ç¿ë
2. file_get_contents() ÇÔ¼ö »ç¿ë
3. cURL ¶óÀ̺귯¸® »ç¿ë
4. phpÀÇ ¼ÒÄÏÅë½Å ÇÔ¼öµéÀ» »ç¿ë

1¹ø°ú 2¹ø ¹æ¹ýÀ» »ç¿ëÇϱâ À§Çؼ­´Â fopen wrapper °¡ »ç¿ë °¡´ÉÇؾßÇÑ´Ù. ÀÌ fopen wrapper ÆĶó¹ÌÅÍ´Â php.ini¿¡ Á¤ÀǵǾî ÀÖÀ¸³ª, ini_set()À» »ç¿ëÇؼ­ ½ÇÇà½Ã°£¿¡ ¹Ù²Ü¼ö´Â ¾ø´Ù.

ÀÌ µÎ ¹æ¹ýÀ» ¾µ¼ö ÀÖ´ÂÁöÀÇ ¿©ºÎ´Â ¾Æ·¡ ÄÚµå·Î È®ÀÎÇÒ¼ö ÀÖ´Ù

<?php
if (ini_get('allow_url_fopen') == '1') {
// fopen() À̳ª file_get_contents() »ç¿ë
} else {
// curl À̳ª ÇÔ¼ö Á÷Á¢ ÀÛ¼º
}
?>
1. fopen() ÇÔ¼ö »ç¿ë

fopen()À» »ç¿ëÇÏ´Â ¹ýÀº local ÆÄÀÏÀ» ÀÐ´Â°Í ¸¸Å­ ½±´Ù. À¯ÀÏÇÏ°Ô ´Ù¸¥Á¡Àº fopen()ÇÔ¼ö ³»¿¡ ÆÄÀÏ¸í ´ë½Å URLÀ» Àû´Â´Ù´Â °ÍÀÌ´Ù. ¾Æ·¡ ¿¹Á¦¸¦ º¸ÀÚ.

<?php
// ¿ø°Ý ÆÄÀÏÀ» »ç¿ëÇϱâ Àü¿¡ ¼º°øÀûÀ¸·Î open µÇ¾ú´ÂÁö È®ÀÎ
if ($fp = fopen('http://www.google.com/', 'r')) {
$content = '';
// ÀüºÎ ÀÐÀ»¶§±îÁö °è¼Ó ÀÐÀ½
while ($line = fread($fp, 1024)) {
$content .= $line;
}
// content »ç¿ë
// ...
} else {
// ÆÄÀÏ open½Ã ¿¡·¯ ¹ß»ý
}
?>
À§ ÄÚµåÁß while ¹Ýº¹¹®ÀÇ fread() ÇÔ¼ö´Â ÇÑ ·çÇÁ ¾È¿¡¼­ 1024 ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ Àбâ À§ÇØ »ç¿ëµÈ´Ù. ÀÌ ÄÚµå´Â ¾Æ·¡¿Í °°ÀÌ ¾µ¼öµµ ÀÖ´Ù.

<?php
// ¿ø°Ý ÆÄÀÏÀ» »ç¿ëÇϱâ Àü¿¡ ¼º°øÀûÀ¸·Î open µÇ¾ú´ÂÁö È®ÀÎ
if ($fp = fopen('http://www.google.com/', 'r')) {
$content = '';
// ÀüºÎ ÀÐÀ»¶§±îÁö °è¼Ó ÀÐÀ½
while ($line = fgets($fp, 1024)) {
$content .= $line;
}
// content »ç¿ë
// ...
} else {
// ÆÄÀÏ open½Ã ¿¡·¯ ¹ß»ý
}
?>
fread() ´ë½Å¿¡ ÃÖ´ë 1024¹ÙÀÌÆ®ÀÇ ¶óÀÎ ÇÑÁÙÀ» Àд fgets()¸¦ »ç¿ëÇß´Ù. ù¹ø° Äڵ尡 µÎ¹ø°º¸´Ù Á»´õ ¼±È£µÇ´Â ¹æ½ÄÀÌ´Ù.
¿ø°Ý¿¡ ÀÖ´Â ÆÄÀÏÀÌ 300Á٠¥¸® 50KB ÆÄÀÏÀ̶ó°í »ý°¢Çغ¸¸é, ù¹ø° ÄÚµå´Â ·çÇÁ°¡ 15¹ø Á¤µµ µ¹Å×Áö¸¸ µÎ¹ø° ÄÚµå´Â 300¹øÀÇ ·çÇÁ°¡ ½ÇÇàµÇ¾ß ÇÑ´Ù
¸¸¾à ÇÔ¼öÈ£Ãâ ºñ¿ë°ú ½Ã°£À» °í·ÁÁßÀ̶ó¸é ù¹ø° ¹æ¹ýÀÌ È®½ÇÈ÷ ³ªÀº ¹æ¹ýÀÌ´Ù

2. file_get_contents() ÇÔ¼ö »ç¿ë
°¡Àå °£´ÜÇؼ­ ³»°¡ °¡Àå ¼±È£ÇÏ´Â ¹æ¹ýÀÌ´Ù. ´ÜÁö ÆĶó¸ÞÅ͸¦ url·Î ÁÖ°í ÇÔ¼ö¸¦ È£ÃâÇϱ⸸ ÇÏ¸é µÈ´Ù. ÇÑ°¡Áö ±â¾ïÇؾßÇÒ Á¡Àº ¸®ÅϹÞÀº °ªÀ» »ç¿ëÇϱâ Àü¿¡ error°¡ ¸®ÅÏ ‰ç´ÂÁö È®ÀÎ ¸ÕÀú ÇؾßÇÑ´Ù´Â °Í.

<?php
$content = file_get_contents('http://www.google.com/');
if ($content !== false) {
// content »ç¿ë
} else {
// error ¹ß»ý
}
?>
3. cURL ¶óÀ̺귯¸® »ç¿ë
À§ÀÇ µÎ ¹æ¹ý°ú´Â ´Ù¸£°Ô CURLÀ» ¾²´Â ¹æ¹ýÀº µü ºÎ·¯Áö°Ô ¼³¸íÇϱâ Èûµé´Ù. ÀÌ ¶óÀ̺귯¸®´Â (http»Ó¸¸ ¾Æ´Ï¶ó) ´Ù¸¥ ÇÁ·ÎÅäÄÝ °£ÀÇ ¿¬°á°ú Åë½ÅÇÏ´Â µ¥¿¡ ¸Å¿ì À¯¿ëÇϱ⠾²À̱ä ÇÏÁö¸¸ ¹è¿ì´Âµ¥ ½Ã°£À» Á» µé¿©¾ß ÇÑ´Ù. ¶Ç ´Ù¸¥ ¹®Á¦´Â ¸ðµç web hostµé(¼­¹ö)ÀÌ ÀÌ php ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÏÁö´Â ¾Ê¾Ò´Ù´Â°Í. µû¶ó¼­ ÀÌ ¹æ¹ýÀ» ¾²±â Àü¿¡ ÇØ´ç ¶óÀ̺귯¸®°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö ¸ÕÀú È®ÀÎ ÇؾßÇÑ´Ù
´ÙÀ½Àº ÀÌ CURL¶óÀ̺귯¸®¸¦ È°¿ëÇؼ­ ¿ø°Ý ÆÄÀÏÀ» ¿©´Â °£´ÜÇÑ ¿¹Á¦´Ù

<?php
// curlÀÌ ¼³Ä¡ µÇ¾ú´ÂÁö È®ÀÎ
if (function_exists('curl_init')) {
// curl ¸®¼Ò½º¸¦ ÃʱâÈ­
$ch = curl_init();

// urlÀ» ¼³Á¤
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');

// Çì´õ´Â Á¦¿ÜÇÏ°í content ¸¸ ¹ÞÀ½
curl_setopt($ch, CURLOPT_HEADER, 0);

// ÀÀ´ä °ªÀ» ºê¶ó¿ìÀú¿¡ Ç¥½ÃÇÏÁö ¸»°í °ªÀ» ¸®ÅÏ
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// ºê¶ó¿ìÀúó·³ º¸À̱â À§ÇØ user agent »ç¿ë
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');

$content = curl_exec($ch);

// ¸®¼Ò½º ÇØÁ¦¸¦ À§ÇØ ¼¼¼Ç ¿¬°á ´ÝÀ½
curl_close($ch);
} else {
// curl ¶óÀ̺귯¸®°¡ ¼³Ä¡ µÇÁö ¾ÊÀ½. ´Ù¸¥ ¹æ¹ý ¾Ë¾Æº¼ °Í
}
?>
¸î°¡Áö °æ¿ì¿¡´Â file_get_contents()³ª fopen() À» ¾²´Â°Íº¸´Ù CURLÀÌ ´õ ºü¸£´Ù. ÀÌ°ÍÀº CURLÀÌ ±âº»ÀûÀ¸·Î ¾ÐÃà ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇϱ⠶§¹®ÀÌ´Ù (¿¹¸¦µé¸é gzip).
Å©°í ÀÛÀº ¸¹Àº »çÀÌÆ®¿¡¼­ bandwidth¸¦ ÁÙÀ̱â À§ÇØ ±×µé ÆäÀÌÁö¿¡¼­ gzip ¾ÐÃàÀ» »ç¿ëÇÑ´Ù. ÀÌ »çÀÌÆ®µµ gzip ¾ÐÃàÀ» »ç¿ëÇß°í, bandwidth°¡ Àý¹ÝÀ¸·Î ÁÙ¾ú´Ù. ¸¸¾à ±â´Ù¸®±â ½È¾îÇϴ ŸÀÔÀ̶ó¸é CURLÀÌ °¡Àå Àû´çÇÒ°ÍÀÌ´Ù

4. phpÀÇ ¼ÒÄÏÅë½Å ÇÔ¼öµéÀ» »ç¿ë
ÃÖ¾ÇÀÇ °æ¿ì¿¡´Â ¼­¹öÀÇ fopen wrapper ¿É¼Çµµ ²¨Á®ÀÖ°í, CURL ¶óÀ̺귯¸®µµ ÀνºÅç µÇÁö ¾Ê¾ÒÀ»¼öµµ ÀÖ´Ù. ÀÌ »óȲ¿¡¼­´Â ¿ì¸®°¡ ¾µ ÇÔ¼ö¸¦ Á÷Á¢ ¸¸µé¾î¾ß ÇÑ´Ù.
¿ì¸®ÀÇ ÇÔ¼ö´Â ´ë»ó ÆÄÀÏÀÇ url ÆĶó¹ÌÅÍ ÇÑ°³¸¦ °®´Â getRemoteFile() ÇÔ¼ö·Î ¸í¸íÇß´Ù. ´ë·«ÀûÀÎ »À´ë´Â ¾Æ·¡¿Í °°´Ù

<?php
function getRemoteFile($url)
{
// 1. host name°ú url path °ªÀ» ȹµæ
// 2. ¿ø°Ý ¼­¹ö¿¡ Á¢¼Ó
// 3. ÆÄÀÏÀ» ¾ò±âÀ§ÇØ ÇÊ¿äÇÑ Çì´õµéÀ» Àü¼Û
// 4. ¿ø°Ý ¼­¹ö·ÎºÎÅÍ ÀÀ´ä ¹ÞÀ½
// 5. header ºÎºÐ °È¾î³¿
// 6. ÆÄÀÏ content ¸®ÅÏ
}
?>
url¿¡¼­ host name°ú url path ¸¦ ÃßÃâÇϱâÀ§Çؼ­´Â parse_url() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. ÀÌ ÇÔ¼ö¿¡ ³Ñ°ÜÁø urlÀº ´ÙÀ½ Ç׸ñµé·Î ºÐ¸®µÉ °ÍÀÌ´Ù
scheme
host
port
user
pass
path
query
fragment

¿¹¸¦µé¸é, http://www.php-mysql-tutorial.com/somepage.php Àº ¾Æ·¡¿Í °°ÀÌ ¸®ÅϵȴÙ

<?php
Array
(
[scheme] => http
[host] => www.php-mysql-tutorial.com
[path] => /somepage.php
)
?>
¸¸¾à http://myusername:mypassword@www.php-mysql-tutorial.com/somepage.php?q=whatsthis#ouch ¶ó¸é ¾Æ·¡¿Í °°ÀÌ ¸®ÅϵȴÙ

<?php
Array
(
[scheme] => http
[host] => www.php-mysql-tutorial.com
[user] => myusername
[pass] => mypassword
[path] => /somepage.php
[query] => q=whatsthis
[fragment] => ouch
)
?>
¿ì¸®°¡ °ü½ÉÀִ°ÍÀº host, port, path, query °ª »ÓÀÌ´Ù
¿ø°Ý ¼­¹ö¿ÍÀÇ connectionÀ» »ý¼ºÇϱâ´Â À§Çؼ­ fsockopen()À» »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö´Â [hostname, port number, error number Æ÷ÀÎÅÍ, error message Æ÷ÀÎÅÍ, ½Ã°£Á¦ÇÑ] 5°³ÀÇ ÀÎÀÚ¸¦ °¡Áö°í ÀÖ´Ù

<?php
function getRemoteFile($url)
{
// host name °ú url path °ªÀ» ȹµæ
$parsedUrl = parse_url($url);
$host = $parsedUrl['host'];
if (isset($parsedUrl['path'])) {
$path = $parsedUrl['path'];
} else {
// urlÀÌ http://www.mysite.com °°Àº Çü½ÄÀ̶ó¸é
$path = '/';
}

if (isset($parsedUrl['query'])) {
$path .= '?' . $parsedUrl['query'];
}

if (isset($parsedUrl['port'])) {
$port = $parsedUrl['port'];
} else {
// ´ëºÎºÐÀÇ »çÀÌÆ®µéÀº 80Æ÷Æ®¸¦ »ç¿ë
$port = '80';
}

$timeout = 10;
$response = '';
// ¿ø°Ý ¼­¹ö¿¡ Á¢¼ÓÇÑ´Ù
$fp = @fsockopen($host, $port, $errno, $errstr, $timeout );

if( !$fp ) {
echo "Cannot retrieve $url";
} else {
// ÇÊ¿äÇÑ Çì´õµé Àü¼Û
fputs($fp, "GET $path HTTP/1.0\r\n" .
"Host: $host\r\n" .
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\r\n" .
"Accept: */*\r\n" .
"Accept-Language: en-us,en;q=0.5\r\n" .
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" .
"Keep-Alive: 300\r\n" .
"Connection: keep-alive\r\n" .
"Referer: http://$host\r\n\r\n");

// ¿ø°Ý ¼­¹ö·ÎºÎÅÍ response ¹ÞÀ½
while ( $line = fread( $fp, 4096 ) ) {
$response .= $line;
}

fclose( $fp );

// header ºÎºÐ °È¾î³¿
$pos = strpos($response, "\r\n\r\n");
$response = substr($response, $pos + 4);
}

// ÆÄÀÏÀÇ content ¸®ÅÏ
return $response;
}
?>
À§ÀÇ Äڵ忡¼­´Â 9ÁÙÀÇ Çì´õ Á¤º¸¸¦ º¸³»Áö¸¸ »ç½Ç óÀ½ 2ÁÙ¸¸ Çʼö»çÇ×ÀÌ´Ù. µû¶ó¼­ ÀÌ·¸°Ô¸¸ º¸³»µµ µÈ´Ù
fputs($fp, "GET $path HTTP/1.0\r\n" . "Host: $host\r\n\r\n");
¾Æ¸¶ ´ëºÎºÐÀÇ °æ¿ì Àß µ¿ÀÛÇÒÅ×Áö¸¸ Ç×»ó Àß µ¿ÀÛÇϴ°ÍÀº ¾Æ´Ï´Ù. ¿­°íÀÚ ÇÏ´Â ÆÄÀϵéÀº ¿ø°Ý ¼­¹ö¿¡ ÀúÀåµÇ¾î Àֱ⶧¹®¿¡, ¿ø°Ý ¼­¹ö°¡ request¿¡ response ÇÏ´ÂÁö ¾ÈÇÏ´ÂÁö¿¡ ´Þ·ÁÀÖ´Ù

¸î¸î ¼­¹ö´Â request Çì´õ¿¡ referer Ç׸ñÀÌ ¾ø´Ù¸é block ÇÒ°ÍÀÌ°í, ¸î¸îÀº ƯÁ¤ user agent ¸¸ ¹Þ¾ÆµéÀÏ °ÍÀÌ´Ù. ¶Ç ¾î¶² °ÍµéÀº cookie°¡ ¼³Á¤µÇ¾î ÀÖ´Â header¸¸ ¹ÞÀ» °ÍÀÌ´Ù

ƯÁ¤ ¿ø°Ý ÆÄÀÏÀ» ¿©´Âµ¥¿¡ ¾î¶² Çì´õ°¡ º¸³»Á®¾ß ÇÏ´ÂÁö ¾Ë°í ½Í´Ù¸é ÆÄÀ̾îÆø½º¿Í live http headers plugin ÅøÀ» »ç¿ëÇØ º¸¶ó. ÀÛ°í °­ÇÑ ÅøÀÌ´Ù
ÃßõÃßõ : 46 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
1,312
preg match¿¡ °üÇÑ Á¤±Ô½Ä
1,311
PHP $ SERVER ȯ°æ º¯¼ö Á¤¸®
1,310
PHP ÇöÀç ÆäÀÌÁöÀÇ µµ¸ÞÀθíÀ̳ª urlµîÀÇ Á¤º¸ ¾Ë¾Æ¿À±â
1,309
PHP preg match all()
PHP ·Î À¥ÆäÀÌÁö ±Ü¾î¿À±â ¸ðµç ¹æ¹ý ÃÑÁ¤¸®!
1,307
[PHP] ¿ø°ÝÁö ÆÄÀÏ ÁÖ¼Ò ³ëÃâ ¾ÈÇÏ°í curl·Î ´Ù¿î·Îµå ¹Þ±â
1,306
PHP ÇÔ¼ö Á¤¸®
1,305
PHP ¹è¿­¿¡¼­ ¹«ÀÛÀ§·Î Çϳª »Ì¾ÆÁÖ´Â array rand() ÇÔ¼ö
1,304
PHP Á¤±Ô½Ä Á¤¸®
1,303
PHP Á¤±Ô½ÄÀ» È°¿ëÇÑ ÅÂ±× ¹× ƯÁ¤ ¹®ÀÚ¿­ Á¦°Å ¹× ÃßÃâ ¹æ¹ý
1,302
php Å©·Ñ¸µ ¶Ç´Â ÆÄ½Ì ÇÔ¼ö, Á¤±Ô½Ä ¸ðÀ½
1,301
Á¦ÀÌÄõ¸® ±âº» ¸í·É¾î
1,300
PHP ÆÄÀÏ Á¸Àç ¿©ºÎ ÆľÇÇϱâ(·ÎÄà ÆÄÀÏ Á¸Àç ¹× ¿ø°ÝÁö ÆÄÀÏ Á¸Àç)
1,299
ÅÂ±× »çÀÌ¿¡ ÀÖ´Â ÅؽºÆ®¸¦ ÃßÃâ
1,298
»ç¿ëÀÚ ÇÔ¼ö ¸ðÀ½
1,297
¸¶¿ì½º,Å°º¸µå Á¦ÇÑ ( ¿À¸¥ÂÊŬ¸¯,µå·¡±×,¿µ¿ª¼±Åõî..)
1,296
PHP - ƯÁ¤ ÅÂ±× ¹× ¹®ÀÚ¿­ ÃßÃâ, Á¦°Å
1,295
[PHP] define°ú definedÀÇ Â÷ÀÌ
1,294
¿ìŬ¸¯ ¿Ïº®Â÷´Ü ½ºÅ©¸³Æ®
1,293
[PHP] dirname()ÇÔ¼ö¿Í $_SERVER °ü·Ã »ó¼öµé
1,292
[PHP] ÆÄÀÏ Å©±â, »çÀÌÁî ºÒ·¯¿À´Â ÇÔ¼ö, filesize()
1,291
[jQuery] jQuery Quick API
1,290
PHP 5.3.0 ¿¡¼­ »ç¶óÁø ÇÔ¼öµé ´ëü
1,289
¾î¶² ÆÄÀϵéÀÌ include ³ª require µÇ¾ú´ÂÁö È®ÀÎÇÏ´Â ÇÔ¼ö(get_included_files)
1,288
°ªÀÌ ¹è¿­ ¾È¿¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÏ´Â in_arrayÇÔ¼ö
1,287
UTF8 ÇÑ±Û ÀÚ¸£±â..
1,286
iconv ¿¡·¯ ¹ß»ý½Ã °è¼Ó ó¸®Çϱ⠿ɼÇ
1,285
[PHP] ÇöÀç ÆäÀÌÁöÀÇ µµ¸ÞÀÎ , URL Á¤º¸ ¾Ë¾Æ³»±â.
1,284
[PHP] ¸·°­ ±â´É ¹è¿­..
1,283
[JqueryMobile] - ÇöÀçÈ­¸éÀÇ °¡·Î¼¼·Î »çÀÌÁî ±¸Çϱâ
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.