【问题标题】:Data redundancy problem in my PHP to mysql我的 PHP 到 mysql 中的数据冗余问题
【发布时间】:2021-03-24 03:57:35
【问题描述】:

任何人都可以查看我的 PHP 代码吗?如何将我的 PHP 中的数据冗余修复到 mysql?我不希望将相同的数据存储到我的数据库中。谢谢你

<?php

    $email = "";
    $passwords   = "";
    $firstname   = "";
    $lastname   = "";
    $errors = array(); 

    $db = mysqli_connect('localhost', 'root', '', 'wdt_assignment');


    if (isset($_POST['email'])) {
 
    $email = mysqli_real_escape_string($db, $_POST['email']);
    $password = mysqli_real_escape_string($db, $_POST['password']);
    $firstname = mysqli_real_escape_string($db, $_POST['firstname']);
    $lastname = mysqli_real_escape_string($db, $_POST['lastname']);

    if (empty($email)) { array_push($errors, "email is required"); }
    if (empty($password)) { array_push($errors, "password is required"); }
    if (empty($firstname)) { array_push($errors, "firstname is required"); }
    if (empty($lastname)) { array_push($errors, "lastname is required"); }
    }


    $user_check_query = "SELECT * FROM customer WHERE email='$Email' OR password='$Password' LIMIT 1";
    $result = mysqli_query($db, $user_check_query);
    $user = mysqli_fetch_assoc($result);

    if ($user) { // if user exists
    if ($user['email'] === $Email) {
      array_push($errors, "email already exists");
    }

    if ($user['password'] === $Password) {
      array_push($errors, "password already exists");
    }
  }
    if (count($errors) == 0) {
 
      $query = "INSERT INTO customer (email, password, firstname, lastname) 
                VALUES('$email', '$password', '$firstname','$lastname')";
      mysqli_query($db, $query);
      $_SESSION['email'] = $email;
      $_SESSION['success'] = "You are now logged in";
  }
?>

【问题讨论】:

标签: php phpmyadmin


【解决方案1】:

我建议你不要告诉用户这个密码已经存在于数据库中。我附上代码来检查电子邮件是否存在。

<?php

$email = "";
$passwords   = "";
$firstname   = "";
$lastname   = "";

$errors = array();

$db = mysqli_connect('localhost', 'root', '', 'wdt_assignment');

if (isset($_POST['email']))
{
    $email = mysqli_real_escape_string($db, $_POST['email']);
    $password = mysqli_real_escape_string($db, $_POST['password']);
    $firstname = mysqli_real_escape_string($db, $_POST['firstname']);
    $lastname = mysqli_real_escape_string($db, $_POST['lastname']);

    if (empty($email)) { array_push($errors, "email is required"); }
    if (empty($password)) { array_push($errors, "password is required"); }
    if (empty($firstname)) { array_push($errors, "firstname is required"); }
    if (empty($lastname)) { array_push($errors, "lastname is required"); }

    if (count($errors) == 0)
    {
        $user_check_query = "SELECT * FROM customer WHERE email='$Email' OR password='$Password' LIMIT 1";
        $result = mysqli_query($db, $user_check_query);
        $affected_rows = mysqli_affected_rows($db);

        if ($affected_rows > 0)
        {
            array_push($errors, "email already exists");
        }
        else
        {
            $query = "INSERT INTO customer (email, password, firstname, lastname) 
            VALUES('$email', '$password', '$firstname','$lastname')";
            mysqli_query($db, $query);
            $_SESSION['email'] = $email;
            $_SESSION['success'] = "You are now logged in";
        }
    }
}
?>

【讨论】:

  • 嗨,谢谢你的朋友,但是当我输入存在电子邮件时,错误并没有显示“电子邮件已经存在”。
  • 这背后的逻辑导致糟糕的用户体验。您告诉用户该电子邮件存在,如果它不存在,但有人使用相同的密码。
  • 您应该重定向用户以显示电子邮件是否存在
猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多