v2.5.2
Giriş yap

ajax işlem

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

            }

   }}
          
        }
}

    ?>
abdullahx
954 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