php.ini 파일에 allow_url_fopen=on으로 설정되어 있으면, URL 주소로 파일 읽어올 때 다음과 같이 처리하면 됩니다.
<?php
$fp = fopen($url, "r");
while (!feof($fp)) {
$retVal .= fgets($fp, 1024);
}
fclose($fp);
echo($retVal);
?>
하지만 allow_url_fopen=off로 설정되어 있는 경우,
일단 php.ini 파일을 수정하면 됩니다.
벗뜨~~ 웹 호스팅을 하는 경우 php.ini 파일을 직접 수정할 수 없는 경우가 있죠~
이런 경우의 해결책을 찾아보니 다음과 같이 socket을 이용해 URL주소를 읽어오는 방법이 있었슴다..
<?php
$url = "URL 주소";
$info = parse_url($url);
$send = "POST " . $info["path"] . " HTTP/1.1\r\n"
. "Host: " . $info["host"] . "\r\n"
. "Content-type: application/x-www-form-urlencoded\r\n"
. "Content-length: " . strlen($info["query"]) . "\r\n"
. "Connection: close\r\n\r\n" . $info["query"];
$fp = fsockopen($info[host], 80);
fputs($fp, $send);
$start = false;
$retVal = "";
while (!feof ($fp)) {
$tmp = fgets($fp, 1024);
if ($start == true) $retVal .= $tmp;
if ($tmp == "\r\n") $start = true;
}
fclose($fp);
echo($retVal);
?>
추가적으로 GET 방식 호출은 다음과 같이 할 수도 있습니다.
<?php
$url = "URL 주소";
$info = parse_url($url);
$host = $info["host"];
$port = $info["port"];
if ($port == 0) $port = 80;
$path = $info["path"];
if ($info["query"] != "") $path .= "?" . $info["query"];
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
$fp = fsockopen($host, $port, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno) <br>\n";
}
else {
fputs($fp, $out);
$start = false;
$retVal = "";
while(!feof($fp)) {
$tmp = fgets($fp, 1024);
if ($start == true) $retVal .= $tmp;
if ($tmp == "\r\n") $start = true;
}
fclose($fp);
echo $retVal;
}
?>
'Program(Down,Int) > (php)Web_program' 카테고리의 다른 글
무료 PHP 인코더(암호화) (0) | 2009.10.15 |
---|---|
DeZend (PHP 디코딩) (0) | 2009.10.15 |
.htaccess allow_url_fopen 설정하기 (0) | 2009.02.10 |
서버 접속이 불가능한 상태거나 시간대에 자동 페이지 이동 - 개발자 키놀(kinor) (0) | 2009.02.05 |
파일 있는지 확인하고, 내용을 문자열로 가져오기 (0) | 2009.01.22 |