PHP:6种GET和POST请求发送方法

简介:

php2 1


在i94web博客中,我试过了畅言和多说两种社会化评论框,后来还是抛弃了畅言,不安全。

无论是畅言还是多说,我都需要从远程抓取文章的评论数,然后存入本地数据库。对于多说,请求的格式如下:

// 获取评论次数,参数是文章ID
function getCommCount($postid)
{
    $jsondata = file_get_contents("http://api.duoshuo.com/threads/counts.json?short_name=i94web&threads=$postid"); // 设置true返回数组,不设置或者是false则返回对象 $resjson= json_decode($jsondata,true); return $resjson['response'][$postid]['comments'];
}

对于远程请求,有很多种方法。今天,LZ就搜罗了六种,供大家参考。

1、用file_get_contents 以get方式获取内容:

<?php
$url='http://www.ido321.com/';
$html = file_get_contents($url);
echo $html;
?>

2、用fopen打开url,用get方式获取

$fp = fopen($url, 'r');
stream_get_meta_data($fp);
while(!feof($fp)) {
$result .= fgets($fp, 1024);
}
echo "url body: $result";
fclose($fp);

3、用file_get_contents 以post方式获取内容:

$data = array ('foo' => 'bar');
$data = http_build_query($data);

$opts = array (
'http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencodedrn" . 'Content-Length: ' . strlen($data) . 'rn', 'content' => $data ) ); $context = stream_context_create($opts); $html = file_get_contents('http://localhost/e/admin/test.html', false, $context); echo $html;

    4、用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启

function get_url ($url,$cookie=false)
{
$url = parse_url($url);
$query = $url[path].'?'.$url[query];
echo 'Query:'.$query;
$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
if (!$fp) {
return false;
} else {
$request = 'GET $query HTTP/1.1rn';
$request .= 'Host: $url[host]rn';
$request .= 'Connection: Closern';
if($cookie) $request.='Cookie:  $cookien';
$request.='rn';
fwrite($fp,$request);
while(!@feof($fp)) {
$result .= @fgets($fp, 1024);
}
fclose($fp);
return $result;
}
}
//获取url的html部分,去掉header
function GetUrlHTML($url,$cookie=false)
{
$rowdata = get_url($url,$cookie);
if($rowdata)
{
$body= stristr($rowdata,'rnrn');
$body=substr($body,4,strlen($body));
return $body;
}

return false;
}

     5、用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

function HTTP_Post($URL,$data,$cookie, $referrer='')
{

// parsing the given URL
$URL_Info=parse_url($URL);

// Building referrer
if($referrer=='') // if not given use this script as referrer
$referrer='111';

// making string from $data
foreach($data as $key=>$value)
$values[]='$key='.urlencode($value);
$data_string=implode('&',$values);

// Find out which port is needed – if not given use standard (=80)
if(!isset($URL_Info['port']))
$URL_Info['port']=80;

// building POST-request:
$request.="POST ".$URL_Info['path']." HTTP/1.1n"; $request.="Host: ".$URL_Info['host']."n"; $request.="Referer: $referern"; $request.="Content-type: application/x-www-form-urlencodedn"; $request.='Content-length: '.strlen($data_string)."n"; $request.='Connection: closen'; $request.='Cookie: $cookien'; $request.='n'; $request.=$data_string.'n'; $fp = fsockopen($URL_Info['host'],$URL_Info['port']); fputs($fp, $request); while(!feof($fp)) { $result .= fgets($fp, 1024); } fclose($fp); return $result;
}

    6、使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展

$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, ‘http://www.ido321.com/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

echo $file_contents;


来源:51CTO

相关文章
|
12月前
|
安全 API PHP
PHP中实现CORS跨域资源共享的方法
通过这种方式,你可以在PHP应用中灵活地实现CORS,以支持跨域Web应用的需求。
769 15
|
Ubuntu PHP Apache
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
403 28
|
PHP 开发者
PHP数据验证方法:如何检查一个字符串是否是email格式。
以上就是关于PHP如何检查一个字符串是否是email格式的全部内容。希望你在代码书写旅途中,能找到你的北斗星——简洁、高效、可靠的代码验证方式。让我们共同见证PHP的强大和丰富多彩!
387 16
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
624 16
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
341 12
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
1076 4
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
574 0
PHP和Mysql前后端交互效果实现
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
767 17
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
582 18