【问题标题】:Mysql configured correctly for remote connection but php code failing connection?Mysql 为远程连接正确配置但 php 代码连接失败?
【发布时间】:2023-03-25 11:00:01
【问题描述】:

我经历了艰苦的过程,弄清楚如何在配置文件中绑定正确的地址并将 mysql 连接到我的远程服务器。昨天它正在使用不同的代码,现在它没有连接。我得到了模具“连接失败:”但它没有像我要求的那样向我显示connect_error,所以甚至无法找出问题所在?有人看到我的代码有问题吗?注意:我知道这是不安全的,我通常会做准备好的语句,但现在只是尝试处理与数据库问题的连接。

<?php
$server = "174.---.--.187";
$username = "dylanto";
$pass = "------";
$db = "survey";
//$port = 3306;
//create connection
$conn = new mysqli($server, $username, $pass, $db);
//check connection
if (!$conn->connect_error) {
die("Connection failed: " . $conn->connect_error);}

$user = $_POST['user'];
$pass = $_POST ['pass'];

$sql = "insert into login (user, pass) values ('$user','$pass')";

if ($conn->query($sql)==TRUE) {
echo "Account created";}

else {echo "something went wrong";}
$con->close;
?>

HTML代码:

<html><head><title>Log-in</title>
<link rel="stylesheet" type="text/css" href="sytle.css"></head>
<body>
<center><u><strong><h2>Login</h2></u></strong></center>
<br />
<center>
<form action="signup_process.php" method="POST">
Pick Username: <br>
<input type ="text" name = "user"><br>
Pick Password:<br>
<input type ="password" name ="pass"><br>
<input type="submit" name="submit" value="Sign-up">
</form></center>
</body>
</html>

【问题讨论】:

  • if (!$conn-&gt;connect_error) { this = 没有连接错误删除!
  • 另外你的代码是开放的SQL注入攻击你需要学习PDO或者mysqli准备的语句
  • 您对 SQL 注入持开放态度。由于您使用的是 mysqli,因此请利用 prepared statementsbind_param这将解决可能出现的任何令人讨厌的引用问题。
  • 谢谢大家,我现在就试试这个。如果您阅读了我的问题,最后的注释会说“注意:我知道这是不安全的,我通常使用准备好的语句,但现在只是测试 mysql 连接”但是谢谢!
  • @cmorrissey 那个简单的解决方法就成功了,谢谢!!

标签: php mysql ubuntu mysqli remote-access


【解决方案1】:

来自

if (!$conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

收件人:

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

因为 if ($conn->connect_error) = 如果有任何错误,如果 (!$conn->connect_error) 如果没有错误。

对于准备好的语句:

发件人:

$sql = "insert into login (user, pass) values ('$user','$pass')";

if ($conn->query($sql)==TRUE) {
echo "Account created";}

else {echo "something went wrong";}

收件人:

//sanityze POST
$user = trim(mysqli_real_escape_string($conn, htmlspecialchars($_POST['user'], ENT_QUOTES, 'UTF-8')));
$pass = trim(mysqli_real_escape_string($conn, htmlspecialchars($_POST['pass'], ENT_QUOTES, 'UTF-8')));

//use prepared

$stmt = $conn->prepare("insert into login (user, pass) values (?,?)");

//bind parameter
$stmt->bind_param("ss", $user, $pass)

 $stmt->execute();

//then check

【讨论】:

  • 是的,cmets 中的那个人已经告诉我了,但是谢谢,现在我只是错过了,这合乎逻辑。
  • 如果您要包含准备好的语句,mysqli_real_escape_string()htmlspecialchars() 都没有用。
  • 是的,我喜欢使用准备好的语句
猜你喜欢
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 2014-09-29
  • 1970-01-01
相关资源
最近更新 更多