|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
只要实现最基本的功能就可以了 就是可以添加留言 然后可以显示留言,然后加入管理功能百度|法式|防盗链|破解 上传百度的图片没法从内部援用,让很多伴侣伤透了头脑,Verdana同窗开辟出了一个破解法式,可以用一段PHP代码来处理这个成绩.当地清空IE 缓存后测试胜利,因为没有主机,所以没有在 Internet 下面测试,有前提的伴侣可以协助测试一下,感谢!如有乐趣也在此法式基本上持续优化完美
以下是PHP源码.
/**
* 百度空间相册图片防盗链破解法式 - PHP版
*
* 利用办法:
*
*
*
* @author verdana
* @version 1.0
* @since July 16, 2006
*/
Class Frivoller
{
/**
* The HTTP Version (1.0, 1.1) , Baidu use version 1.1
*
* @var string
*/
protected $version;
/**
* The HTTP response body
*
* @var string
*/
protected $body;
/**
* The HTTP URL
*
* @var string
*/
protected $link;
/**
* An array that containing any of the various components of the URL.
*
* @var array
*/
protected $components;
/**
* The HTTP host
*
* @var string
*/
protected $host;
/**
* The path of required file.
* (e.g. '/verdana/abpic/item/mygirl.png')
*
* @var string
*/
protected $path;
/**
* The HTTP referer, extra it from original URL
*
* @var string
*/
protected $referer;
/**
* The HTTP method, 'GET' for default
*
* @var string
*/
protected $method = 'GET';
/**
* The HTTP port, 80 for default
*
* @var int
*/
protected $port = 80;
/**
* Timeout period on a stream
*
* @var int
*/
protected $timeout = 100;
/**
* The filename of image
*
* @var string
*/
protected $filename;
/**
* The ContentType of image file.
* image/jpeg, image/gif, image/png, image
*
* @var string
*/
protected $contentType;
/**
* Frivoller constructor
*
* @param string $link
*/
public function __construct($link)
{
// parse the http link
$this->parseLink($link);
// begin to fetch the image
$stream = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
if (!$stream) die ("ERROR: $errno - $errstrn");
fputs($stream, $this->buildHeaders());
$this->body = "";
while (!feof($stream)) {
$this->body .= fgets($stream, 4096);
}
// extract picture data
$this->extractBody($this->body);
// send 'ContentType' header for saving this file correctly
// 假如不发送CT,则在试图保留图片时,IE7 会产生毛病 (800700de)
// Flock, Firefox 则没有这个成绩,Opera 没有测试
header("Content-Type: $this->contentType");
print $this->body;
// save this picture
// file_put_contents('hello.jpg', $this->body);
fclose($stream);
}
/**
* Compose HTTP request header
*
* @return string
*/
private function buildHeaders()
{
$request = "$this->method $this->path HTTP/1.1rn";
$request .= "Host: $this->hostrn";
$request .= "Content-Type: image/jpegrn";
$request .= "Accept: */*rn";
$request .= "Keep-Alive: 300rn";
$request .= "Connection: closern";
$request .= "Referer: $this->refererrn";
$request .= "Cache-Control: max-age=315360000rnrn";
return $request;
}
/**
* Strip initial header and filesize info
*/
private function extractBody(&$body)
{
// The status of link
if(strpos($body, '200 OK') > 0) {
// strip header
$endpos = strpos($body, "rnrn");
$body = substr($body, $endpos + 4);
// strip filesize at nextline
$body = substr($body, strpos($body, "rn") + 2);
}
}
/**
* Extra the http url
*
* @param $link
*/
private function parseLink($link)
{
$this->link = $link;
$this->components = parse_url($this->link);
$this->host = $this->components['host'];
$this->path = $this->components['path'];
$this->referer = $this->components['scheme'] . '://' . $this->components['host'];
$this->filename = basename($this->path);
// extract the content type
$ext = substr(strrchr($this->path, '.'), 1);
if ($ext == 'jpg' or $ext == 'jpeg') {
$this->contentType = 'image/pjpeg';
}
elseif ($ext == 'gif') {
$this->contentType = 'image/gif';
}
elseif ($ext == 'png') {
$this->contentType = 'image/x-png';
}
elseif ($ext == 'bmp') {
$this->contentType = 'image/bmp';
}
else {
$this->contentType = 'application/octet-stream';
}
}
}
// Get the url, maybe you should check the given url
if (isset($_GET['url']) and $_GET['url'] != '') {
new Frivoller($_GET['url']);
}
?>培训的第四阶段,就是应用PHP语言开发实际的程序。以结合实际的项目开发来进行学习,效果真的很好,在学习完之后就开始练习,能比较容易掌握所学的知识,这是学校的学习所没法比的。 |
|