php建立连接失败


php establishing connection fails

我正在尝试一些非常基本的东西,但由于某种原因,它无法工作!基本上,我正在尝试为我的网站创建一个新的用户名和密码。这只是为了测试。当我提交请求时,我得到的是:

警告:mysql_real_eescape_string()[function.mysql real-eescape-string]:拒绝用户"santosh'@'localhost'"(使用密码:NO)在/home/kali197/public_html/test/enroll.php的第27行中访问

我不知道谁是桑托斯显示在这里@localhost。在家里,它展示了不同的人。可能是什么?

我有以下代码来尝试实现我的目标。。。真的很简单:

<?php
class ServerConnection{
    function connect(){
        $mysqli = new mysqli("localhost", "dsdssd_admin", "sddsdsd", 
 "khadsdsli197_dsd");
        if ($mysqli->connect_errno) {
                echo "Failed to connect to MySQL: (" . 
$mysqli->connect_errno . ") " .
                    $mysqli->connect_error;
        }
        //echo $mysqli->host_info . "'n";
    }
}
?>

register.php格式:

<form name="register" action="enroll.php" method="post">
Username: <input type="text" name="username" maxlength="30" />
Password: <input type="password" name="pass1" />
Password Again: <input type="password" name="pass2" />
<input type="submit" value="Register" />
</form>

以及处理该问题的表格,即enroll.php:

<?php
include("ServerConnection.php");
//retrieve our data from POST
$username = $_POST['username'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
if($pass1 != $pass2)
    header('Location: register_form.php');
if(strlen($username) > 30)
    header('Location: register_form.php');
$hash = hash('sha256', $pass1);
//creates a 3 character sequence
function createSalt()
{
    $string = md5(uniqid(rand(), true));
    return substr($string, 0, 3);
}

$salt = createSalt();
$hash = hash('sha256', $salt . $hash);
$connection = new ServerConnection();
$connection->connect();
$username = mysql_real_escape_string($username);
$query = "INSERT INTO users ( username, password, salt )
        VALUES ( '$username' , '$hash' , '$salt' );";
mysql_query($query);
mysql_close();
header('Location: index.php');
?>

如有任何帮助,我们将不胜感激!提前感谢

MySQL不是MySQLi。如果使用MySQLi扩展,请不要使用mysql_real_escape_string函数。它们是两个完全不同的数据库驱动程序。

当您调用mysql_real_eescape_string()函数时,它会搜索早期打开的mysql连接,而不是mysql的连接。如果找不到,则尝试打开与系统登录用户的新连接。如果您的系统用户名是santoshs,那么这就是原因。

解决方案是ServerConnection类更改为使用mysql扩展或在enrole.php

中使用mysqli扩展

当调用mysql_real_eescape_string()时,您看到了错误,这意味着您没有在mysql_connect()处捕获错误-因此,即使在考虑用户是什么之前,很明显,正在运行的代码不是您向我们展示的代码。

尝试在ServerConnection.php中的mysql_connect()中添加一些错误检测,并检查用户santoshs 的权限