Php 当我以imap授权的登录形式使用错误的密码和电子邮件时,如何避免警告?
当我在imap_open的登录表单中使用错误的密码和电子邮件时,如何避免此警告和通知: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
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很多))