当我在imap_open的登录表单中使用错误的密码和电子邮件时,如何避免此警告和通知:
警告:“ imap_open():无法打开流{imap.gmail.com:993/imap/ssl/novalidate-cert}收件箱”和
注意:未知:IMAP协议错误:客户端中止了AUTHENTICATE命令。 i145-v6mb122753825lfi(errflg = 2)在第0行上未知
通知:未知:在第0行的“未知”中取消了IMAP身份验证(errflg = 2)
当我使用错误的密码和电子邮件,关闭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>";
}
}
答案 0 :(得分:0)
您可以使用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。