如何使用 smarty 获取当前 URL

Posted

技术标签:

【中文标题】如何使用 smarty 获取当前 URL【英文标题】:How can I get current URL using smarty 【发布时间】:2012-10-19 18:40:38 【问题描述】:

如何使用类似于javascript 中的window.locationSmarty 获得URL

我做了这个

$smarty.server.php_SELF 

但它不起作用。

【问题讨论】:

【参考方案1】:

你也可以用这个。

$smarty.server.HTTP_HOST$smarty.server.REQUEST_URI

【讨论】:

这应该是最好的答案了! 我同意。它又快又稳。 如果用户篡改标头字段,这可能会导致一些安全问题:***.com/questions/6768793/get-the-full-url-in-php 是的,是的,它存在安全风险,并且与 https 不兼容。 你也可以看这里:reddit.com/r/netsec/comments/1dhpiy/…【参考方案2】:

这是控制器代码:

<?php
require_once('libs/Smarty.class.php');
$smarty = new Smarty();
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") 
    $pro = 'https';
 else 
    $pro = 'http';

$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
$current_url =  $pro."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];

$smarty->assign("current_url",$current_url);
$smarty->display('index.tpl');

?>

您可以在 index.tpl 模板文件中显示变量:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title>Title</title>
    </head>
    <body>

        $current_url

    </body>
</html>

【讨论】:

这是一个简单的PHP文件,不用担心,你可以直接使用这段代码【参考方案3】:

看看有什么可用的:

$smarty.server|@var_dump

几个网址示例https://some.example.com/some/path?param=1

$smarty.server.SCRIPT_URI

https://some.example.com/some/path

$smarty.server.SERVER_NAME

some.example.com

$smarty.server.SCRIPT_URL

/一些/路径

【讨论】:

以上是关于如何使用 smarty 获取当前 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 和 Smarty 同时获取数据并在浏览器中显示?

前端使用js如何准确获取当前页面url网址信息

如何使用js获取修改URL

如何使用 $location 在工厂中获取当前 url 的协议主机和端口

如何从当前url获取参数

获取数组中的项目总数