【发布时间】:2017-03-10 19:24:46
【问题描述】:
我正在尝试验证我的数据库中是否存在用户名和电子邮件地址,并且尝试执行 if、elseif、else 语句无济于事。
我想先检查一下用户名是否正常——显然如果不是,就会出现一个回显语句。如果用户名不存在,则运行 elseif 语句以查看电子邮件地址是否唯一 - 如果不是,则会出现另一个 echo 语句。对于最后的语句,如果所有其他条件都返回 false,我想运行下面的代码,以便将用户的输入提交到数据库。
我最初尝试使用语句声明两个变量以检查 username=$username 和 email_address=$email_address 然后检查从 mysqli_query 返回的行数是否大于 1 的用户名。我输入了一个 elseif 语句,但输入的是电子邮件地址,但随后我输入了一个 else 语句,其中 {} 括号中的代码如下。
我删除了原始代码,因为抛出了太多错误,并且当存在更优雅的方式来完成我的工作时,可能过于复杂和混乱。
任何帮助将不胜感激。
if(isset($_POST['submit']))
{
$sql = "INSERT INTO users (first_name, last_name, username, email_address, password, gender, city, country, verification_code, verified, sign_up_date) VALUES (
'$first_name',
'$last_name',
'$username',
'$email_address',
'$password',
'$gender',
'$city',
'$country',
'$verification_code',
'1',
'$sign_up_date')";
$result = mysqli_query($conn,$sql);
header("Location:confirmation.php");
}
【问题讨论】:
-
您可以使列具有唯一约束。
-
在哪里可以注册我的朋友Bobby Tables?
-
永远不要存储纯文本密码!请使用 PHP 的 built-in functions 来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,您可以使用
password_hash()compatibility pack。在散列之前,请确保您 don't escape passwords 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。 -
@JayBlanchard 密码是 sha512,带有两个用于加密的盐。
-
这还不够好@Dreamception。 PHP 的函数提供随机盐和比 SHA512 更好的散列方法