php获取当前页面地址栏中的地址

本文介绍了如何使用JavaScript和PHP来获取当前网页的各种URL信息,包括顶级窗口地址、当前窗口地址、域名、网页地址、URL参数、用户代理及完整的URL。

javascript实现:
top.location.href   顶级窗口的地址
this.location.href 当前窗口的地址

PHP实现:
//获取域名或主机地址 
echo $_SERVER['HTTP_HOST']."<br>"; #localhost

//获取网页地址

echo $_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php

//获取网址参数

echo $_SERVER["QUERY_STRING"]."<br>"; #id=5

//获取用户代理

echo $_SERVER['HTTP_REFERER']."<br>";

//获取完整的url
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
#http://localhost/blog/testurl.php?id=5

//包含端口号的完整url

echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
#http://localhost:80/blog/testurl.php?id=5

//只取路径

$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
echo dirname($url);

### 如何将参数附加到URL或将参数通过地址栏传递 在Web开发中,参数可以通过URL附加的方式进行传递。以下是实现这一功能的几种方法和代码示例: #### 使用HTML与JavaScript实现参数附加 在HTML中,可以使用`<a>`标签的`href`属性来构建带有参数的URL[^1]。例如: ```html <a href="target.html?param1=value1&param2=value2">跳转链接</a> ``` 在目标页面中,可以使用JavaScript获取并解析URL中的参数。具体方法是通过`location.search`属性获取查询字符串,并结合正则表达式或字符串处理方法解析出具体的参数值[^1]。 #### 使用JavaScript函数将JSON对象拼接到URL 如果需要将一个JSON对象作为参数附加到URL,可以使用以下JavaScript函数[^2]: ```javascript function param(data) { let url = ''; for (var k in data) { let value = data[k] !== undefined ? data[k] : ''; url += '&' + k + '=' + encodeURIComponent(value); } // 去除第一个& return url ? url.substring(1) : ''; } function url(base, data) { base += (base.indexOf('?') < 0 ? '?' : '&') + param(data); return base; } console.log(url("https://www.baidu.com", { a: 1, b: 2 })); ``` 上述代码会生成如下的URL:`https://www.baidu.com?a=1&b=2`[^2]。 #### 在C#中动态添加URL参数 在C#中,可以使用正则表达式判断当前URL是否已包含查询字符串,并根据结果决定是追加还是创建新的查询字符串[^3]。以下是一个示例方法: ```csharp private string AddParamToUrl(string key, string value) { string url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri; Regex reg = new Regex(@"^.*\?.+=.+$"); if (reg.IsMatch(url)) url += "&" + key + "=" + value; else url += "?" + key + "=" + value; return Server.UrlEncode(url); } ``` #### ThinkPHP框架中的URL参数传递 在ThinkPHP框架中,可以通过定义控制器方法的参数来接收URL中的参数[^4]。例如: ```php namespace app\index\controller; class Index { public function hello($name = 'World') { return 'Hello ' . $name . '!'; } } ``` 访问路径为`index.php/index/hello/name/ThinkPHP`时,`$name`的值会被设置为`ThinkPHP`[^4]。 ### 注意事项 - URL中的参数应使用`encodeURIComponent`进行编码,以确保特殊字符不会破坏URL结构。 - 在服务器端处理URL参数时,需注意对输入数据进行验证和清理,以防止安全问题(如SQL注入或XSS攻击)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值