현재 개인 사이트의 이메일 확인 시스템을 설정 중입니다. 나는 jQuery와 AJAX (코드가 뒤 따른다)로 이것을 처리하려고한다. 그러나 문제는 에코 2로 돌아 가지 않는다는 것입니다. 내 signup.inc.php에서 AJAX 호출 작업을 계속할 수 있습니다.PHPMailer가 AJAX (으)로 돌아 가기
컴파일러는 리디렉션 된 지점 (이 경우 send_ver_email($user_email)
)에서 에코로 돌아가고/계속해야합니다. 무엇이 잘못 되었습니까? 이것은 나에게는 꽤 새로운 경험이고, 많은 경험이 없지만, 나는 그 밖의 무엇을 시도하지 않습니다. 문서 이동 및 병합을 시도했지만 아무 것도 작동하지 않습니다.
JS에서 AJAX 호출 :
include_once "dbc.inc.php";
include_once "verification.inc.php";
if (isset($_POST)) {
//get posted data;
//select $statement
// error handlers
if (filter_var($user_email, FILTER_VALIDATE_EMAIL) === false) {
echo 0;
exit();
} else if ($statement->rowCount() > 0) {
echo 1;
exit();
} else {
// db entry (works great no problems there)
send_ver_email($user_email);
echo 2;
exit();
}
}
는 AJAX이 2 수신 : 잘 작동하고 데이터를 데이터베이스에 저장되므로이 문제없는 signup.inc.php
$.ajax({
type: 'POST',
url: 'include/signup.inc.php',
data: 'user_name=' + user_name +
'&user_email=' + user_email +
'&user_pw=' + user_pw,
dataType: 'html',
success: function (data) {
if (data == 0) { // invalid email
... do something
} else if (data == 1) { // account already exists
... do something
} else if (data == 2) {
**This is where it should land after the successful sign up**
return false;
}
}
});
send_ver_email($user_email)
이 비활성화 된 경우 의도 한대로 반응하므로 구조 나 send() 처리 방법과 관련이 있다는 것을 확신합니다. 이 함수는 전체 PHPMailer 패키지를 포함하는 verification.inc.php에 포함되어 있습니다. 그리고 이메일도 작동합니다! 다른 접근 방법 :
if($mail->send()) {
echo 2;
exit();
} else {
// some error handling
}
이 나는 또한 코드 스타일과 레이아웃 :
EDIT 1에 대한 팁에 매우 감사하고 매일 메일
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
include_once "../PHPMailer/src/Exception.php";
include_once "../PHPMailer/src/PHPMailer.php";
include_once "../PHPMailer/src/SMTP.php";
function generate_ver_code() {
// ...
}
function send_ver_email ($user_mail) {
$verCode = generate_ver_code();
$mail = new PHPMailer;
$mail->SMTPDebug = 2;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = '.......';
$mail->Password = '........';
$mail->setFrom('........', '.......');
$mail->addAddress('.........', '..........');
$mail->Subject = '...........';
$mail->Body = "......................";
$mail->isHTML(true);
$mail->AltBody = '.........';
$mail->send()
}
를 얻을 수 충돌을 일으키지 않고 주변에 로그온했지만 아약스는 여전히 에코를 등록하지 않습니다.
그리고 또 다른 시도가 나타났다 :
if($mail->send()) {
} else {
// some error handling
}
및 signup.inc.php에서이 너무 잘 작동
send_ver_email($user_email);
--------LOGGED HERE---------
echo 2;
exit();
}
...이 가장 나를 weirds을. 어딘가에서 정말 바보 같은 오타가 있거나 초보자 실수 (잘하면) 또는 아약스가이 에코 호출을 매우 혼란스러운 방식으로 처리합니다.
완전한 'send_ver_email'을 표시하십시오. 또는 거기에'exit;','die()'가 있는지 확인하십시오. – Jeff
코드가 편집되었습니다. 존재하지 않는 이유가 무엇입니까? – Kadepp
에코 문 앞에 충돌이 발생하지 않습니다. PHP 오류보고 기능이 켜져 있습니까?이 경우 Ajax 호출이 성공적으로 반환됩니까 (예 : 200 OK 상태)? 디버깅을해야합니다. – ADyson