PHP在PHP中设置全局常量中的硬编码URL

PHP Setting hardcoded URL in Global Constant in PHP

本文关键字:PHP URL 编码 全局 设置 常量      更新时间:2023-09-26

有人能帮我如何避免PHP中的硬编码URL吗?这样,当你的网站已经准备好运行时,你就不必查找所有文件并编辑所有硬编码的URL。

通过这种方式,我创建了一个Global.php在我的Global.php上我这里有这些代码。

define("main", "http://mainpage.com");
define("registration", "http://mainpage.com/register");
define("login", ""http://mainpage.com/login");

在我的其他网站上,我有一个注册页面。当我想使用我的全球声明时,我会这样做。

<html>
<body>
<?php include'../Global.php'; ?>
    <div class="nav">
                    <div class="navcontainer">
                            <div class="twelve columns">
                                <ul id="menu">
                                      <li><a href="<?php echo $mainpage;?>">
            mainpage</button></a></li>
                                      <li><a href="<?php echo $register;?>"> <button class="navbutton">
            register</button></a></li>
                                      <li><a href="<?php echo $login;?>"><button class="navbutton">
            Log in</button></a></li>
                              </ul>
                </div>
            </div>
                </div>
        </div>
</body>
</html>

我注意到,在我的Global.php上,我的域总是重复的。。我想做的是,我只需要定义主页面,然后将主页面连接到页面的目录路径或文件名。。

Global.php

define("main", "http://mainpage.com");
<html>
<body>
<?php include'../Global.php'; ?>
    <div class="nav">
                    <div class="navcontainer">
                            <div class="twelve columns">
                                <ul id="menu">
                                      <li><a href="<?php echo $mainpage";?  >">
            mainpage</button></a></li>
                                      <li><a href="<?php echo $mainpage . "/register";?>"><button class="navbutton">
            register</button></a></li>
                                      <li><a href="<?php echo $main page . "/login";?>"><button class="navbutton">
            Log in</button></a></li>
                              </ul>
                </div>
            </div>
                </div>
        </div>
</body>
</html>

但这次赢了不起作用。有人能帮我如何获取页面的目录文件和/或文件名,并将其与全局定义主页连接吗?

您的问题只是语法错误。

首先,定义main常量,然后在HTML页面中尝试回显mainpage变量。不是同一个名字,不是同一种…

下面的代码就像一个魅力

<?php
define("MAINPAGE", "http://mainpage.com");
?>
<html>
  <body>
    <div class="nav">
      <div class="navcontainer">
    <div class="twelve columns">
      <ul id="menu">
        <li><a href="<?=MAINPAGE?>"> mainpage</a></li>
        <li><a href="<?=MAINPAGE . '/register'?>">
          <button class="navbutton">register</button></a></li>
        <li><a href="<?=MAINPAGE . '/login'?>">
          <button class="navbutton">Log in</button></a></li>
      </ul>
    </div>
      </div>
    </div>
</div>
</body>
</html>

您会注意到,我使用的是短标记<?=expr?>,其中expr可以是任何有效的PHP表达式,使用常量、变量和运算符。它只是<?php echo expr;?>的简写。

带寄存器的行相当于:

<li><a href="<?php echo MAINPAGE . '/register';?>">

我使用了一个常数,但我本可以定义一个变量:

$mainpage = "http://mainpage.com";

那么上一行将是:

<li><a href="<?=$mainpage . '/register'?>">

当然,您不需要PHP来进行附加:

<li><a href="<?=MAINPAGE?>/register">

您可以使用相对URL-您不必http://example.com,用途:

<a href="/main.php">Main</a>

它将在任何域中工作。

编辑:如果main.php不直接位于http://example.com/,您需要在它前面加上到达它的路径,例如:

define('URLBASE', '/path/to');
<a href="<?php echo URLBASE ?>/main.php">Main</a>

是否选择使用<?=或者<?php取决于您的php版本、配置和个人偏好。

如前所述,导航栏的最佳方式是相对寻址。

<li><a href="index.php">
          <button class="navbutton">Home</button></a></li>
<li><a href="registration.php">
          <button class="navbutton">Register</button></a></li>
<li><a href="login.php">
          <button class="navbutton">Log in</button></a></li>

我还发现需要用常量定义href链接。在php配置文件中:

Define('SOCIAL_MEDIA_FACEBOOK' ,'');

在HTML/PHP导航文件中:

<?php if(SOCIAL_MEDIA_FACEBOOK != '') { ?>
            <a href="<?=SOCIAL_MEDIA_FACEBOOK?>">
                <img src="images/Facebook.png"></a>
<?php } ?>

这样,当我将代码提供给客户端时,没有Facebook图标,util客户端提供了一个链接。