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


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 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
2,885
input ÀÔ·Â ÇÊµå ¾ÕµÚ °ø¹é ½Ç½Ã°£ Á¦°Å
2,884
Placeholder Æ÷Ä¿½º½Ã °¨Ãß±â
2,883
MySQL Áߺ¹µÈ µ¥ÀÌÅ͸¦ »èÁ¦
2,882
MySQL Áߺ¹ µ¥ÀÌÅÍ È®ÀÎ
2,881
sessionStorage.getItem ¿Í sessionStorage.setItem
2,880
Á¦ÀÌÄõ¸® ·£´ýÀ¸·Î ¹è°æ»ö º¯°æ
2,879
preg match¿¡ °üÇÑ Á¤±Ô½Ä
2,878
Stream an audio file with MediaPlayer ¿Àµð¿À ÆÄÀÏ ½ºÆ®¸®¹Ö Çϱâ
2,877
Audio Streaming PHP Code
2,876
PHP $ SERVER ȯ°æ º¯¼ö Á¤¸®
2,875
Vimeo (ºñ¸Þ¿À) API ¸¦ »ç¿ëÇÏ¿© Ç÷¹À̾î ÄÁÆ®·ÑÇϱâ
2,874
iframe »ç¿ë½Ã ÇÏ´Ü¿¡ ¹ß»ýÇÏ´Â °ø¹é Á¦°Å¹æ¹ý
2,873
¾ÆÀÌÇÁ·¹ÀÓ(iframe) Àüüȭ¸é °¡´ÉÇÏ°Ô Çϱâ
2,872
ºÎÆ®½ºÆ®·¦(bootstrapk)¿¡¼­ »ç¿ëÇÏ´Â class¸í Á¤¸®
2,871
ºÎÆ®½ºÆ®·¦ CSS
2,870
Å©·Ò¿¡¼­ ¸¶Áø Á¶Àý
2,869
PHP ÇöÀç ÆäÀÌÁöÀÇ µµ¸ÞÀθíÀ̳ª urlµîÀÇ Á¤º¸ ¾Ë¾Æ¿À±â
2,868
PHP preg match all()
PHP ·Î À¥ÆäÀÌÁö ±Ü¾î¿À±â ¸ðµç ¹æ¹ý ÃÑÁ¤¸®!
2,866
[PHP] ¿ø°ÝÁö ÆÄÀÏ ÁÖ¼Ò ³ëÃâ ¾ÈÇÏ°í curl·Î ´Ù¿î·Îµå ¹Þ±â
2,865
PHP ÇÔ¼ö Á¤¸®
2,864
¾ÆÀÌÇÁ·¹ÀÓ(iframe) ºñÀ² À¯ÁöÇϸ鼭 Å©±â Á¶ÀýÇÏ´Â ¹æ¹ý
2,863
PHP ¹è¿­¿¡¼­ ¹«ÀÛÀ§·Î Çϳª »Ì¾ÆÁÖ´Â array rand() ÇÔ¼ö
2,862
PHP Á¤±Ô½Ä Á¤¸®
2,861
PHP Á¤±Ô½ÄÀ» È°¿ëÇÑ ÅÂ±× ¹× ƯÁ¤ ¹®ÀÚ¿­ Á¦°Å ¹× ÃßÃâ ¹æ¹ý
2,860
php Å©·Ñ¸µ ¶Ç´Â ÆÄ½Ì ÇÔ¼ö, Á¤±Ô½Ä ¸ðÀ½
2,859
Á¦ÀÌÄõ¸® ±âº» ¸í·É¾î
2,858
À¥ÆäÀÌÁö °¡·Î ¸ðµå¼¼·Î ¸ðµå ÀνÄÇϱâ
2,857
¸ð¹ÙÀÏ À¥ È­¸é °­Á¦ ȸÀü(°¡·Î¸ðµå °íÁ¤)
2,856
[HTML5]¿¡¼­ frameset ´ëü ¹æ¹ý°ú iframe ¼Ó¼º
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.