2009-03-12 9 views
0
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']에서 설정하면 아무 일도 없습니다. 나는 정말로 이해하지 못한다 ...mysql 데이터베이스 간 전환

답변

2

이 솔루션을 사용하면 모든 페이지 요청에 "sa"를 게시해야합니다. 그렇지 않으면 다른 요청에 대해 항상 "qp_sbl"로 되돌아갑니다. 세션.

1

print_r ($ _ POST)을 사용하여 $ _POST의 내용을 검사하여 $ _POST [ 'select']가 전달되는지 확인할 수있다.

$ _POST 데이터를 기반으로 데이터베이스 연결을 만들지 않아야합니다. 이것은 안전하지 않습니다. 조건부 $ _POST에 따라 데이터베이스를 선택하려면, 다음과 같이 뭔가를 시도 :

switch($_POST['select']) { 

    case '1': $db = '1'; break; 
    default: $db = '2'; 

} 

그런 식으로 당신이 유효한 DB를 선택되어 있는지 확인합니다.

0

print_r에 대한 jonstjohn 님의 의견을 계속 읽으려면 문제가있는 경우이 스크립트에 게시 할 초기 양식을 보게됩니다.

게시 될 때 세션에 선택 값을 저장 한 다음 변경 될 때까지 세션의 값만 사용하면 도움이 될 수도 있습니다.