将单个发布的数据与两列数据相匹配是mysql


Match single posted data with two column is mysql

我有一个登录表单,它的工作原理就像如果用户的电子邮件密码和2张图片是正确的,那么echo登录了,但问题是我的电子邮件是匹配的密码是匹配的,但我如何用单个[select html tag]匹配图像。这是我的html表单…

<select name="image" multiple="multiple">
  <?php 
  for($i=0;$i<5;$i++)
   echo"<option  data-img-src='"$pic[$i]'" value='"$pic[$i]'" ></option>";
    ?>
  </select>

mysql查询在这里。。。。。。。

$mysql=mysql_query("SELECT * FROM `table` WHERE `email`='$email' AND `password`='$pass' AND `image1`='$image' AND `image2`='$image'") or die(mysql_error());
if(mysql_num_rows($mysql) ==1){
    $_SESSION['user']= $email;
    header("location: home.php");               
    } else {
    echo "error";
    session_destroy();
}

如果两个图像都匹配,则他将成功登录,否则将不登录

我们的想法是,每个"图像"都与代码和/或数据库中的一个ID绑定。当一个人选择一张图片时,他们实际上是在选择该图片所代表的ID。

用户在设置个人资料时,也会经历类似的过程,选择一个图像(将图像的ID保存在用户行中)。

登录时,只需将所选图像的ID与存储在用户行中的ID进行比较即可。

这是BASIC的前提,并没有涵盖这个特性的安全方面。

我还看到您的HTML支持用户选择多个图像(尽管您在SQL查询中最多只能使用/引用两个图像)。与选择单个图像相比,它的实现没有太大变化,所以这个答案仍然适用。

(请原谅我的术语)正如Sean的回答所表明的那样,每张图片都应该有一个id。

在注册过程中,在将值插入数据库之前,您可以生成一个随机数,并将图像重命名为生成的数字,然后将该数字添加到数据库中。文件结构类似于

users/images/random_id.jpeg

我将如何进行登录过程是,

在更改输入时,我将执行ajax请求,以获取和用户的电子邮件或用户名相关联的唯一id,以及和该id相关联的图像和其他四个随机图像。

然后剩下的很简单,用户会选择一个图像。我们当然会将其唯一标识符与数据库中存在的标识符进行匹配。

如果匹配,请登录。

这是合乎逻辑的做法。

除非这是一个学习练习,否则请改用事先准备好的陈述。