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