我有一个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';
}