v2.5.2
Giriş yap

ajax işlem

emmir2
368 defa görüntülendi

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>';

            }

   }}
          
        }
}

    ?>
Cevap yaz
Cevaplar (1)
abdullahx
943 gün önce

Ç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