我正在尝试一些非常基本的东西,但由于某种原因,它无法工作!基本上,我正在尝试为我的网站创建一个新的用户名和密码。这只是为了测试。当我提交请求时,我得到的是:
警告: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
当调用mysql_real_eescape_string()时,您看到了错误,这意味着您没有在mysql_connect()处捕获错误-因此,即使在考虑用户是什么之前,很明显,正在运行的代码不是您向我们展示的代码。
尝试在ServerConnection.php中的mysql_connect()中添加一些错误检测,并检查用户santoshs 的权限