嗨因某些原因我不知道我一直收到以下错误:
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'); ";
?>
谢谢!
答案 0 :(得分:5)
您正在使用mysqli扩展来创建数据库连接。
然后你使用一个名为“mysql”的完全不同的扩展名(注意最后缺少“i”)来逃避。
转义需要现有的mysql连接。如果不存在,则将使用默认值隐式创建。这样做失败了。
但它并没有指出你正确的方向:你必须使用你创建连接的扩展中的转义函数。哪个是mysqli_real_escape_string
(请注意“mysql”之后添加的“i”)。
一般免责声明:
使用MySQLI时,请使用预准备语句来摆脱转义字符串。
不要使用快速哈希函数来哈希密码。包括实现用于密码哈希的PHP5.5函数的库:https://github.com/ircmaxell/password_compat