CURL 修改增进版,可以设置用户名和密码 2013-1-30
2013-01-30 23:41
190 查看
修改的地方:
(1)可以设置请求需要提供用户名密码的网址。
(2)CURL请求和SOCKET请求都加了是否需要密码的判断。
如果发现错误或者问题,可以随时联系我 admin@zbphp.com,共同探讨。
(1)可以设置请求需要提供用户名密码的网址。
(2)CURL请求和SOCKET请求都加了是否需要密码的判断。
如果发现错误或者问题,可以随时联系我 admin@zbphp.com,共同探讨。
<?php /** * [ZBPHP.COM] (C)2001-2099 * This is NOT a freeware, use is subject to license terms * * $Id: function_filesock.php 2013-01-30 23:44:15Z admin@zbphp.com $ */ function _dfsockopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE, $encodetype = 'URLENCODE', $allowcurl = TRUE, $position = 0) { $return = ''; $matches = parse_url($url); $scheme = $matches['scheme']; $host = $matches['host']; $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/'; $port = !empty($matches['port']) ? $matches['port'] : 80; if(function_exists('curl_init') && function_exists('curl_exec') && $allowcurl) { $chURL = $scheme.'://'.($matches['user'] ? $matches['user'].':'.$matches['pass'].'@':'').($ip ? $ip : $host).':'.$port.$path; $ch = curl_init(); $ip && curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: ".$host)); if($matches['user'] || $matches['pass']) { curl_setopt($curl, CURLOPT_USERPWD, $matches['user'].':'.$matches['pass']); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); } curl_setopt($ch, CURLOPT_URL, $chURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if($post) { curl_setopt($ch, CURLOPT_POST, 1); if($encodetype == 'URLENCODE') { curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } else { parse_str($post, $postarray); curl_setopt($ch, CURLOPT_POSTFIELDS, $postarray); } } if($cookie) { curl_setopt($ch, CURLOPT_COOKIE, $cookie); } curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $data = curl_exec($ch); $status = curl_getinfo($ch); $errno = curl_errno($ch); curl_close($ch); if($errno || $status['http_code'] != 200) { return; } else { return !$limit ? $data : substr($data, 0, $limit); } } if($post) { $out = "POST $path HTTP/1.0\r\n"; $header = "Accept: */*\r\n"; $header .= "Accept-Language: zh-cn\r\n"; $boundary = $encodetype == 'URLENCODE' ? '' : '; boundary='.trim(substr(trim($post), 2, strpos(trim($post), "\n") - 2)); $header .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencoded\r\n" : "Content-Type: multipart/form-data$boundary\r\n"; $header .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; $header .= "Host: $host:$port\r\n"; if(!empty($matches['user'])) { $header .= "Authorization: Basic ".base64_encode($matches['user'].":".$matches['pass'])."\r\n"; } $header .= 'Content-Length: '.strlen($post)."\r\n"; $header .= "Connection: Close\r\n"; $header .= "Cache-Control: no-cache\r\n"; $header .= "Cookie: $cookie\r\n\r\n"; $out .= $header.$post; } else { $out = "GET $path HTTP/1.0\r\n"; $header = "Accept: */*\r\n"; $header .= "Accept-Language: zh-cn\r\n"; $header .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n"; $header .= "Host: $host:$port\r\n"; if(!empty($matches['user'])) { $header .= "Authorization: Basic ".base64_encode($matches['user'].":".$matches['pass'])."\r\n"; } $header .= "Connection: Close\r\n"; $header .= "Cookie: $cookie\r\n\r\n"; $out .= $header; } $fpflag = 0; if(!$fp = @fsocketopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout)) { $context = array( 'http' => array( 'method' => $post ? 'POST' : 'GET', 'header' => $header, 'content' => $post, 'timeout' => $timeout, ), ); $context = stream_context_create($context); $fp = @fopen($scheme.'://'.($ip ? $ip : $host).':'.$port.$path, 'b', false, $context); $fpflag = 1; } if(!$fp) { return ''; } else { stream_set_blocking($fp, $block); stream_set_timeout($fp, $timeout); @fwrite($fp, $out); $status = stream_get_meta_data($fp); if(!$status['timed_out']) { while (!feof($fp) && !$fpflag) { if(($header = @fgets($fp)) && ($header == "\r\n" || $header == "\n")) { break; } } if($position) { for($i=0; $i<$position; $i++) { $char = fgetc($fp); if($char == "\n" && $oldchar != "\r") { $i++; } $oldchar = $char; } } if($limit) { $return = stream_get_contents($fp, $limit); } else { $return = stream_get_contents($fp); } } @fclose($fp); return $return; } } ?>
相关文章推荐
- 使用CURL配置文件设置用户名和密码
- 如何设置可以不用输入用户名和密码,直接进入linux
- 2.6.2 用NPOI操作EXCEL--设置密码才可以修改单元格内容
- 1 npoi 网上 不用模板 设置密码 workbook.WriteProtectWorkbook("password", "admin"); 、、 2 locked.IsLocked = true; sheet1.ProtectSheet("password");NPOI操作EXCEL--设置密码才可以修改单元格内容 3 模板设置密码 确定原密码 设置新密码
- vista忘记用户名密码的修改方法(使用PE进入系统,用cmd.exe冒充虚拟键盘,然后就可以mmc组策略,或者命令行添加用户并提升权限)
- SVN的搭建及使用(三)用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突,重新设置用户名和密码等
- 重新设置Tomcat管理员用户名和密码
- 为何 as sysdba的方式登陆oracle数据库,为何随便输入用户名和密码都可以登陆?
- Mac Eclipse修改SVN的用户名和密码
- 在后台修改FTP密码后。为何旧密码新密码都可以用?
- Linux系统下设置mongoDB的用户名密码
- mysql设置用户名密码,存储过程,触发器
- Oracle修改用户名的密码、用户口令(Windows)
- MongoDB中帐号管理(用户名密码设置)
- linux创建用户、设置密码、修改用户、删除用户
- 怎么设置tomcat管理员的用户名和密码
- gitlab web登入密码忘记以后可以用如下方式修改密码
- SQL Server 2005为数据库设置用户名和密码的方法
- git http\https\git免密设置记住用户名和密码的方法
- 用户名密码存在弱口令,将密码设置为强度较高的形式,大小写字母加数字加特殊符号。