【问题标题】:Validate email with database使用数据库验证电子邮件
【发布时间】:2010-10-22 21:12:54
【问题描述】:

我创建了一个表单并使用 PHP 验证了所有内容,但不知道如何验证来自数据库的电子邮件。如果我在数据库中输入了用户名,我希望它显示错误。我有 connect.php 和

只是一个例子-

这是我验证密码的方式 -

if(!empty($_POST['password']))
{
 if($_POST['password'] != $_POST['cpass']) 
 {
  $errors[] = 'The password and confirm password do not match.';
 }
 else
 {
  $p=trim($_POST['password']);
 }
}

这就是我想要做的-

$getusername = "SELECT username FROM users WHERE ($u,$username)";
if($getusername)
{
    echo 'Username is already in use.';
}
else
{
    $g=trim($_POST['username']);

}

这会导致解析错误。

【问题讨论】:

  • 你知道如何使用 WHERE 语句运行 SELECT 查询吗?
  • 请改写您的问题。很难理解你在问什么。
  • 我知道如何使用 where...下一步运行 select?
  • 嗯,对用户名和/或电子邮件运行选择。如果结果是结果,那么它是有效的,如果不是,那么它是无效的。现在取决于你如何使用这些东西,它可能比这更复杂,但这就是基本的想法......这就是你通过你给我们的信息所能得到的一切。也有点不真实...如果您将它们从$_POST 中拉出,您应该对那些看起来不像您正在做的密码进行散列和加盐。
  • @alin 是的,这正是我想要做的。

标签: php database authentication


【解决方案1】:
// first define the username from the $_POST variable
// make sure to escape the value to prevent SQL injection
$username = mysql_real_escape_string(trim($_POST['username']));

// select a user with the posted username
$sql = "SELECT username FROM users WHERE username = '$username' LIMIT 1";

// run the query
$res = mysql_query($sql) or die(mysql_error());

// see if there's a result
if (mysql_num_rows($res) > 0) {
  echo 'This username is already taken';
} else {
  // .. do stuff
}

【讨论】:

  • 作为一个初学者,你能解释一下你为什么使用LIMIT 1吗?谢谢。
  • 有多种方法可以使用LIMIT,但在这种情况下,想法是在找到单个结果时可以中止查询。由于我们正在寻找可能的重复项,因此单个结果已经足以让我们确定存在个重复项;进一步搜索没有意义。在这种情况下,它可能不会对速度产生太大影响,但如果您正在搜索大量记录,它可能会产生影响。
  • @Johnson 我建议你用谷歌搜索一些简单的东西,比如“LIMIT 在 mysql 中的用途,你可以节省时间和精力,还可以从 mysql 文档中学习新东西”
猜你喜欢
  • 1970-01-01
  • 2015-10-06
  • 2011-08-12
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多