gpt4 book ai didi

php - MySQL 未添加到数据库

转载 作者:行者123 更新时间:2023-11-29 14:53:14 25 4
gpt4 key购买 nike

我有一个可以使用以下代码进行注册的表格:

<form method="post">
Username<input type="text" size="12" maxlength="16" name="username"><br />
Password<input type="password" size="12" maxlength="32" name="password"><br />
<input type="submit" name="submit" value="Sign Up!" />
</form>

然后我也检查用户名是否包含任何特殊字符,如果不包含,则运行此代码:

define("DB_SERVER", "localhost");
define("DB_USER", "will");
define("DB_PASS", "blahblah");
define("DB_NAME", "blahblah");
define("TBL_USERS", "users");

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $connection) or die(mysql_error());

function addNewUser($username, $password){
global $connection;
$username =$POST['username'];
$password =$_POST['password'];
$password1 = md5($password);
$q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password1')";
return mysql_query($q, $connection);
}

这应该将用户名和密码添加到我的表中,并将密码作为 md5 哈希值,但事实并非如此,有人可以帮助我吗。

谢谢!

最佳答案

首先:不要使用连接字符串将值插入数据库。这是一个主要的安全漏洞,可以使用一种称为 SQL 注入(inject)的技术来利用它。您可以通过使用所谓的 Prepared Statements 来防止这种情况发生。 .

这应该可以解决您的问题:您可能没有真正调用 addNewUser 函数。您只需连接数据库即可。

试试这个:

define("DB_SERVER", "localhost");
define("DB_USER", "will");
define("DB_PASS", "blahblah");
define("DB_NAME", "blahblah");
define("TBL_USERS", "users");

function addNewUser($username, $password){
global $connection;
$password1 = md5($password);
$username = mysql_real_escape_string($username);
$q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password1')";
return mysql_query($q, $connection);
}

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $connection) or die(mysql_error());
addNewUser($_POST["text"], $_POST["password"]);

关于php - MySQL 未添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com