0

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

我遇到的问题是,他们提供的示例注册页面不是很完整,或者至少不是像我这样的新手可以理解的方式。以下是他们为注册页面示例发布的内容。有人可以填写一下,这样我就不会迷路了吗?我猜我需要围绕此构建一个表单,以便用户可以创建帐户,但至于//add your insert to database script here部分以及从他们发布的内容中提取/放置表单变量的位置,我到目前为止迷失方向.

// 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();
}

与往常一样,非常感谢任何帮助。先感谢您。

4

2 回答 2

0

您对表格的猜测是正确的。有一个“新帐户表格”,要求您输入用户名、电子邮件和密码。可能在那个 php 代码的早期,你应该有这样的东西:

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

也就是说,从包含在“新帐户表单”中提交的值的 $_POST 数组中检索值。至于插入部分,

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

如果为 $insert_stmt 分配了一个有效值,则如果条件为真,我猜如果尚未建立与数据库的连接或类似的东西,它将为空。

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

该指令

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

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

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

该指令

$insert_stmt->execute();

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

于 2013-10-03T11:20:29.707 回答
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);
于 2013-10-03T04:48:44.420 回答