表单提交+ PHP服务器变量更改页面绝对URL - htmlspecialchars($ _ SERVER ['REQUEST_URI'])

时间:2013-07-14 21:57:33

标签: php url absolute-path document-root

我有一个PHP配置文件,它定义了整个站点使用的服务器环境变量。在使用“htmlspecialchars($ _ SERVER ['REQUEST_URI'])”提交表单后,我的配置设置无效的原因让我有点困惑。

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

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

ENV vars:

<?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';
}

0 个答案:

没有答案