JavaScript获取当前页URL
var pageUrl = window.location.toString();
pageUrl即为当前页面的URL
‘http://’.$_SERVER['SERVER_NAME'].’:’.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
设置或获取对象指定的文件名或路径。
<script>
alert(window.location.pathname)
</script>
设置或获取整个 URL 为字符串。
<script>
alert(window.location.href);
</script>
设置或获取与 URL 关联的端口号码。
<script>
alert(window.location.port)
</script>
设置或获取 URL 的协议部分。
<script>
alert(window.location.protocol)
</script>
设置或获取 href 属性中在井号“#”后面的分段。
<script>
alert(window.location.hash)
</script>
设置或获取 location 或 URL 的 hostname 和 port 号码。
<script>
alert(window.location.host)
</script>
设置或获取 href 属性中跟在问号后面的部分。
<script>
alert(window.location.search)
</script>
以上是推荐回答,你可以参考如下其他回答
如window.location.href 设置或获取整个 URL 为字符串。
PHP获取当前url的函数
例: 我需要 获取当前的 的URL 地址
$url_this = “http://”.$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo $url_this;
则显示 : http://localhost/lu.php
服务器变量:$_SERVER
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_SERVER_VARS。
$_SERVER 是一个包含诸如头部(headers)、路径(paths)和脚本位置(script locations)的数组。数组的实体由 web 服务器创建。不能保证所有的服务器都能产生所有的信息;服务器可能忽略了一些信息,或者产生了一些未在下面列出的新的信息。这意味着,大量的这些变量在 CGI 1.1 specification 中说明,所以您应该仔细研究它。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中您不需要使用 global $_SERVER; 访问它,就如同使用 $HTTP_SERVER_VARS 一样。
$HTTP_SERVER_VARS 包含着同样的信息,但是不是一个自动全局变量。(注意: $HTTP_SERVER_VARS 和 $_SERVER 是不同的变量,PHP 处理它们的方式不同。)
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_SERVER 和 $HTTP_SERVER_VARS 数组。相关信息,请参阅安全的相关章节 使用 Register Globals。这些单独的全局变量不是自动全局变量。
您或许会发现下面列出的某些 $_SERVER 元素并不可用。注意,如果以命令行方式运行 PHP,下面列出的元素几乎没有有效的(或是没有任何实际意义的)。
“PHP_SELF”
当前正在执行脚本的文件名,与 document root相关。举例来说,在URL地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果。
如果 PHP 以命令行方式运行,该变量无效。
“argv”
传递给该脚本的参数。当脚本运行在命令行方式时,argv 变量传递给程序 C 语言样式的命令行参数。当调用 GET 方法时,该变量包含请求的数据。
“argc”
包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
“GATEWAY_INTERFACE”
服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
‘SERVER_NAME’
当前运行脚本所在服务器主机的名称。如果该脚本运行在一个虚拟主机上,该名称是由那个虚拟主机所设置的值决定。
‘SERVER_SOFTWARE’
服务器标识的字串,在响应请求时的头部中给出。
“SERVER_PROTOCOL”
请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
“REQUEST_METHOD”
访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
“QUERY_STRING”
查询(query)的字符串。
“DOCUMENT_ROOT”
当前运行脚本所在的文档根目录。在服务器配置文件中定义。
“HTTP_ACCEPT”
当前请求的 Accept: 头部的内容。
“HTTP_ACCEPT_CHARSET”
当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。
“HTTP_ACCEPT_ENCODING”
当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。
“HTTP_ACCEPT_LANGUAGE”
当前请求的 Accept-Language: 头部的内容。例如:“en”。
“HTTP_CONNECTION”
当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
“HTTP_HOST”
当前请求的 Host: 头部的内容。
“HTTP_REFERER”
链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是正确真实的。
“HTTP_USER_AGENT”
当前请求的 User_Agent: 头部的内容。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。您也可以使用 get_browser() 得到这个信息。
“REMOTE_ADDR”
正在浏览当前页面用户的 IP 地址。
‘REMOTE_HOST’
正在浏览当前页面用户的主机名。反向域名解析基于该用户的 REMOTE_ADDR。
注: 必须配置 Web 服务器来建立此变量。例如 Apache 需要在 httpd.conf 中有 HostnameLookups On。参见 gethostbyaddr()。
“REMOTE_PORT”
用户连接到服务器时所使用的端口。
“SCRIPT_FILENAME”
当前执行脚本的绝对路径名。
“SERVER_ADMIN”
该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。
“SERVER_PORT”
服务器所使用的端口。默认为“80”。如果你使用 SSL 安全连接,则这个值为您所设置的 HTTP 端口。
“SERVER_SIGNATURE”
包含服务器版本和虚拟主机名的字符串。
“PATH_TRANSLATED”
当前脚本所在文件系统(不是文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
“SCRIPT_NAME”
包含当前脚本的路径。这在页面需要指向自己时非常有用。
“REQUEST_URI”
访问此页面所需的 URI。例如,“/index.html”。
“PHP_AUTH_USER”
当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
“PHP_AUTH_PW”
当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
“AUTH_TYPE”
当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。
网页自动跳转,是指当用户访问某个网页时,被自动跳转到另一个网页中去。
网页自动跳转的主要作用是,当域名变更后,或者网站里的一个或多个网页被删除后,可以使用这种方式将用户引导到其它正常的网页中去,从而留住用户。
不过,现在有许多人利用网页自动跳转来进行作弊,欺骗搜索引擎,从而实现提高网站搜索引擎排名的目的。比较典型的方式是:先做一个“桥页”,当搜索引擎收录了这个桥页,并有较高排名时,桥页中再使用网页自动跳转方式,将用户引导到用户本来无意访问的其它网页中去。
下面介绍一下五种常见的网页自动跳转方法,以及搜索引擎对这些跳转方法的辨识能力。
第一种网页自动跳转方法:meta refresh自动跳转法 在网页的head区域的meta refresh标签中,加入自动跳转代码,可实现网页的立即或延时自动跳转。 示例如下: <meta http-equiv=”refresh” content=”10;url=http://xfbbs.com/”> 上述html代码中的“10”是延时跳转的时间,单位是秒。如果设为0,就表示立即跳转。“http://xfbbs.com”是跳转的目标地址,可以是 同一域名下的站内相对路径,也可以是不同域名的站外地址。由于搜索引擎能够读取html,所以对于这种自动跳转方法,搜索引擎是能够自动检测出来的。被视 为作弊,则主要看跳转时间。如果跳转时间为0,就可能会被视为作弊,从而受到惩罚。如果有时间延迟(一般3秒以上),就会被视为正常应用。
第二种网页自动跳转方法:body onload自动跳转法在网页加载时通过onload事件指定parent.location进行自动跳转。 示例如下: <body onload=”parent.location=’http://xfbbs.com’”> 这种方法与第一种方法一样,能够被搜索引擎识别。
第三种网页自动跳转方法:javascript自动跳转法 javascript可以实现网页的自动跳转,如果要实现立即跳转,将跳转代码放在网页的head区域即可。 示例如下: <script language=”javascript”> location.replace(“http://xfbbs.com/yule/tietu/”) </script> 其中的“http://xfbbs.com/yule/tietu/”是重定向目标地址。由于搜索引擎无法解析javascript,所以搜索引擎便无法 识别用javascript脚本进行的自动跳转。
第四种网页自动跳转方法:表单自动跳转法对于表单大家都很熟悉,就是将表单中填写的内容,提交到action参数中 指定的url地址中,目标url再对接收到的数据进行处理。利用这一点,我们可间接的实现网页跳转,只不过,我们并不需要提交任何表单内容。再结合 javascript脚本,可以对表单进行自动提交。示例如下: <form name=”form1″ action=http://xfbbs.com/index.html method=”get”> </form> <script language=”javascript”> document.form1.submit() </script> 其中form1名称任意,但二处form1应该统一。action中的url地址必须以文件名结尾,例如 “action=http://xfbbs.com/”或“action=http://xfbbs.com/yule”便是不规范写法。method可 以是get也可以是post,但根据我的经验,提交空表单时最好使用get。众所周知,由于搜索引擎的蜘蛛程序是不会填写表单的,所以搜索引擎便无法识别 通过这种方法实现的网页自动跳转。
第五种网页自动跳转方法:程序跳转法(response.redirect 、server.transfer)每种程序都有各自的页面跳转方法,例如asp中使用response.redirect 来进行跳转,跳转范例如下: response.redirect “http://xfbbs.com” 它的作用是,asp程序运行到该行代码后,会立即跳转到目标url地址中去。 在asp中,除了使用response.redirect 做跳转外,还有一个跳转方法,用server.transfer进行跳转,跳转范例如下: response.redirect “/yule/tietu/index.html” 注意,这里的url地址,必须是站内地址,且url地址必须以文件名结尾,例如 response.redirect “/yule/tietu/” 便是错误用法。 response.redirect和server.transfer都能实现网页自动跳转,但二者也有不同之处,前者可以跳转到站内url,也可以跳转 到站外url,而后者只能跳转到站内文件,且浏览器地址栏的url将保持不变。server.transfer还有许多好处,这里不多详述,大家可在搜索 引擎中查找它的更多资料。使用response.redirect 跳转虽然是在服务器端完成跳转的,但它最终是转换成html后在客户端执行的,因此,也能被搜索引擎识别,过多的使用亦会被当作作弊处理。如果是在同一网站内部的不同网页间跳转,建议使用server.transfer跳转,server.transfer肯定不会被搜索引擎视为作弊。
方法一:使用PHP自带函数
Header(“Location: 网址”);
说明:必须在网页没有任何输出的时候执行,要特别要注意空格。去空格的方法参照如下第4问
即,这句话要放在网页开始的时候,放在body里或后面都会出错,
方法二:利用meta
echo “<meta http-equiv=refresh content=’0; url=网址’>”;
说明:没有方法一的限制,但是如果前面有输出,则输出的内容会闪烁一下然后进入跳转到的页面。
如:
$post=”guoqing.php?id=”.urlencode(“$id”) .”&name=”.urlencode($name);
//加urlencode()函数在 地址栏则不显示$a变量的中文真实内容,用%……%……来表示。
echo “<meta http-equiv=refresh content=’0; url=$post’>”; //页面跳转语句这样可实现页面传值
方法三:利用Javascript语言
echo “<script language=’javascript’>”;
echo ” location=’网址’;”;
echo “</script>”;
4:为什么我向另一网页传送变量时,只得到前半部分,以空格开头的则全部丢失
CODE:[复制到剪切板]<?php
$Var=”hello php”;//修改为$Var=” hello php”;试试得到什么结果
$post= “receive.php?Name=”.$Var;
header(“location:$post”);
?>
非常全面的一个php技术网站,php爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
receive.php的内容:
CODE:[复制到剪切板]<?PHP
Echo “<pre>”;
Echo $_GET["Name"];
Echo “</pre>”;
?>
正确的方法是:
CODE:[复制到剪切板]<?php
$Var=”hello php”;
$post= “receive.php?Name=”.urlencode($Var);
header(“location:$post”);
?>
php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
在接收页面你不需要使用Urldecode(),变量会自动编码.
在PHP中用header(“location:test.php”)进行跳转要注意以下几点:
1、location和“:”号间不能有空格,否则会出错。
2、在用header前不能有任何的输出。
3、header后的PHP代码还会被执行。
下面是和asp中重定向response.redirect的比较:
例1:
response.redirect “../test.asp”
header(“location:../test.php”);
两者区别:
asp的redirect函数可以在向客户发送头文件后起作用.
如
<html><head></head><body>
<%response.redirect “../test.asp”%>
</body></html>
查是php中下例代码会报错:
<html><head></head><body>
<?
header(“location:../test.php”);
?>
</body></html>
只能这样:
<?
header(“location:../test.php”);
?>
<html><head></head><body>…</body></html>
即header函数之前不能向客户发送任何数据.
例2:
asp中
<html><head></head><body>
<%
response.redirect “../a.asp”
response.redirect “../b.asp”
%>
</body></html>
结果是重定向a.asp文件.
php呢?
<?
header(“location:../a.php”);
header(“location:../b.php”);
?>
<html><head></head><body></body></html>
我们发现它重定向b.php.
原来在asp中执行redirect后不会再执行后面的代码.
而php在执行header后,继续执行下面的代码.
在这方面上php中的header重定向不如asp中的重定向.有时我们要重定向后,不能执行后面的代码:
一般地我们用
if(…)
header(“…”);
else
{
…
}
但是我们可以简单的用下面的方法:
if(…)
{ header(“…”);exit();}
还要注意的是,如果是用Unicode(UTF-8)编码时也会出现问题,需要调整缓存设置.
<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”936″%>
<%if Request.ServerVariables(“SERVER_NAME”)=”news.sina.com” then
response.redirect “news/index.htm”
else%>
<%end if%>
<script>
var url = location.href;
if(url.indexOf(‘http://www.zqpc.net.cn/’)!=-1)location.href=’/index/index.htm’;
if(url.indexOf(‘http://www.zqtj.net/’)!=-1)location.href=’/index1/index.htm’;
if(url.indexOf(‘http://www.xxfww.net.cn/’)!=-1)location.href=’/cn/index.asp’;
if(url.indexOf(‘http://xxfww.net.cn/’)!=-1)location.href=’/cn/index.asp’;
</script>
URL中的特殊字符
有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是”%20″。
下表中列出了一些URL特殊符号及编码
十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
例:要传递字符串“this%is#te=st&o k?+/”作为参数t传给te.asp,则URL可以是:
te.asp?t=this%25is%23te%3Dst%26o%20k%3F%2B%2F 或者
te.asp?t=this%25is%23te%3Dst%26o+k%3F%2B%2F (空格可以用%20或+代替)
java中URL 的编码和解码函数
java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);
在javascript 中URL 的编码和解码函数
escape(String s)和unescape(String s) ;