尝试使用php创建登录

时间:2015-02-06 13:03:57

标签: php mysql

当我将电子邮件和密码存储在数据库中,然后发布相同的电子邮件和密码时,它与最新插入的电子邮件和密码匹配;如果我尝试使用之前插入的其他电子邮件和密码登录,则会显示错误。

<?php
  include 'connection.php';
  if(isset($_POST['Login'])) {
    $mail = $_POST['email'];
    $pwd = $_POST['password'];

    $query="SELECT email,password FROM fb_log"; 
    $result=mysql_query($query);
    while($data=mysql_fetch_array($result)) {
      if($mail==$data['email'] && $pwd==$data['password']) {
        $_SESSION['email'] = $mail;
        $_SESSION['password'] = $pwd;
        header("location:home.php");
      } else {
        header("location:bhag.php");
      }
    }
  }
?>

5 个答案:

答案 0 :(得分:1)

  

避免使用mysql_函数已弃用

     

使用mysqli_功能

以下示例使用mysqli_ functions:

<?php
include 'connection.php';
if(isset($_POST['Login'])) 
{   
    //uses mysqli connection
    $conn = new mysqli($servername, $usr, $passwd, $dbname); 
    $mail = $_POST['email'];
    $pwd = $_POST['password'];

    /*search the email and passwd via the sql query itself
      to avoid looping through the huge dataresult in your previous code
    */
    $query="SELECT email,password FROM fb_log where email='$mail' AND password='$pwd"; 
    $res = $conn->query($query);
    if($res->num_rows >0){
        $_SESSION['email'] = $mail;
        $_SESSION['password'] = $pwd;
        $conn->close();
        header("location:home.php");
    }else{
        $conn->close();
        header("location:bhag.php");
    }
}

?>

答案 1 :(得分:0)

<?php
include 'connection.php';
if(isset($_POST['Login'])) 
{       $mail = $_POST['email'];
    $pwd = $_POST['password'];

$query="SELECT email,password FROM fb_log"; 
$result=mysql_query($query);
$flag=0;
while($data=mysql_fetch_array($result))
{
if($mail==$data['email'] && $pwd==$data['password'])
{
 $flag=1;
 break;
}
}
if($flag==1)
 header("location:home.php");
else
header("location:bhag.php");
 }

?>

答案 2 :(得分:0)

你做的方式不合适。您可以在select查询中简单地传递post变量,而不是使用while循环。

<?php
include 'connection.php';
if(isset($_POST['Login'])) {
    $mail = $_POST['email'];
    $pwd = $_POST['password'];

    $query='SELECT email,password FROM fb_log WHERE email = "'.$mail.'" AND password = "'.$pwd.'" '; 
    $result=mysql_query($query);
    $data=mysql_fetch_array($result);
    if(isset($data) && !empty($data)) {
           $_SESSION['email'] = $mail;
           $_SESSION['password'] = $pwd;
           header("location:home.php");
    } else {
           header("location:bhag.php");
    }
}
?>

希望它能解决你的问题。

答案 3 :(得分:0)

首先,您不需要从'fb_log'表中选择所有数据。

您可以使用mysql有条件地选择字段:

$query = "SELECT email,password
          FROM fb_log
          WHERE email = '$mail'
          AND password = 'md5($pwd)'";

$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
    // You have some result
} else {
    // Result is empty
}

我还建议您使用mysqli而不是mysql并验证$ _POST数据。

答案 4 :(得分:0)

这是让你忙碌的东西,你可以沿途学到一些东西。让我们一步一步地,或者说逐行。

<?php
  include 'connection.php';
  if(isset($_POST['Login'])) {
    $mail = $_POST['email'];
    $pwd = $_POST['password'];

    $query="SELECT email,password FROM fb_log"; 
    $result=mysql_query($query);
    while($data=mysql_fetch_array($result)) {
      if($mail==$data['email'] && $pwd==$data['password']) {
        $_SESSION['email'] = $mail;
        $_SESSION['password'] = $pwd;
        header("location:home.php");
      } else {
        header("location:bhag.php");
      }
    }
  }
?>

$query="SELECT email,password FROM fb_log";

这是您的主要问题所在。目前,此查询将返回fb_log表中的所有电子邮件和密码。你正在寻找一个特定的条目。这是你的WHERE子句,如下所示:

$query="SELECT email,password FROM fb_log WHERE email=SOMETHING AND password=SOMETHING";

我建议使用数据库抽象层,例如MySQLiPDO,但我会更加困惑,所以让我们采取SQL注入倾向的路径,并这样做:

$query="SELECT email,password FROM fb_log WHERE email=$_POST['email'] AND password=$_POST['password']";

现在,您的查询将仅返回您要查找的电子邮件/密码组合。

上面的代码有很多问题,但暂时不要强调自己。学习基础知识,并在您准备好时开始研究更高级的主题。

如果您有这种感觉,请查看at this tutorial on PDO

另外,如果你遇到困难,请在这里给我一个个人信息,我会帮助你。