为了账号安全,请及时绑定邮箱和手机立即绑定

控制电子邮件登录

控制电子邮件登录

PHP
MMMHUHU 2021-06-29 17:58:40
我在此表单上有一个小问题,我希望对用户的电子邮件进行检查,而不仅仅是对密码进行检查。因为现在他的行为是在 db 中注册的电子邮件但不正确的密码留下错误消息的情况下,但如果电子邮件不正确,则不会发出检查。我还想包括电子邮件检查<?php ob_start(); session_start(); ?><?php$messaggio = "";if (isset($_POST['submit'])) {    include 'connection/cnt.php';    $email = $connessione->real_escape_string($_POST['email']);    $password = $connessione->real_escape_string($_POST['password']);    $query = $connessione->query("SELECT *FROM collaboratori WHERE email='$email'");    if ($query->num_rows > 0)     {        $data = $query->fetch_array();        if (password_verify($password, $data['password'])) {        $_SESSION['collaboratore'] = $data['ID_Collaboratore'];        ?>        <script type="text/javascript">        window.location = "home.php";        </script>           <?php       }    else        $messaggio = "Please check your inputs!";    }}?>
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您帖子中的缩进具有误导性。在else看起来像它去与if ($query->num_rows > 0),但它实际上与去if (password_verify($password, $data['password'])。


您需要一个else用于$query_num_rows检查的块。


你也不应该转义密码,因为你没有在 SQL 查询中使用它(除非你password_hash()在保存密码时在调用之前也犯了转义它的错误)。


<?php ob_start(); session_start(); ?>

<?php

$messaggio = "";

if (isset($_POST['submit'])) 

{

    include 'connection/cnt.php';

    $email = $connessione->real_escape_string($_POST['email']);

    $password = $_POST['password'];

    $query = $connessione->query("SELECT *FROM collaboratori WHERE email='$email'");


    if ($query->num_rows > 0) 

    {

        $data = $query->fetch_array();

        if (password_verify($password, $data['password'])) {

            $_SESSION['collaboratore'] = $data['ID_Collaboratore'];

            ?>

            <script type="text/javascript">

            window.location = "home.php";

            </script>   

            <?php   

        } else {

            $messaggio = "Please check your inputs!";

        }

    } else {

        $messaggio = "Please check your inputs!";

    }

}

?>

您还可以通过组合分配和检查来简化它。无需测试num_rows——如果没有匹配的行将$query->fetch_array()返回FALSE。


<?php ob_start(); session_start(); ?>

<?php

$messaggio = "";

if (isset($_POST['submit'])) 

{

    include 'connection/cnt.php';

    $email = $connessione->real_escape_string($_POST['email']);

    $password = $_POST['password'];

    $query = $connessione->query("SELECT *FROM collaboratori WHERE email='$email'");


    if ($data = $query->fetch_array() && password_verify($password, $data['password'])) {

        $_SESSION['collaboratore'] = $data['ID_Collaboratore'];

        ?>

        <script type="text/javascript">

        window.location = "home.php";

        </script>   

        <?php   

    } else {

        $messaggio = "Please check your inputs!";

    }

}

?>


查看完整回答
反对 回复 2021-07-02
  • 1 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信