2014-02-11 2 views
-2
if (!empty($_POST)) { 
    $host = $_POST['host']; 
    $user = $_POST['user']; 
    $pass = $_POST['pass']; 
    $db = $_POST['db']; 
    echo '<pre>'; 
    print_r($_POST); 
    $con = @mysqli_connect($host . ":3360", $user, $pass, $db); 

    // [email protected]_connect('192.168.100.42','root','vertrigo','skates'); 
    // Check connection 

    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
    else { 
     echo 'connected'; 
    } 

    @mysqli_close($con); 
} 

이 스크립트를 사용하여 로컬 (기본적으로 라이브 웹 사이트를 통해 로컬 db 서버에 액세스하려는 경우)에이 스크립트를 사용하고 있습니다. 오류 :PHP mysql이 서버를 제거하는 모든 변수에 연결합니다.

Failed to connect to MySQL: Unknown MySQL server host '192.168.100.42:3360' (11004)

이 문제를 해결하려면 도움을 받으십시오.

+2

시동자를 위해 오류 표시를 '@'로 중지하지 마십시오. – Rogue

+0

서버에서이 스크립트를 실행하는 경우 localhost로 db에 액세스하는이 스크립트의 경우 IP를 로컬 호스트로 변경하십시오. – Swapnil

+2

'192.168.100.42'은 개인 내부 IP 주소입니다. 웹 서버가 데이터베이스 서버와 동일한 LAN에 있습니까? 그렇지 않으면 해당 주소가 작동하지 않습니다. 데이터베이스 서버에는 공개적으로 확인할 수있는 IP 주소가 필요합니다 (라우터에 포트를 열어 두는 것이 좋을 것입니다. * 아마 * 데이터베이스를 보호하기 위해 수행중인 작업을 알지 못하면 * 좋은 생각이 아닐 것입니다). – David

답변

1

192.168.100.42는 로컬 IP처럼 보입니다. 정적 공용 IP에 연결 한 다음 라우터의 포트 3306을 192.168.100.42 시스템으로 전달해야합니다.

그게 유일한 문제는 아닙니다.

$ _POST가 비어 있지 않기 때문에 배열 키가 설정되어 있고 비어 있지 않은 것으로 가정하지 마십시오. 구문은 다음과 같습니다.

if(isset($_POST['user'] && !empty($_POST['user']))) 

훨씬 좋습니다.

또한 sanitisation없이 데이터베이스 상호 작용에 $ _POST를 사용하지 말고 루트 사용자로 데이터베이스에 절대로 연결하지 마십시오.

정확한 애플리케이션을 알지 못하지만 매우 안전하지 않습니다.

관련 문제