function getLink($sa){
if($sa=='1'){
$sa = 'qp_bbl';
} else {
$sa = 'qp_sbl';
}
return $sa;
}
if(!$_POST['action']){
header ("Location: index.php");
}else{
$sa = $_POST['select'];
$sa = getLink($sa);
$link = connect(HOST, USER, PASSWORD, $sa);
(....)
}
这让我发疯了。选择可以是'1'或'2'。如果我硬编码$ sa ='1'或'2'这一切都很好但是如果从$ _POST ['select']设置它,那就不行了。我真的不明白......
答案 0 :(得分:2)
使用此解决方案,您需要在每个页面请求上发布“sa”,否则对于任何其他请求,它将始终回退到“qp_sbl”,因为您似乎不会在会话期间存储要使用的数据库
答案 1 :(得分:1)
您可以尝试使用print_r($ _ POST)检查$ _POST的内容,以确保传递$ _POST ['select']。
但是,您不应该基于$ _POST数据建立数据库连接。这不是很安全。如果要根据$ _POST有条件地选择数据库,请尝试以下方法:
switch($_POST['select']) {
case '1': $db = '1'; break;
default: $db = '2';
}
这样您就可以确定选择了有效的数据库。
答案 2 :(得分:0)
要继续jonstjohn关于print_r的评论......如果出现问题,我们还应该看看要发布到此脚本的初始表单。
在发布会话时,只需将选择值存储在会话中,然后只使用会话中的值,直到它发生变化。