很多站长朋友们都不太清楚php用geturl,今天小编就来给大家整理php用geturl,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 很抱歉,您的电脑或所在的局域网络有异常的访问,此刻我们无法响应您的请求. 2、 PHP 如何获取当前URL并去掉.html 3、 php打开URL的几种方法 4、 php如何获取301重定向前的域名 5、 用javascript的window.location.href取得地址栏后,如何在PHP里调用呢,新手提问,实在是不会,看了不少网页 很抱歉,您的电脑或所在的局域网络有异常的访问,此刻我们无法响应您的请求.目前,当某个IP段在短时间内向百度发出大量连接请求,即会受到百度局域网异常访问屏蔽策略的限制。
有两个方法可以解决:
1.PHP抓取页面受限的破解方法
在使用PHP抓取百度知道问题页时,由于PHP程序抓取速度过快,导致被屏蔽,采用以下的方式解决
抓取页面需采用fsockopen方式,使用file_get_contents无法设置请求头
fsockopen函数的使用方法请自行查阅,例子中的geturlcont函数为自定义函数,核心即为fsockopen,geturlcont函数的原型
geturlcont($url, $referer = "" ,$cookie),$url为待抓取的页面的url,$referer为传递的referer参数(主要用于防止抓到的是百度首页),$cookie为重要的一个参数,用于破解局域网异常访问屏蔽功能
2.Chrome扩展直接跳转方案
在另一个程序中,不需要抓取页面内容,但会同时打开数十页的百度页面,同样可能会造成短时间内请求过多导致的屏蔽,解决方法是通过Chrome扩展的js注入功能实现
附(百度屏蔽页的代码):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>百度--您的访问出错了</title>
<style>
body{text-align:center;margin-top:3px}
#wrap{width:650px;text-align:left;margin:auto}
#logo{float:left;margin:0 3px 0 0}
#logo img{border:0}
#title{float:left;width:510px}
#intitle{margin:20px 0 0 0;background-color:#e5ecf9;width:100%;font-weight:bold;font-size:14px;padding:3px 0 4px 10px}
#content{clear:left;padding-top:60px;line-height:200%}
#vf{margin-top:10px}
#vf img{float:left;border:1px solid #000}
#kw{font:16px Verdana;height:1.78em;padding-top:2px}
#vf form{float:left;margin:12px 0 0 5px;padding:0}
#ft{text-align:center}
#ft,#ft a{color:#666;font-size:14px}
</style>
</head>
<body>
<div id="wrap">
<div id="logo"><a href=""><img alt="到百度首页" title="到百度首页" src="" width="137" height="46"></a></div>
<div id="title"><div id="intitle">您的访问出错了</div></div>
<div id="content">很抱歉,您的电脑或所在的局域网络有异常的访问,此刻我们无法响应您的请求。 <br>请输入以下验证码,即可恢复使用。</div>
<div id="vf">
<img src="" width="120" height="40">
<form action="">
<input type="hidden" name="url" value=";vf_tf=1">
<input type="hidden" name="vcode" value="9D5771ED69F27050263223420F7043C211B95E2D3616825774FF64E3FEF61920E3089D79E454888755B8F3AFDF124C9C74A34C4DDFAFD27827B3512B437BE76043">
<input type="hidden" name="id" value="1359359285">
<input type="hidden" name="di" value="530e060fe3c68f3d">
<input type="text" size="6" maxlength="10" name="verifycode" id="kw">
<input type="submit" value="提交">
</form>
</div>
<div style="clear:left;height:90px"></div>
<div id="ft">? 2012 Baidu <a href="">免责声明</a></div>
</div>
<script>
(function(){
var rfr = window.document.location.href,
p = encodeURIComponent(rfr),
img = new Image(),
imgzd = new Image(),
re = /\/vcode\?http:\/\/(\S+)\.baidu/ig,r="";
img.src = ";pj=vcodepath="+p+"t="+new Date().getTime();
r = re.exec(rfr);
if(rr[1]){imgzd.src = "http://"+r[1]+".baidu测试数据/v.gif?fr=vcodeurl="+p+"t="+new Date().getTime();}
})();
</script>
</body>
</html>
PHP 如何获取当前URL并去掉.html很简单啊:
<?php
//
第一步:你需要得到你的URL:
$URL=$_SERVER['HTTP_HOST']
.
$_SERVER['REQUEST_URI'];
//第二步:把得到的URL后面的“.HTML”去掉:
$geturl=str_replace('.html','',$URL);
echo
$geturl;
?>
但是,可但是:
你的这个页面应该是php的才对吧,如果是html的,就一定是应用了拟静态技术来重写URL,这样的话,上面的代码你也可以使用,如果是生成的
静态页面
,那么很不好意思,这个基本上不可行了。也无法达到你的意愿。
php打开URL的几种方法PHP中打开URL地址的几种方法总结,这里的函数主要用于小偷采集等函数。
1:?用file_get_contents?
以get方式获取内容?
复制代码?代码如下:
<?php?
$url='';?
$html?=?file_get_contents($url);?
//print_r($http_response_header);?
ec($html);?
printhr();?
printarr($http_response_header);?
printhr();?
?>?
示例代码2:?用fopen打开url,?
以get方式获取内容?
复制代码?代码如下:
<??
$fp?=?fopen($url,?'r');?
printarr(stream_get_meta_data($fp));?
printhr();?
while(!feof($fp))?{?
$result?.=?fgets($fp,?1024);?
}?
echo?"url?body:?$result";?
printhr();?
fclose($fp);?
?>?
示例代码3:用file_get_contents函数,以post方式获取url?
复制代码?代码如下:
<?php?
$data?=?array?('foo'?=>?
'bar');?
$data?=?http_build_query($data);?
$opts?=?array?(?
'http'?
=>?array?(?
'method'?=>?'POST',?
'header'=>?"Content-type:?
application/x-www-form-urlencoded"?.?
"Content-Length:?"?.?strlen($data)?.?
"",?
'content'?=>?$data?
),?
);?
$context?=?
stream_context_create($opts);?
$html?=?
file_get_contents('',?false,?$context);?
echo?$html;?
?>?
示例代码4:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body?
复制代码?代码如下:
<??
function?get_url?
($url,$cookie=false)?{?
$url?=?parse_url($url);?
$query?=?
$url[path]."?".$url[query];?
ec("Query:".$query);?
$fp?=?fsockopen(?
$url[host],?$url[port]?$url[port]:80?,?$errno,?$errstr,?30);?
if?(!$fp)?{?
return?false;?
}?else?{?
$request?=?"GET?$query?HTTP/1.1";?
$request?.=?"Host:?$url[host]";?
$request?.=?"Connection:?Close";?
if($cookie)?$request.="Cookie:?$cookie\n";?
$request.="";?
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,"");?
$body=substr($body,4,strlen($body));?
return?$body;?
}?
return?false;?
}?
?>
php如何获取301重定向前的域名首先找到你网站的入口文件,一般都是在根目录里的 index.php 这个文件,用编辑器打开它,在这里推荐您使用 Dreamweaver 这个软件,功能很强大的,如果您电脑上没有安装有这个软件,也可以使用记事本,这就是最简单的编辑器了。
打开了,在所有代码的最前面加上以下代码即可,当然,所指的最前面没有包涵 PHP 标识符,如果连这个都没有了,代码是无法运行的,因为它是 PHP 语言。
先上张图看看吧。
使用说明:
$getUrl= $_SERVER['SERVER_NAME'] 是获得当前输入的 url 地址,也就是说访问者在浏览器地址里输入的域名地址。
$jumpUrl 这个变量是要跳转到的 url 地址,也就是您网站的主域名。
如果您的网站是多个域名访问的,可以保留判断是否是主域名这段代码,如果你只有一个域名进行访问,可以把这一段删除即可,关于如何使用这段代码,在笔者贴上来的代码里有说明,按照说明进行修改就行了。
这些设置好了之后,进行保存,上传到您网站覆盖原来的 index.php 文件,这样,就做好了 301 跳转了。
笔者就拿 和 这两个域名来进行说明,当访问者在浏览器的地址栏输入 a测试数据 时,自动跳转到 ,当访问者在浏览器的地址栏输入 b测试数据 ,或者输入 时,自动跳转到 ?。
在这里使用到?$_SERVER['SERVER_NAME'] 的 PHP 系统函数获得传进来的域名 URL 。
PHP 里的?substr() 是用来截取字符串的一部分,应该会使用的吧,里面主要有三个参数,第一个参数是传进来的字符串,这个参数是必须的;第二个参数是从第几个开始截取,也是必须的;第三个是截多长的字符串,是可选的。
代码片段:
$getUrl= $_SERVER['SERVER_NAME'];// 获得当前输入的 url
$jumpUrl= 'Location:';// 要进行跳转的 url
if(substr($getUrl,0,4)!='HdhCmsTest'){// 判断 url 中是否带 www
redirect($jumpUrl);
}
if(substr($getUrl,0,1) == 'b' || substr($getUrl,4,1) == 'b'){// 判断是否是主域名
redirect($jumpUrl);
}
/* 如果有多个域名,可以继续添加
* 不想多解释,你应该明白的,
*/
// 跳转函数
function redirect($jumpUrl){
header('HTTP/1.1 301 Moved Permanently');
header($jumpUrl);// 301 跳转到设置的 url
exit();
}
用javascript的window.location.href取得地址栏后,如何在PHP里调用呢,新手提问,实在是不会,看了不少网页用ajax请求啊,给服务器 GET或者POST 当前HTML页面的的URL
我的例子是用的jquery
$.get(geturl.php, //GET请求地址
{url : window.location.href}, //get请求参数。就相当于 geturl.php?url=......
function(data, textStatus) //请求回调函数,ajax请求得到的数据放在data中
{
alert(data);
}
);
geturl.php页面
$url = $_GET["url"];
这就是HTML页面的URL地址了, $url怎么用就看你了。。
同样你也可以使用POST方式
关于php用geturl的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。