Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当我以imap授权的登录形式使用错误的密码和电子邮件时,如何避免警告?_Php_Imap - Fatal编程技术网

Php 当我以imap授权的登录形式使用错误的密码和电子邮件时,如何避免警告?

Php 当我以imap授权的登录形式使用错误的密码和电子邮件时,如何避免警告?,php,imap,Php,Imap,当我在imap_open的登录表单中使用错误的密码和电子邮件时,如何避免此警告和通知: function open_mailbox($auth_user, $auth_password) { $mailbox = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX'; if($imap = imap_open($mailbox, $auth_user, $auth_password)){ imap_open($m

当我在imap_open的登录表单中使用错误的密码和电子邮件时,如何避免此警告和通知:

function open_mailbox($auth_user, $auth_password) {
    $mailbox = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';
    if($imap = imap_open($mailbox, $auth_user, $auth_password)){
        imap_open($mailbox, $auth_user, $auth_password);
        echo "success";
    } else {
        imap_close($imap);
        echo 'fail';
    }
}
警告:'imap_open():无法打开流{imap.gmail.com:993/imap/ssl/novalidate cert}收件箱'

注意:未知:IMAP协议错误:客户端中止了身份验证命令。第0行未知的i145-v6mb122753825lfi(errflg=2)

注意:未知:第0行未知中的IMAP身份验证已取消(errflg=2)

当我使用错误的密码和电子邮件时,我需要一些检查,关闭imap连接并像这样回显smth“错误的密码或电子邮件!”。我试图唤起这一点,但它不起作用。请告诉我,我做错了什么

功能imap_打开:

function open_mailbox($auth_user, $auth_password) {
    $mailbox = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';
    if($imap = imap_open($mailbox, $auth_user, $auth_password)){
        imap_open($mailbox, $auth_user, $auth_password);
        echo "success";
    } else {
        imap_close($imap);
        echo 'fail';
    }
}
登录表单的功能

function display_login_form($action) { ?>
<form method="post" action="index.php?action=log-in">
    <div>
        <div>
            <div>
                <p>LOGIN</p>
            </div>
            </br>
            <div>
                <div>
                    <div>
                        <p>MAIL</p>
                    </div>
                    <div>
                        <input type="text" name="username" required>
                    </div>
                </div>
                </br>
                <div>
                    <div>
                        <p>PASSWORD</p>
                    </div>
                    <div>
                        <input type="password" name="password" required>
                    </div>
                </div>
                </br>
                <div>
                    <input type='submit' value='LOGIN'>
                </div>
            </div>
        </div>
    </div>
</form>
函数显示\登录\表单($action){?>
登录


邮寄


密码


index.php

$username = "";
$password = "";
if(isset($_POST['username']) && !empty($_POST['username'])){
    $username = $_POST['username'];
}
if(isset($_POST['password']) && !empty($_POST['password'])){
    $password = ($_POST['password']);
}
if(null!==($username && $password)) {
    if(open_mailbox($username, $password)) {
        $action = 'view-mailbox';
        $_SESSION['auth_user'] = $username;
        $_SESSION['auth_password'] = $password;
    } else {
        $status .= "<p>Wrong password or email</p>";
   }
}
$username=”“;
$password=“”;
if(设置($\u POST['username'])和&!空($\u POST['username'])){
$username=$_POST['username'];
}
if(设置($\u POST['password'])和&!空($\u POST['password'])){
$password=($_POST['password']);
}
如果(null!==($username&&$password)){
如果(打开邮箱($username,$password)){
$action='查看邮箱';
$\u会话['auth\u user']=$username;
$\u会话['auth\u password']=$password;
}否则{
$status.=“错误的密码或电子邮件”

”; } }
您可以使用
imap\u errors()
删除警告和通知:

调用imap_errors()时,随后将清除错误堆栈

只需在调用
imap\u close()
之前调用它即可


还要注意,在这个块中调用两次
imap\u open()
,一次在if条件内的赋值中,一次在if条件之后:

if($imap = imap_open($mailbox, $auth_user, $auth_password)){
    imap_open($mailbox, $auth_user, $auth_password);
    echo "success";
}

这是不必要的。如果
$imap=imap\u open($mailbox,$auth\u user,$auth\u password)
分配没有返回
FALSE
,您不需要再次打开imap。

我的答案对您有帮助吗?@Barthy是的,TNX很多))