URL 函数

目录

添加备注

用户贡献的备注 11 个备注

jrg45 at pantheon dot yale dot edu
22 年前
请注意,$_SERVER["HTTP_REFERER"] 可能不包含包含在引用地址中的 GET 数据,具体取决于浏览器。因此,如果您依赖 GET 变量来生成页面,那么使用 HTTP_REFERER 将用户平稳地“弹回”他/她来自的页面并不是一个好主意。
verdy_p at wanadoo dot fr
23 年前
还要注意,$HTTP_REFERER 中显示的 URL 并不总是用户点击以调用 PHP 脚本的网页的 URL。
这可能是您自己网站上的文档,其中包含一个 HTML 元素,其一个属性引用了该脚本。还要注意,当前页面片段 (#anchor) 可能会与 URL 一起传输,也可能不会,具体取决于浏览器。
示例
<FRAME src="your-page-script.php"8>
<IMAGE src="your-image-script.php">

在这种情况下,浏览器应该传输容器文档的 URL,但有些浏览器仍然坚持使用浏览器历史记录中的上一个文档,这会导致在用户返回到引用您脚本的文档时发送不同的 $HTTP_REFERER 值。如果您想确保发送实际的当前文档或历史记录中的上一个文档,请使用客户端 JavaScript 将其发送到您的脚本

<SCRIPT language="JavaScript"><!--
document.writeln('<FRAME src="your-page-script.php?js=1&amp;ref=' +
document.location + '">');
--></SCRIPT><NOSCRIPT>
<FRAME src="your-page-script.php?js=0">
</NOSCRIPT>

然后检查页面脚本中 $js 的值,以便在远程用户代理不支持客户端脚本(例如大多数索引/扫描机器人、一些旧的或简化的浏览器,或用户禁用了 JavaScript 的浏览器)时生成适当的内容。
php at malaker dot com
20 年前
如果代码位于 FRAME 或 IFRAME 的源页面(例如 SRC="sourcepage.php")中,则以下方法不会在用户浏览器中显示 URL(如作者所述)。在这种情况下,将显示源页面的 URL。

$url = sprintf("%s%s%s","http://",$HTTP_HOST,$REQUEST_URI);
echo "$url";

预期结果:http://localhost/urltest/framedpage.php

实际结果:http://localhost/urltest/sourcepage.php
chemanfit at hotmail
21 年前
只是对上面的一个补充说明,您需要添加 ?

示例

$page=$PHP_SELF."?".$_SERVER['QUERY_STRING'];
dday at cnscorp dot com
19 年前
在表单中使用多选时,我遇到了一个小问题,即只接收选择框中的最后一个值。
我有一个名为 organization_id 的选择框,有两个值(92 和 93)。
要获取两个值,我必须使用以下代码

$temp_array = split("&", $_SERVER['QUERY_STRING']);
foreach($temp_array as $key=>$value){
if(substr($value, 0, 15) == "organization_id"){
$_GET['organizations'][] = substr($value, 15, strlen($value));
}
}

这将产生一个像这样的 $_GET 数组

(
[page] => idea_submission
[organization_id] => 93
[organizations] => Array
(
[0] => =92
[1] => =93
)

)
tumor at kkt dot bme dot hu
24 年前
要检查 URL 是否有效,请尝试使用 fopen() 打开它。如果 fopen() 出现错误(返回 false),则 PHP 无法打开您请求的 URL。这通常是因为它无效...
ignacio
21 年前
/*
这可能是显而易见的,但对我来说很有帮助,因为我找到了它
如果我想将一个变量追加到 URL 并将其传递到同一个页面。(在本例中,我使用 action=email 在用户点击时包含电子邮件表单)我这样做
*/

// ...

<a href="<? echo $PHP_SELF,'?',$_SERVER['QUERY_STRING'],'&action=email' ?>">给我们发邮件</a>

// ...

/* 在页面的某个地方(在我的情况下,在底部)我有:*/

<? if ($action=='email') include('emailForm.htm'); ?>
martin at limitless dot co dot uk
18 年前
每个 %xx 代表一个字母。您需要从开头删除 %68%74%74%70%3a%2f%2f (http://)。
ignacio paz posse
21 年前
关于上面的说明:关键是,使用 $_SERVER['QUERY_STRING'] 以及 $PHP_SELF,我们将传递已经追加的所有变量(因为它们可能需要用于数据库查询)

例如,给定以下 URL:http://www.your_domain/somepage.php?variable=1;

使用 $PHP_SELF",我们传递
[scheme]:(http://), [host]: www.your_domain/ 和 [path]: somepage.php

添加 $_SERVER['QUERY_STRING'],我们传递它,以及 [query]: variable=1
stephane-wantiez at tiscalinet dot be
22 年前
如果你这样做,会更容易
echo "http://{$HTTP_HOST}{$REQUEST_URI}";
postmaster at asmatic dot ch
22 年前
如果您想在全局错误页面(例如 404)上获取请求的文件名,只需使用以下代码...

// 获取完整的变量...
$page = $HTTP_SERVER_VARS["QUERY_STRING"];

// part[1] 是 URL...
// part[0] 是 HTTP 代码(404 等)。
if(strpos($page,";")>0) {
$pageParts = explode(";",$page);
$page = $pageParts[1];
}

// 只获取文件名...
$page = basename($page);
To Top