网络编程php,PHP网络编程(与网络互联)

一、 访问其他网站

① 直接以类似于访问自己硬盘上一个文本文件的方式来访问其他网站:fopen('http://www.example.com/','r');

# fopen用来打开网页时其参数不变(仍然是'r','w'和'a'),不过现在我们访问的其他网站,所以只能和只读('r')的方式打开

## 必须在文件夹之后加一个反斜杠,因为fopen()函数不支持重定向,否则将会出错。

### PS:若是想要实现此功能并长期使用之前,我们应该先去调查一下其他网站上检索数据的合法性。大部分网站包含具有版权的信息。

② 完整例子:<?php

if(isset($_GET['symbol']) && !empty($_GET['symnol'])) {

$url = sprintf('http://quote.yahoo.com/d/quotes.csv/s=%s&f=nl1',$_GET['symbol']);

$fp = fopen($url,'r');

$read = fgetcsv($fp);

fclose($fp);

if(strcasecmp($read[0], $_GET['symbol'] != 0 )){

echo '

The lastest value for '.$read[0].'( '.$_GET['symbol'].') is $ '.$read[1].'';

}else{

echo '

Invalid symbol
';

}

}

?>

二、PHP scoket编程

1. 含义

即两台计算机相互通信的通道

2. 使用

① 打开一个socket$fp = fsockopen($url,$port,$error_number,$error_string,$timeout);

# 参数对应

fsockopen(URL,端口号,一个存放错误编号的变量,一个存放错误信息字符串的变量,超时等待时间));

## 只有第一个参数是必要的

② purse_url()

这个函数输入一个URL,通过将其结构分解成几个部分来将其转变为一个关联数组

# 组成URL的几个基本部分分别为:协议名(scheme)、主机名(host)、端口号(port)、文件路径(path)、查询参数(query)

③ 完整例子<?php

function check_url($url){

$url_parse = parse_url($url);

$path = (isset($url_parse['path'])) ? $url_parse['path'] : '/';

$port = (isset($url_parse['port'])) ? $url_parse['port'] : '80';

if($fp = fsockopen($url_parse['host'], $port, $errno, $error, 30)){

$send = "HEAD $path HTTP/1.1\r\n";

$send .= "HOST:{$url_parse['host']}\r\n";

$send .= "CONNECTION:Close\r\n\r\n";

fwrite($fp, $send);

$data = fget($fp,128);

fclose($fp);

list($response,$code) = explode(' ', $data);

if($code == 200){

return array($code, 'good');

}else{

return array($code, 'bad');

}

}else{

return array($code, 'bad');

}

}

$urls = array(

'http://www.larryullman.com/',

'http://www.larryullman.com/wp-admin/',

'http://www.yiiframework.com/tutorials/',

'http://video.google.com/videoplay?docid=5137581991288263801&q=loose+change'

);

echo "

Validating URLs

";

set_time_limit(0);

foreach ($urls as $url) {

list($code, $class) = check_url($url);

echo '

$url($code)

\n';

}

?>

三、使用IP地址查询

下面的例子会使用一个与网络相关的PHP函数:gethostbyname()函数。该函数返回给定域名的IP地址。

要使用IP地址进行地理地址查询,必须连接到GeoIP数据库。这里使用由freegeoip.net提供的简单的在线服务

其请求路径格式要求为:http://freegeoip.net/(数据格式)/(要查询的IP地址)

完整示例如下:<?php

function show_ip_info($ip){

$url = 'http:/freegeoip.net/csv/' .$ip;

$fp = fopen($fp);

$read = fgetcsv($fp);

fclose($fp);

echo "

IP Address: $ip

Country:$read[2]

City, State:$read[5],$read[3]

Latitude:$read[7]

Longtude:$read[8]

";

}

echo '

Our spies tell us the following informatin about you
';

show_ip_info($_SERVER['REMOTE_ADDR']);

$url = 'www.etropy.ch';

echo '

Our spies tell us the following informatin about the URL $url

';

show_ip_info(gethostbyname($url));

?>

四、使用CURL

1. 初始化curl_init('www.example.com'); 或 curl_init();

2. 执行函数curl_exec($curl);

3. CURL方法:

① 如果发生错误,直接运行失败:CURLOPT_FAILONERRORcurl_setopt($curl, CURLOPT_FOLLOWERROR,1);

② 支持重定向:CURLOPT_FOLLOWLOCATIONcurl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

③ 设置是否将处理结果存入一个变量的选项:CURLOPT_RETURNTRANSFERcurl_setopt($curl, CURLOPT_RETURNTRANSFER,1);

④ 设置超时时间:CURLOPT_TIMEOUT

# 设置尝试执行该事务的时长,以秒为单位,在互联网的时间时,5秒简直就是“无限长”了curl_setopt($curl, CURLOPT_TIMEOUT, 5);

⑥ 设置curl使用POST方法:CURLOPT_POSTcurl_setopt($curl, CURLOPT_POST, 1);

⑦ 设置POST数据:CURLOPT_POSTFIELEDcurl_setopt($curl, CURLOPT_POSTFIELED, 'name=foo&pass=bar&format=csv');

⑧ 如果网页有HTTP身份验证保护,请使用如下设置:CURLOPT_USERPWDcurl_setopt($curl, CURLOPT_USERPWD, 'username:password');

4. 完整示例<?php

$url = 'http://localhost/service.php';

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_FAILONERROR, 1);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);;

curl_setopt($curl, CURLOPT_TIMEOUT, 5);

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, 'name=foo&pass=bar&format=csv');

$r = curl_exec($curl);

curl_close();

print_r($r);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值