【发布时间】:2015-01-19 15:35:55
【问题描述】:
买了一个允许用户建立网站的php软件。但是我付钱的那个人没有建立一个注册表单。我很危险,可以做基本的编码。但我觉得这超出了我的技能水平。我创建的表单可以很好地插入 mysql 数据库,但它会让使用此表单的新用户登录,因为密码字段没有散列。
HMTL 注册表单:
<form action="input.php" method="post" class="pcss3f pcss3f-type-hor">
<header>Fillout the below to join.</header>
<section class="state-normal">
<label for="">First Name</label>
<input type="text" name="first_name"/>
<i class="icon-user"></i>
</section>
<section class="state-normal">
<label for="">Last Name</label>
<input type="text" name="last_name"/>
<i class="icon-user"></i>
</section>
<section class="state-normal">
<label for="">Email</label>
<input type="email" name="email"/>
<i class="icon-envelope"></i>
</section>
<section class="state-normal">
<label for="">Password</label>
<input type="password" name="password"/>
<i class="icon-key"></i>
</section>
<footer>
<button type="button" onclick="window.location = 'index.html'">Back</button>
<button type="submit" class="color-blue">Submit</button>
</footer>
</form>
和 php 脚本:
<?php
$con = mysql_connect("localhost","name","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("instantw_builder", $con);
$sql="INSERT INTO users (first_name, last_name, username, email, password)
VALUES
('$_POST[first_name]','$_POST[last_name]','$_POST[email]','$_POST[email]','$_POST[password]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
我需要做什么来散列密码字段?
【问题讨论】:
-
危险:您使用的是an obsolete database API,应该使用modern replacement。您也容易受到SQL injection attacks的影响,现代 API 可以让您更轻松地从 defend 中获得。
-
这个daveismyname.com/login-and-registration-system-with-php-bp 有你需要的一切。 另外, 它使用 PDO 和准备好的语句和
password_hash()。 -
真的来看看函数password_hash()。