php建立连接失败
我在尝试一些非常基本的东西,但它由于某种原因无法工作!基本上我试图为我的网站创建一个新的用户名和密码。它仅用于测试。当我提出要求,我得到这样的:php建立连接失败
警告:mysql_real_escape_string()[function.mysql实时逃逸字符串]:拒绝访问用户santoshs'@ 'localhost' 的(使用密码:NO) in /home/khali197/public_html/test/enroll.php on line 27
我不知道谁是在这里显示的santoshs @ 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_escape_string()时发现错误意味着你没有在mysql_connect()处捕获错误 - 所以即使在考虑用户是什么之前,显然正在运行的代码并不是代码你已经向我们展示过。
尝试增加在ServerConnection.php mysql_connect()函数的一些错误检测和检查权限用户santoshs
再次桑托斯不是一个真正的用户...有没有人,但我.... :( – 2012-03-05 09:40:34
你在哪里看到'mysql_connect'? – deceze 2012-03-05 09:42:15
我不知道会发生什么但我相信现在mysqli或更像是ServerConnection类导致了这个问题,我会进一步检查,因为一旦我将其更改为常规mysql连接,突然所有工作!谢谢 – 2012-03-06 07:16:25
当你把它叫做搜索较早MySQL的连接打开了mysql_real_escape_string()函数,而不是的mysqli连接。如果找不到,则尝试使用系统登录用户打开新的连接。如果你的系统用户名是santoshs
那么这就是原因。
的解决办法是变化ServerConnection
类使用mysql
扩展或使用enrole.php
是你的登录用户名'santoshs' mysqli扩展? – 2012-03-05 09:49:26
不是这不是这就是为什么我震惊 – 2012-03-13 04:16:25