Как избежать предупреждения, когда я использую неверный пароль и адрес электронной почты в форме авторизации imap авторизации? - PullRequest
0 голосов
/ 09 сентября 2018

Как избежать этого предупреждения и уведомлений, когда я использую неправильный пароль и адрес электронной почты в форме входа в систему в imap_open:

Предупреждение: 'imap_open (): не удалось открыть поток {imap.gmail.com:993/imap/ssl/novalidate-cert automotiveINBOX' и

Примечание: неизвестно: ошибка протокола IMAP: клиент прервал команду AUTHENTICATE. i145-v6mb122753825lfi (errflg = 2) в Unknown в строке 0

Примечание: Неизвестно: Аутентификация IMAP отменена (errflg = 2) в Неизвестно в строке 0

Мне нужна проверка, когда я использую неправильный пароль и адрес электронной почты, закрываю подключение к 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($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>

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>";
   }
}

1 Ответ

0 голосов
/ 09 сентября 2018

Вы можете использовать imap_errors(), чтобы избавиться от предупреждений и уведомлений:

Когда вызывается imap_errors (), стек ошибок впоследствии очищается.

Источник

Просто позвоните перед вызовом imap_close().


Также обратите внимание, что в этом блоке вы дважды вызываете imap_open(),один раз в назначении внутри условия if и один раз сразу после него:

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

Это не обязательно.Если присвоение $imap = imap_open($mailbox, $auth_user, $auth_password) не возвращает FALSE, вам не нужно открывать imap еще раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...