mysql插入数据库注册页面的例子?

时间:2013-10-02 15:47:28

标签: php mysql insert registration accounts

我正在尝试通过php / msql创建安全登录,事情进展顺利。我一直在这里遵循这个教程:http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL而且令人惊讶的是我已经完成了一切工作并且与我的页面和数据库有关。通过这段代码,我可以更好地理解它们如何组合在一起。

我遇到的问题是,他们提供的示例注册页面不是很完整,或者至少不像我这样的新手可以解决这个问题。以下是他们为注册页面示例发布的内容。有人能够填补它,所以我少迷失吗?我猜我需要围绕这个构建一个表单,以便用户可以创建帐户,但是 //将您的插入添加到数据库脚本部分以及从哪里拉取/放置表单变量,我到目前为止迷失方向。

// The hashed password from the form
$password = $_POST['p']; 
// Create a random salt
$random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));
// Create salted password (Careful not to over season)
$password = hash('sha512', $password.$random_salt);

// Add your insert to database script here. 
// Make sure you use prepared statements!
if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)")) {    
   $insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt); 
   // Execute the prepared query.
   $insert_stmt->execute();
}

与往常一样,非常感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我只是稍微修改一下代码,以便你能正确使用

 // The hashed password from the form

 $password = $_POST['p']; 

 // Create a random salt

 $random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));

// Create salted password (Careful not to over season)

 $password = hash('sha512', $password.$random_salt);


//insert query to insert values in to the databse table


 $sql = "INSERT INTO members (username, email, password, salt) VALUES($username,$password,, ?)";

 //for executing the query


 mysql_query($sql) or die("!query);

答案 1 :(得分:0)

您对表单的猜测是正确的。有一个“新帐户表单”,会询问您的用户名,电子邮件和密码。 可能在早期的PHP代码中你应该有这样的东西:

$username = $_POST['username';
$email = $_POST['email'];

这是从$ _POST数组中检索包含“NEW ACCOUNT FORM”中提交的值的值。至于插入部分,

if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)"))

如果为$ insert_stmt指定了有效值,则此if条件为true,我猜如果尚未建立与数据库的连接或类似的连接,则它将为null。

$ insert_smtp现在有一些东西作为插入查询的“模板”,它缺少参数。 “?”符号,代表您稍后发送的参数。

指令

$insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt);

将绑定标记为“?”的参数在“模板”中。

不直接在INSERT语句中直接输入用户名,电子邮件,密码的原因是,它们可能包含可能导致SQL注入攻击的SQL语句。通过“bind_param”传递参数,该函数在将变量放入插入之前负责清理变量。

指令

$insert_stmt->execute();

最后在数据库上执行查询。