【问题标题】:PHP mysql connect to any remove server the post variablesPHP mysql连接到任何删除服务器的帖子变量
【发布时间】:2014-03-09 08:44:25
【问题描述】:
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);

    // $con=@mysqli_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);
}

我正在使用此脚本在本地访问远程数据库服务器(基本上我想通过实时网站访问本地数据库服务器),但是,我收到一个错误:

无法连接到 MySQL:未知的 MySQL 服务器主机 '192.168.100.42:3360' (11004)

请帮助摆脱困境。

【问题讨论】:

  • 对于初学者,请停止使用 @ 抑制错误
  • 如果您在服务器上运行此脚本,请将您的 ip 更改为 localhost,因为此脚本以 localhost 身份访问 db
  • 192.168.100.42 是私有内部 IP 地址。 Web 服务器是否与数据库服务器在同一个 LAN 上?如果没有,那么该地址将不起作用。数据库服务器将需要一个可公开解析的 IP 地址(这可能意味着在路由器上打开该端口,这可能不是一个好主意,除非你真的知道你是什么'正在为保护数据库而做)。

标签: php mysql remote-server


【解决方案1】:

192.168.100.42 看起来像一个本地 IP。您需要尝试连接到您的静态公共 IP,然后将路由器中的端口 3306 转发到 192.168.100.42 机器。

这不是你唯一的问题;

仅仅因为 $_POST 不为空,不要假设它设置了那些数组键并且不为空。语法类似

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

好多了。

此外,切勿在未经清理的情况下在任何数据库交互中使用 $_POST,并且切勿使用 root 用户连接到数据库。

我不知道你的确切应用程序,但它不可能不安全。

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多