ajax işlem
ajax tabanlı sayfa yenilenmeden link değiştiren bir sistemim var
form bilgilerinden sonra info vermek istiyorum ama bir türlü yazdıramadım nası yapabilirim
<?php
require_once("panel/fonksiyon.php");
$mail = $db->query("SELECT * FROM email_ayar LIMIT 1")->fetch(PDO::FETCH_ASSOC);
$ayar = $db->query("SELECT * FROM ayar LIMIT 1")->fetch(PDO::FETCH_ASSOC);
if($_POST){
$kaydet=$db->prepare("INSERT INTO istek SET
ad=:ad,
mail=:mail,
telefon=:telefon,
parca=:parca,
mesaj=:mesaj
");
$insert=$kaydet->execute(array(
'ad' => $_POST['ad'],
'mail' => $_POST['mail'],
'telefon' => $_POST['telefon'],
'parca' => $_POST['parca'],
'mesaj' => $_POST['mesaj']
));
if ($insert) {
$smtpuser=$mail['email'];
$smtpgidicek=$ayar['email'];
$smtphost=$mail['host'];
$smtppass=$mail['sifre'];
if(isset($_POST['ad']) && isset($_POST['mail']) && isset($_POST['telefon']) && isset($_POST['parca']) && isset($_POST['mesaj'])) {
function epostakontrol($email){if (filter_var($email, FILTER_VALIDATE_EMAIL)){return 1;} else {return 0;}}
$gelen_mail = $smtpuser; $mail_kontol=epostakontrol($gelen_mail);
if(empty($_POST['ad']) || empty($_POST['mail']) || empty($_POST['telefon']) || empty($_POST['parca']) || empty($_POST['mesaj'])) {
echo 'Lütfen boş yer bırakmayın.';
} else if($mail_kontol == "0"){echo 'Lütfen e-posta adresini doğru girin.';} else{
include 'PHPMailer-master/class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->isHTML(true);
$mail->SMTPAuth = true;
$mail->CharSet = "utf-8";
$mail->Host = $smtphost;
$mail->Port = "587";
$mail->Username = $smtpuser;
$mail->Password = $smtppass;
$mail->SetFrom($mail->Username, $_POST['ad']);
$mail->AddAddress($smtpgidicek, $adres . " admin");
$mail->Subject = $site;
$bodyContent =
'<meta charset="utf-8" />
<center>
<meta name="viewport" content="width=device-width, initial-scale=1">
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#ffffff" width="100%" style="max-width:600px;padding:10px" align="center">
<tbody>
<tr>
<th width="120"><img src="https://i.hizliresim.com/MoCUn6.png"
width="90" height="80" class="CToWUd"></th>
<th style="text-align:left">
<h1 style="margin:0;color:#435062;font-size:24px;font-family:Montserrat,sans-serif;font-weight:600">Yeni Bir İstek Varr !</h1>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">Ad Soyad</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST['ad'].'</th>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">Mail Adresi</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST["mail"].'</th>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">Telefon Numarası</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST["telefon"].'</th>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">İstediği Parça</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST["parca"].'</th>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">Açıklama (Özel Mesaj)</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST["mesaj"].'</th>
</tr>
</tbody>
</table><br><br></center>';
$mail->Body = $bodyContent;
if($mail->Send()) {
echo '<h4>Başvurunuz Alındı En Yakın Zamanda İletişime Geçeceğiz</h4><br><br>';
}else{
echo '<h4>Bir Hata Oluştu Tekrar Deneyiniz</h4>';
}
}}
}
}
?>
Çok karmaşık takılıyorsunuz hocam. Kodları bir parçalayın, hepsi bir yerde olmasın. İleişim formunu bir dosyadan çağırın mesela. form.php diye bir dosya oluşturun örneğin, içeriğini şöyle yapın
<meta charset="utf-8" />
<center>
<meta name="viewport" content="width=device-width, initial-scale=1">
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#ffffff" width="100%" style="max-width:600px;padding:10px" align="center">
<tbody>
<tr>
<th width="120"><img src="https://i.hizliresim.com/MoCUn6.png"
width="90" height="80" class="CToWUd"></th>
<th style="text-align:left">
<h1 style="margin:0;color:#435062;font-size:24px;font-family:Montserrat,sans-serif;font-weight:600">Yeni Bir İstek Varr !</h1>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">Ad Soyad</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST['ad'].'</th>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">Mail Adresi</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST["mail"].'</th>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">Telefon Numarası</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST["telefon"].'</th>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">İstediği Parça</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST["parca"].'</th>
</tr>
<tr>
<th style="text-align:left;padding-left:16px;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#8b929c;line-height:28px;border-left:2px solid #fff;padding-left:10px">
<div style="width:100px">Açıklama (Özel Mesaj)</div>
</th>
<th style="text-align:left;font-family:Montserrat,sans-serif;font-weight:400;font-size:14px;color:#435062;line-height:28px;border-left:2px solid #edf2f9;padding-left:10px">'.$_POST["mesaj"].'</th>
</tr>
</tbody>
</table><br><br>
</center>
Yukarıdaki sayfayı da şöyle değiştirin
<?php
require_once("panel/fonksiyon.php");
$mail = $db->query("SELECT * FROM email_ayar LIMIT 1")->fetch(PDO::FETCH_ASSOC);
$ayar = $db->query("SELECT * FROM ayar LIMIT 1")->fetch(PDO::FETCH_ASSOC);
function postControl(array $postData): bool
{
$postData = array_map(function ($item) {
return trim(strip_tags(str_replace("\xc2\xa0", '', $item)));
}, $postData);
$return = true;
$names = ['ad', 'mail', 'telefon', 'parca', 'mesaj'];
foreach ($names as $value) {
if (array_key_exists($value, $postData)) {
if (empty($postData[$value])) {
$return = false;
break;
}
} else {
$return = false;
break;
}
}
return $return;
}
function epostakontrol($email): bool
{
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
if($_POST){
$kaydet = $db->prepare("INSERT INTO istek SET
ad=:ad,
mail=:mail,
telefon=:telefon,
parca=:parca,
mesaj=:mesaj
");
$insert = $kaydet->execute([
'ad' => $_POST['ad'],
'mail' => $_POST['mail'],
'telefon' => $_POST['telefon'],
'parca' => $_POST['parca'],
'mesaj' => $_POST['mesaj']
]);
if ($insert) {
$smtpuser=$mail['email'];
$smtpgidicek=$ayar['email'];
$smtphost=$mail['host'];
$smtppass=$mail['sifre'];
if (postControl($_POST)) {
$gelen_mail = $smtpuser;
if (epostakontrol($gelen_mail)) {
include 'PHPMailer-master/class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->isHTML(true);
$mail->SMTPAuth = true;
$mail->CharSet = "utf-8";
$mail->Host = $smtphost;
$mail->Port = "587";
$mail->Username = $smtpuser;
$mail->Password = $smtppass;
$mail->SetFrom($mail->Username, $_POST['ad']);
$mail->AddAddress($smtpgidicek, $adres . " admin");
$mail->Subject = $site;
ob_start();
require_once 'form.php';
$bodyContent = ob_get_clean();
$mail->Body = $bodyContent;
if($mail->Send())
$response = [
'status' => true,
'text' => 'Başvurunuz Alındı En Yakın Zamanda İletişime Geçeceğiz'
];
else
$response = [
'status' => false,
'text' => 'Bir Hata Oluştu Tekrar Deneyiniz'
];
} else
$response = [
'status' => false,
'text' => 'Lütfen e-posta adresini doğru girin.'
];
} else
$response = [
'status' => false,
'text' => 'Boş veya eksik bilgi girdiniz, kontrol edip yeniden deneyiniz'
];
} else
$response = [
'status' => false,
'text' => 'Mesaj veri tabanına kaydedilemedi!'
];
echo json_encode($response);
}
Ajax kodlarınızın olduğu sayfa da şöyle bir şey olsun diyelim:
<!doctype html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form id="iletisim-form" action="" method="post">
Ad: <input type="text" name="ad"><br>
Mail: <input type="email" name="mail"><br>
Telefon: <input type="tel" name="telefon"><br>
Parça: <input type="text" name="parca"><br>
Mesaj: <textarea name="mesaj" id="mesaj" cols="30" rows="10"></textarea><br>
<input type="submit">
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(function () {
$("#iletisim-form").on("submit", function (e) {
e.preventDefault()
$.ajax('ajax.php', {
beforeSend() {
console.log('Gönderi işleniyor')
// Bu kısımda kullanıcı göndere tıkladıktan sonra arka plandaki işlemler gerçekleşip bitene kadar kullanıcıya göstermek istediğiniz işlemleri kodlayabilirsiniz. Mesela gönder butonuna bir loader simgesi koyabilirsiniz.
},
method: 'POST',
data: $(this).serialize(),
dataType: "json"
}).done(e => {
if (e.status) {
// Bu kısımda gönderim başarılı olduğuna dair kodlar yazabilirsin. Ekrana bir success info alert çıkarabilirsin mesela
} else {
// Bu kısımda da başarısız olduğuna dair bilgiler yazablirsin. Aynı şekilde bir error alert çıkartıp içine e.text i yazdırabilirsin
}
console.log(e.text)
})
})
})
</script>
</body>
</html>
Kodları test etme imkanım olmadı. Hata falan çıkabilir ama onları düzeltebileceğinize inanıyorum. Kolay gelsin