1

我有一个 PHP 配置文件,它定义了要在整个站点中使用的服务器环境变量。我有点困惑为什么我的配置设置在使用“htmlspecialchars($_SERVER['REQUEST_URI'])”提交表单后不起作用。

表单验证 + 清理输入,然后完美更新数据库。但是,在提交后,所有页面绝对路径都会切换到文档根路径。此错误会为 css + js 创建不正确的链接。所有链接在页面加载时都是正确的 - 它们只是在提交后更改。我什至尝试了http://php.net/manual/en/reserved.variables.server.php上列出的多个保留​​服务器变量,但均未成功。

有什么建议么?提前感谢您分享的任何智慧。;-)

ENV变量:

<?php
  $url = $_SERVER['HTTP_HOST'];
  $stage = 'domain.net';
  $prod = 'domain.com';
  $dev = 'localhost';

  if ($url == $dev){
    $path = 'http://'.$url. dirname($_SERVER['REQUEST_URI']);
    include_once 'dev.php';
  } elseif ($url == $stage) {
    $path = 'http://'.$url. dirname($_SERVER['REQUEST_URI']);
    include_once 'stage.php';
  } else {
    $path = 'http://'.$url;
    include_once 'prod.php';
  }
?>

表单标记之前:

<form id="idname" action="<?php echo htmlspecialchars($path . '/' . basename($_SERVER['REQUEST_URI']));?>" method="post">

表单标记之后:

<form id="idname" action="/Users/username/Sites/project/folder" method="post">

样式表链接之前:

<link type="text/css" rel="stylesheet" media="screen, handheld" href="/Users/username/Sites/project/folder/css/global.css">

样式表链接之后:

<link type="text/css" rel="stylesheet" media="screen, handheld" href="/Users/username/Sites/project/folder/css/global.css">

修复了错误。最终修改我的代码。

$url = $_SERVER['SERVER_NAME'];
$dir = dirname($_SERVER['REQUEST_URI']);

$env = array(
    'dev' => 'http://localhost/'. $dir, 
    'stage' => 'http://domain.net/'. $dir, 
    'prod' => 'http://domain.com' 
);

if ($url !== $env['prod']) {
    if($url === $env['stage']) {
        $env = $env['stage'];
        include_once 'stage.php';
    } else {
        $env = $env['dev'];
        include_once 'dev.php';
    }
} else {
    $env = $env['prod'];
    include_once 'prod.php';
}
4

0 回答 0