警告:mysql_real_escape_string()[function.mysql-real-escape-string]:拒绝访问用户'a8221325'@'localhost'(使用密码:NO)

时间:2014-02-10 00:37:47

标签: php html mysql mysql-real-escape-string

嗨因某些原因我不知道我一直收到以下错误:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'a8221325'@'localhost' (using password: NO) in /home/a8221325/public_html/add.php on line 11

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/a8221325/public_html/add.php on line 11

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'a8221325'@'localhost' (using password: NO) in /home/a8221325/public_html/add.php on line 12

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/a8221325/public_html/add.php on line 12

从我所做的研究中,我觉得问题在于我连接到我的数据库的方式,但我不完全确定。如果有人可以帮助我让我的代码工作,那就太棒了! 到目前为止,我的网站包含两个页面,测试和添加这里是他们的代码:

的test.html:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<form action="add.php" method="post" name="form1" id="form1">
  <label for="name">Text Field:</label>
  <input type="text" name="name" id="name">
  <label for="password">Text Field:</label>
  <input type="text" name="password" id="password">
  <input type="submit" name="submit" id="submit" value="Submit">
</form>
</body>
</html>

add.php:

<?php
$con=mysqli_connect("mysql1.000webhost.com","a8221325_admin","**************","a8221325_prom");

// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$escapedName = mysql_real_escape_string($_POST['name']); # use whatever escaping function your db requires this is very important.
$escapedPW = mysql_real_escape_string($_POST['password']);

# generate a random salt to use for this account
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));

$saltedPW =  $escapedPW . $salt;

$hashedPW = hash('sha256', $saltedPW);

$query = "insert into user (name, password, salt) values ('$escapedName', '$hashedPW', '$salt'); ";
?>

谢谢!

1 个答案:

答案 0 :(得分:5)

您正在使用mysqli扩展来创建数据库连接。

然后你使用一个名为“mysql”的完全不同的扩展名(注意最后缺少“i”)来逃避。

转义需要现有的mysql连接。如果不存在,则将使用默认值隐式创建。这样做失败了。

但它并没有指出你正确的方向:你必须使用你创建连接的扩展中的转义函数。哪个是mysqli_real_escape_string(请注意“mysql”之后添加的“i”)。

一般免责声明:

使用MySQLI时,请使用预准备语句来摆脱转义字符串。

不要使用快速哈希函数来哈希密码。包括实现用于密码哈希的PHP5.5函数的库:https://github.com/ircmaxell/password_compat