php模拟post提交数据,用处很多,可用来网站的采集,登陆等等

1. [代码][PHP]代码     

<?php//以程序登陆一个论坛登录为例
function bbslogin($user_login, $password, $host, $port = "80") {//需要提交的post数据$argv = array('cookie' => array('user_login' => $user_login, 'password' => $password, '_wp_http_referer' => '/bbpress/', 're' => '', 'remember' => true));foreach ($argv['cookie'] as $key => $value) {$params[] = $key . '=' . $value;}$params = implode('&', $params);$header = "POST /bbpress/bb-login.php HTTP/1.1\r\n";$header .= "Host:$host:$port\r\n";$header .= "Content-Type: application/x-www-form-urlencoded\r\n";$header .= "Content-Length: " . strlen($params) . "\r\n";$header .= "Connection: Close\r\n\r\n";$header .= $params;$fp = fsockopen($host, $port);fputs($fp, $header);while (!feof($fp)) {$str = fgets($fp);//以下是自己的逻辑代码,这主要是模拟cookie,可用来同步登陆if (!(strpos($str, "Set-Cookie:") === false)) {$tmparray = explode(" ", $str);$cookiearray = explode("=", $tmparray[1]);$cookiepaths = explode("=", $tmparray[6]);$cookiename = urldecode($cookiearray[0]);$cookievalue = urldecode(substr($cookiearray[1], 0, strlen($cookiearray[1]) - 1));$cookietime = time() + 3600 * 24 * 7;$cookiepath = urldecode(substr($cookiepaths[1], 0, strlen($cookiepaths[1]) - 1));setcookie($cookiename, $cookievalue, $cookietime, $cookiepath);}}fclose($fp);
}
?>

2. [代码][PHP]代码    

<?php 
// PHP POST数据的三种方法
// php有三种方法可以post数据,分别为Curl、socket、file_get_contents:/*** Socket版本* 使用方法:* $post_string = "app=socket&version=beta";* request_by_socket('facebook.cn','/restServer.php',$post_string);*/
function request_by_socket($remote_server, $remote_path, $post_string, $port = 80, $timeout = 30)
{$socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);if (!$socket) die("$errstr($errno)");fwrite($socket, "POST $remote_path HTTP/1.0\r\n");fwrite($socket, "User-Agent: Socket Example\r\n");fwrite($socket, "HOST: $remote_server\r\n");fwrite($socket, "Content-type: application/x-www-form-urlencoded\r\n");fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . '\r\n');fwrite($socket, "Accept:*/*\r\n");fwrite($socket, "\r\n");fwrite($socket, "mypost=$post_string\r\n");fwrite($socket, "\r\n");$header = "";while ($str = trim(fgets($socket, 4096))) {$header .= $str;} $data = "";while (!feof($socket)) {$data .= fgets($socket, 4096);} return $data;
} /*** Curl版本* 使用方法:* $post_string = "app=request&version=beta";* request_by_curl('http://facebook.cn/restServer.php',$post_string);*/
function request_by_curl($remote_server, $post_string)
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $remote_server);curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_USERAGENT, "Jimmy's CURL Example beta");$data = curl_exec($ch);curl_close($ch);return $data;
} /*** 其它版本* 使用方法:* $post_string = "app=request&version=beta";* request_by_other('http://facebook.cn/restServer.php',$post_string);*/
function request_by_other($remote_server, $post_string)
{$context = array('http' => array('method' => 'POST','header' => 'Content-type: application/x-www-form-urlencoded' .'\r\n'.'User-Agent : Jimmy\'s POST Example beta' .'\r\n'.'Content-length:' . strlen($post_string) + 8,'content' => 'mypost=' . $post_string));$stream_context = stream_context_create($context);$data = file_get_contents($remote_server, false, $stream_context);return $data;
} ?>

转载于:https://www.cnblogs.com/wellsoho/p/3568464.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关闭SQLite3中的journal暂存档

相信很多使用SQLite3当做数据库的人都会一个现象&#xff0c;那就是当SQLite3有做写入的动作时&#xff0c;SQLite3会自动产生一个名为"数据库名称-journal"的暂存档。这是做什么用的呢? 答案是用来Rollback &#xff0c;换句话说&#xff0c;就是当数据写入数据库有…

linux中gid和groups区别,linux用户与组管理

linux安全系统的核心是用户账户&#xff0c;每个使用者使用一个账户名及与该账户关联的密码登入linux系统。使用者对系统资源的访问权限取决于其登录时所用的账户。每个账户在创建时会被分配一个惟一的标识UID&#xff0c;用户权限便是根据UID来跟踪的。每个账户可以选择加入某…

Win8 IIS 安装和部署网站问题

安装IIS 比较win7的安装来说&#xff0c;多选了几个钩钩&#xff0c;不然会报错&#xff0c;偶就遇到这样的错误。 控制面板-》程序和功能-》启动和关闭windows功能&#xff0c;钩钩图例&#xff1a; 安装好iis后 在控制面板-》管理工具 目前只用过iis 信息管理器。 6.0 大概…

sqlite3 journal

sqlite3默认会开启journal&#xff0c;为了进行rollback。但是在突然断电的情况下&#xff0c;journal文件很容易就损坏了。 目前还没有发现数据库文件本身被损坏的情况。 一旦journal文件损坏&#xff0c;就没法打开数据库文件了。但是可以把journal机制关闭。 一旦journa…

linux 计划任务 实例,计划任务 cron 的配置和实例

1、计划任务概说&#xff1b;计划任务&#xff0c;是任务在约定的时间执行已经计划好的工作&#xff0c;这是表面的意思。在Linux中&#xff0c;我们经常用到 crond服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的作务。比如我们可以在配置文件中约定…

产品经理们都是怎样成为产品经理的?

一百多个回答中发现很多人的答案讲得是做产品经理之前大家是做什么的或者产品经理是做什么的&#xff0c;这样又造成恶性循环让更多的人这样回答&#xff0c;不过问题本身的描述就有误导性&#xff0c;不怪回答者。我想问问题的人其实是想知道或者说想让别人知道&#xff0c;在…

QString与中文问题

QString 与中文问题2010-07-11 17:04(更新&#xff1a;本文的姊妹篇 Qt中translate、tr关系 与中文问题 )首先呢&#xff0c;声明一下&#xff0c;QString 是不存在中文支持问题的&#xff0c;很多人遇到问题&#xff0c;并不是本身 QString 的问题&#xff0c;而是没有将自己希…

在SharePoint 2010中创建网站的权限级别

转&#xff1a;http://www.360sps.com/Item/CreatePermissionLevels.aspx 权限级别是SharePoint 2010新增加的功能&#xff0c;使我们对权限的设置又提高了一个层次。SharePoint 2010的权限级别指的是可分配给用户或用户组的单个权限组。SharePoint 2010自带的权限级别有&#…

Qt 编码问题QTextCodec

一般在Window开发环境里&#xff0c;是GBK编码&#xff0c;在Linux开发环境里&#xff0c;是utf-8编码&#xff0c;关于编码的定义&#xff0c; 我就不这里多说了&#xff0c;网上有一大堆资料可以查看。 qt对默认的是unicode编码&#xff0c;在Window开发环境里&#xff0c;比…

linux suse11 nfs,suse11 nfsserver服务安装

1概述目的&#xff1a;因为suse11的nfs服务安装和suse10安装有许多不同之处&#xff0c;为了方便以后使用suse11的人使用nfs服务&#xff0c;特写此文档2安装说明A suse11默认不会nfsserver服务&#xff0c;需要安装nfs-kernel-server此包。suse10默认安装nfssever服务&#…

Merge Two Sorted Lists

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. if... else if不要偷懒直接写 if...if... /*** Definition for singly-linked list.* struct ListNode {* int val;* …

V210 系统时间设置

date -s "2015-08-30 20:46:30" hwclock -w

Linux中重定向及管道,Linux中重定向及管道

1重定向1.1 重定向符号> 输出重定向到一个文件或设备 覆盖原来的文件>! 输出重定向到一个文件或设备 强制覆盖原来的文件>> 输出重定向到一个文件或设备 追加原来的文件1.2标准错误重定向符号2> 将一个…

仿新浪微盾客户端项目简介一

最经公司的项目需要实现类似于新浪微盾功能的功能&#xff0c;因此我把这个实战的demo的经历分享给大家。 新浪微盾是啥子玩意&#xff1f; 微盾是由新浪网推出的一款产生一次性动态密码的产品&#xff0c;可以用于新浪旗下各服务&#xff0c;包括新浪微博&#xff0c;新付通&a…

linux设置时间为24小时制,设置时区

1. 查看系统时间 [rootlocalhost.localdomain ~]#date Thu Feb 4 14:24:18 CST 2010 时区是CST&#xff0c;为了彻底弄明白GMT,UTC,CST&#xff0c;我查阅了下网上的相关教程&#xff0c;进行整理&#xff1a; 一般来说&#xff0c;UTC(Coordinated Universal Time世界协调时间…

linux读取pdf文件字体,Linux有问必答:如何在PDF中嵌入LaTex中的所有字体

提问: 我通过编译LaTex源文件生成了一份PDF文档。然而&#xff0c;我注意到&#xff0c;并不是所有字体都嵌入到了PDF文档中。我怎样才能确保所有的字体嵌入在由LaTex生成的PDF文档中&#xff1f;当你创建一个PDF文件时&#xff0c;在PDF文件中嵌入字体是一个好主意。如果你不嵌…

详解公钥、私钥、数字证书的概念

加密和认证   首先我们需要区分加密和认证这两个基本概念。    加密是将数据资料加密&#xff0c;使得非法用户即使取得加密过的资料&#xff0c;也无法获取正确的资料内容&#xff0c;所以数据加密可以保护数据&#xff0c;防止监听攻击。其重点在于数据的安全性。身份认证…

CSS3 2D转换

CSS3 转换 通过CSS3转换&#xff0c;我们能够对元素进行移动、缩放、转动、拉长或拉伸。 它如何工作&#xff1f; 转换是是元素改变形状、尺寸和位置的一种效果。 你可以使用2D或3D转换你的元素。 浏览器支持 属性浏览器支持transform IE10、FireFox以及Opera支持transform…

linux blender骨骼绑定,Linux下安装Blender

Blender在Windows下&#xff0c;可以在官方直接下载免安装的版本&#xff0c;下载解压缩就能用。在Linux下稍微麻烦一点点。如下3步安装的blender不一定是最新版本&#xff0c;且安装完成后发现设置中文会变为方块。这是精简版&#xff0c;中文被精简掉了。若仅使用英文环境&am…

如何删除过期的数据库备份文件呢? .

通过 Forfiles 删除指定目录下过期的备份文件 /*-- 用法详解 D:/>forfiles /? FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [ | -] {yyyy-MM-dd | dd}] 描述 : 选择一个文件 ( 或一组文件 ) 并在那个文件上 执行一个命令。这有助于批处理作业。 参数列表…