Website Popup'ları

Web Siteniz İçin PHP Popup Nasıl Oluşturulur? (2026)

PHP popup, PHP'nin gösterilmesine karar verdiği bir tarayıcı diyaloğu veya modal penceredir. PHP sunucuda çalışır ve kendi başına pencere açamaz; sayfaya küçük bir <script> bloğu ya da popup'ın HTML kodunu yazar, popup'ı tarayıcı açar. Form hataları, onaylar ve kısa sorular için işe yarar; müşterilerin gördüğü her şey için stilli bir <dialog> kullanın.

Yapay zekâ özetigenel özet

PHP popup'larını anlatır: popup'ın görünüp görünmeyeceğine PHP karar verir ve onu sayfaya yazar, tarayıcı açar. alert, confirm ve prompt örnekleri, escape edilmiş çıktıyla stilli bir dialog popup, Laravel 13 flash popup'ları, PHP 8.3+ güvenliği, PHP 8.3 ve 8.5'te test edilen kodlar, sıklık ve ölçüm için Popupsmart'ın 2026 kıyaslama verileri ve Popupsmart'ı bir PHP sitesine ekleme.

PaylaşFacebookXLinkedInPinterest

Makale bilgileri

tarafından yazıldı.
Murathan Yıldırım
tarafından incelendi.
Mert Özeren
Yayınlandı
20 Aralık 2023
Güncellendi
2 Ekim 2026
Bölümler
15
Kaynaklar
3 kaynak

22 dk okuma

Editöryal standartlarımızHer yazıyı nasıl araştırır, kaynaklandırır ve güncelleriz.

PHP popup'ını gerçek bir ürüne ilk bağladığımda Oracle'da genç bir mühendistim ve "popup" dediğimiz şey, bir PHP hata yakalayıcısından echo edilen JavaScript alert() çağrısıydı. Çalışıyordu. Görüntüsü de tahmin edeceğiniz kadar çirkindi. Aradan yıllar geçti, soru hâlâ aynı: PHP'den nasıl popup tetiklerim? 2026'daki cevap eskisinden daha net. Aşağıdaki her kod bloğu PHP 8.3 ve PHP 8.5'te çalıştırıldı ve Chrome'da test edildi (Ekim 2026'da kontrol edildi).

Web Siteniz İçin PHP Popup Nasıl Oluşturulur?

İhtiyacınız olanlar:

• Bir PHP ortamı: Yerelde XAMPP, MAMP veya Laravel Herd ya da PHP 8.3 veya daha yeni bir sürüm çalıştıran herhangi bir sunucu. Güncel sürüm PHP 8.5.

• Temel söz dizimi bilgisi: echo, değişkenler, oturumlar (session) ve script etiketinin nereye konacağı size tanıdık gelmeli.

• Bir test sayfası: Tarayıcıda açabildiğiniz herhangi bir .php dosyası.

• Süre: Dört popup türünü de çalışır hale getirmek için 15-30 dakika.

• Seviye: Yeni başlayanlara uygun. PHP'de "Hello, World" yazabiliyorsanız bunu da yaparsınız.

2026'da PHP popup nedir?

PHP popup, gösterilip gösterilmeyeceğine PHP kodunun karar verdiği küçük bir tarayıcı diyaloğu (alert, confirm veya prompt penceresi) ya da stilli bir modal penceredir. Önemli olan şu: pencereyi aslında PHP açmaz. PHP sunucu tarafında çalışan bir dildir. Sunucuda çalışır, HTML üretir ve sonucu tarayıcıya gönderir. Popup'ı açan tarayıcıdır; bunu da PHP'nin yanıta yazdığı JavaScript veya <dialog> koduyla yapar.

Yani geliştiriciler "PHP popup" dediğinde aslında bir PHP koşuluyla tetiklenen JavaScript veya HTML popup'ını kastediyor. Popup'ın görünüp görünmeyeceğine ve ne yazacağına PHP dosyası karar verir. Açma, kapatma ve görünümü tarayıcı JavaScript ve CSS ile halleder. Bu ayrım 2026'da beş yıl öncesinden daha önemli, çünkü bugünkü iyi uygulama sunucu mantığını ve istemci etkileşimini ayrı tutmak.

PHP sunucuda bir koşulu kontrol eder ve popup'ı sayfaya yazar; tarayıcı onu showModal() veya alert() ile açar
PHP popup nasıl çalışır: PHP karar verir ve yazar, tarayıcı açar ve kapatır.

PHP ekosistemi hâlâ çok büyük ama yaşlanıyor. Perforce'un 2026 PHP raporuna göre (Nisan 2026, 700'den fazla açık kaynak kullanıcısıyla yapılan anket), ankete katılan PHP kullanıcılarının yarısından fazlası dili 15 yıldan uzun süredir kullanıyor; beş yıl veya daha az deneyimi olanlar yalnızca %15. Yani bugün PHP popup kodunun bakımını yapanların çoğu bu kalıbı JavaScript echo etmenin olağan sayıldığı dönemde öğrendi. Kalıp WordPress eklentilerinde, Laravel yönetim panellerinde ve eski LAMP uygulamalarında hâlâ yaygın, ama modern hali daha temiz. Aşağıdaki adımlar o hali gösteriyor.

Web sitenizde neden PHP popup kullanmalısınız?

Web sitenizde neden PHP popup kullanmalısınız: sunucu tarafında tetiklenen tarayıcı diyalogları

Kullanım alanı, çoğu rehberin kabul ettiğinden daha dar. PHP popup'ları şu durumlarda işe yarar:

• Form doğrulama geri bildirimi: Kullanıcı formu gönderir, PHP sunucu tarafında doğrular ve bir sorun varsa dönen sayfada hatayı popup ile gösterirsiniz. Gerçek hayatta en sık karşılaşılan kullanım budur.

• Sunucu işleminden sonra onay: "Şifreniz güncellendi" ya da "Kayıt silindi" gibi, PHP işleyicisi işini bitirir bitirmez gösterilen mesajlar.

• Sunucu durumuna bağlı uyarılar: Stokun azalması, oturumun sona ermek üzere olması, role göre uyarılar. Koşul sunucuda; mesajın tarayıcıya ulaşması gerekiyor.

• Hızlı yönetim araçları: Gösterişli bir modal sistemine ihtiyaç duymadığınız dahili CRUD sayfaları. Tek satırlık bir alert() yazmak, Bootstrap modal kurmaktan daha hızlıdır.

Bu sayfaya gelen aramaların çoğu aynı sorunun bir çeşidini soruyor: php popup mesajı, php alert, php mesaj kutusu. Yani: arka uçtan nasıl mesaj gösteririm? PHP popup bunu birkaç satır kodla yanıtlar. Asıl değeri de bu.

Yetersiz kaldığı yerler: stil, animasyon, mobil uyum, A/B testi veya analiz gerektiren her şey. Bunlar echo edilmiş bir alert() ile değil, düzgün bir popup sistemiyle yapılır. PHP'nin yazdığı bir <dialog> (4. Adım) stil kısmını karşılar. Bu dengenin geri kalanını Popupsmart bölümünde ele alıyoruz.

PHP popup nasıl oluşturulur: üç temel yöntem

PHP popup yöntemleri karşılaştırması: Alert, Confirm ve Prompt ne zaman kullanılır

PHP ile kullanabileceğiniz üç yerel tarayıcı diyaloğu var ve üçü de JavaScript üzerinden çalışır: alert(), confirm() ve prompt(). Her biri farklı bir etkileşim sorununu çözer. Kısa karar rehberi: tek yönlü mesajlar için Alert, evet/hayır kararları için Confirm, kısa metin girişi için Prompt. Daha fazlasına ihtiyacınız varsa yerel diyalogların sınırını aşmışsınız demektir: PHP'nin stilli bir HTML <dialog> yazdığı 4. Adım'a ya da aşağıdaki Laravel ve Popupsmart bölümlerine geçin.

Yöntemlere kısa bakış:

Yöntem Ne yapar Ne için uygun
1. PHP Alert penceresi Kullanıcıya tek yönlü mesaj gösterir. Kullanıcı OK'e basıp devam eder. Bildirimler, hata ve başarı mesajları
2. PHP Confirm penceresi Kullanıcıya evet/hayır sorusu sorar. JavaScript'e true veya false döndürür. "Emin misiniz?" türü işlemler
3. PHP Prompt penceresi Kullanıcıdan kısa bir metin ister. Yazılan metni veya null döndürür. Dahili bir araçta kısa bir değer almak
4. Özel <dialog> popup Kendi HTML ve CSS'inizi modal olarak gösterir, showModal() ile açılır. Müşterilerin gördüğü her şey: stilli mesajlar, formlar, teklifler

Başka dillerde benzer bir anlatım için Python popup rehberimiz aynı üç kalıbı Tkinter ile anlatıyor; Angular popup rehberimiz ise modern framework sürümünü gösteriyor.

1. Adım: PHP alert penceresi oluşturun

Alert penceresi üçünün en basitidir. Tek bir mesaj ve bir OK butonu gösterir. Kullanıcı sayfanın geri kalanıyla etkileşime geçmeden önce onu kapatmak zorundadır. PHP bunu, içinde alert() olan bir <script> etiketini echo ederek sayfaya ekler.

Ayrıntılı talimatlar

1. Yeni bir PHP dosyası oluşturun ve adını alert-popup.php koyun.

2. Dosyanın içine, alert() çağrısı içeren bir script etiketini echo eden bir PHP bloğu yazın:

<?php echo "<script>alert('Welcome to our site!');</script>"; ?>

3. Dosyayı kaydedin ve yerel sunucunuz üzerinden açın (ör. http://localhost/alert-popup.php).

4. Tarayıcı PHP çıktısını okur, script etiketini görür ve alert() çağrısını hemen çalıştırır. Popup sayfa yüklenirken görünür.

Koşullu hale getirmek için (PHP kullanmanın asıl amacı da bu) bir if bloğuna alın ve tırnakların ya da etiketlerin script'i bozmaması için mesajı json_encode() ile geçirin:

<?php
declare(strict_types=1);

$loginFailed = true; // set by your own login check
$message = 'Invalid credentials. Please try again.';

if ($loginFailed): ?>
<script>
  alert(<?= json_encode($message, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_THROW_ON_ERROR) ?>);
</script>
<?php endif; ?>

json_encode(), PHP metnini tırnakları dahil geçerli bir JavaScript metnine çevirir. Dört JSON_HEX_* bayrağı <, >, &, ' ve " karakterlerini \u kaçışlarına dönüştürür; böylece içinde </script> geçen bir mesaj script etiketinizi erken kapatamaz. JSON_THROW_ON_ERROR ise hatalı bir değerde (örneğin geçersiz UTF-8) sessizce boş çıktı vermek yerine istisna fırlatır.

Beklenen sonuç

Tarayıcı diyaloğunda Welcome mesajı gösteren PHP alert penceresi örneği

Çalıştığını şöyle anlarsınız: Sayfa yüklenir ve mesajınızla tek bir OK butonu içeren yerel bir tarayıcı diyaloğu açılır. Diyalog kapatılana kadar sayfanın geri kalanı kullanılamaz.

Sık yapılan hatalar ve sorun giderme

• Mesajdaki tırnaklar script'i bozar: Mesajınızda kesme işareti varsa (örneğin "It's a test") ve onu elle tek tırnaklı bir JavaScript metnine yapıştırırsanız söz dizimi bozulur, konsol da "unexpected identifier" hatası verir. Elle kaçış yapmayın: metni PHP'de oluşturun ve yukarıdaki örnekteki gibi json_encode() ile yazdırın. Tırnakları kendisi ekler ve içindeki her şeyi escape eder.

• Popup sayfa çizilmeden açılıyor: Dosyanın en üstünde echo edilen bir alert, HTML'in geri kalanı yüklenmeden çalışır ve arkasında boş bir sayfa bırakır. Önce sayfanın görünmesini istiyorsanız script'i </body> etiketinin hemen önüne koyun ya da çağrıyı document.addEventListener('DOMContentLoaded', () => { ... }) içine alın.

• Tarayıcının popup engelleyicisi: Yerel alert() nadiren engellenir, ama window.open() ile açılan pencereler (bambaşka bir şey) neredeyse her zaman engellenir. "Popup"ınız hiç görünmüyorsa window.open() değil alert() kullandığınızdan emin olun.

Profesyonel ipucu

Profesyonel ipucu: Vardığım en temiz kalıp şu: içinde kullanıcı girdisi olan ham JavaScript metinlerini asla echo etmeyin. Sunucudaki değerleri önce JSON_HEX_* bayraklarıyla json_encode() üzerinden geçirin, örneğin echo '<script>alert(' . json_encode($message, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT) . ');</script>';. Kaçışı doğru yapar, XSS'i önler; kesme işaretleri, tırnaklar ve Unicode karakterlerle siz düşünmeden çalışır.

2. Adım: PHP confirm (onay) penceresi oluşturun

Confirm penceresi evet/hayır sorusu sorar ve JavaScript'e bir boolean değer döndürür. Kullanıcı yıkıcı bir işlem yapmak üzereyken kullanırsınız: bir kaydı silmek, aboneliği iptal etmek, hesabı kapatmak. Formu PHP yazar, soruyu JavaScript sorar, işi ise PHP ancak gerçek bir istek geldiğinde yapar.

Ayrıntılı talimatlar

1. confirm-popup.php adında bir dosya oluşturun.

2. İşlem için bir POST formu yazdırın ve confirm() çağrısını formun submit olayına bağlayın. İptal formu durdurur, OK gönderir. Gizli CSRF token'ı isteğin sizin sayfanızdan geldiğini kanıtlar:

<?php
declare(strict_types=1);
session_start();
$_SESSION['csrf'] ??= bin2hex(random_bytes(32));
$itemId = 42; // the record this button deletes
?>
<form method="post" action="delete.php" id="delete-form">
  <input type="hidden" name="id" value="<?= htmlspecialchars((string) $itemId) ?>">
  <input type="hidden" name="csrf" value="<?= htmlspecialchars($_SESSION['csrf']) ?>">
  <button type="submit">Delete item</button>
</form>

<script>
  document.getElementById('delete-form').addEventListener('submit', (event) => {
    if (!confirm('Are you sure you want to delete this item?')) {
      event.preventDefault(); // Cancel: the form is not sent
    }
  });
</script>

3. delete.php dosyasını oluşturun. Doğru token'la gelen bir POST dışındaki her isteği reddeder, işi yapar, sonraki sayfa için bir mesaj kaydeder ve yönlendirir:

<?php
declare(strict_types=1);
session_start();

$token = (string) ($_POST['csrf'] ?? '');
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !hash_equals($_SESSION['csrf'] ?? '', $token)) {
    http_response_code(403);
    exit('Request refused.');
}

$id = filter_input(INPUT_POST, 'id', FILTER_VALIDATE_INT);
// Delete the record with $id here.

$_SESSION['flash'] = 'Item deleted.';
header('Location: /items.php', true, 303);
exit;

4. confirm-popup.php sayfasını tarayıcıda açın ve butona tıklayın. OK ve İptal butonlarıyla onay diyaloğu açılır. İptal sizi sayfada tutar; OK formu gönderir, delete.php de items.php sayfasına yönlendirir. 4. Adım, "Item deleted." mesajını orada popup olarak gösteriyor.

Beklenen sonuç

Çalıştığını şöyle anlarsınız: Sorunuzla birlikte OK ve İptal butonlarını içeren yerel bir tarayıcı diyaloğu açılır. OK formu gönderir; İptal hiçbir şey göndermez. delete.php adresini doğrudan adres çubuğundan açtığınızda "Request refused." yanıtı alırsınız.

Sık yapılan hatalar ve sorun giderme

• İstemci ve sunucu mantığını karıştırmak: confirm() sonucu tamamen tarayıcıda yaşar. Kullanıcı OK'e veya İptal'e bastığında PHP çoktan çalışmasını bitirmiştir. Sunucunun bu seçime göre bir şey yapmasını istiyorsanız JavaScript tarafı yeni bir istek göndermelidir (form gönderimi, fetch, yönlendirme). Confirm sonucunu bir PHP if bloğunda okumak işe yaramaz: o istek çoktan tamamlanmıştır.

• confirm()'i koruma sanmak: Herkes diyaloğunuzu hiç görmeden aynı POST isteğini gönderebilir. delete.php'deki gibi, istek yöntemini ve CSRF token'ını sunucu kontrol etmelidir. Düz bir GET bağlantısıyla asla bir şey silmeyin; tarayıcılar, tarayıcı botları ve bağlantı önizlemeleri bağlantıları takip eder.

• Mesajı escape etmeyi unutmak: Alert'teki tuzağın aynısı. Soruda dinamik içerik varsa JavaScript'e eklemeden önce json_encode() ile geçirin.

Profesyonel ipucu

Profesyonel ipucu: Confirm diyalogları kutudan çıktığı haliyle erişilebilirdir: ekran okuyucular onları duyurur, klavye kullanıcıları Escape ile kapatabilir ve açıldıklarında odağı alırlar. Dahili yönetim araçlarında hâlâ onları tercih etmemin sebebi bu. Ama müşterinin gördüğü yıkıcı işlemler için, yazarak onay isteyen ("devam etmek için DELETE yazın") düzgün bir modal kurun. Yerel confirm, düşünmeden tıklanıp geçilmeye fazlasıyla açık.

3. Adım: PHP prompt (giriş) penceresi oluşturun

Prompt penceresi kullanıcıdan kısa bir metin ister. Yazılan metni JavaScript'e döndürür; kullanıcı İptal'e basarsa null döner. PHP onu tetikleyen sayfayı sunar, cevabı da bir sonraki istekte okur.

Ayrıntılı talimatlar

1. prompt-popup.php adında bir dosya oluşturun.

2. prompt() çağıran ve cevabı sonraki sayfaya gönderen bir script ekleyin:

<script>
  const visitorName = prompt('Please enter your name:', '');
  if (visitorName !== null && visitorName.trim() !== '') {
    window.location.href = 'welcome.php?name=' + encodeURIComponent(visitorName.trim());
  }
</script>

3. Kaydedip sayfayı açın. Bir metin alanı ve OK / İptal butonlarıyla prompt penceresi açılır.

4. Kullanıcı gönderdiğinde script değeri URL'ye ekler ve welcome.php sayfasına yönlendirir. PHP orada değeri sorgu metninden okur ve escape ederek yazdırır:

<?php
declare(strict_types=1);

$name = trim((string) filter_input(INPUT_GET, 'name'));
?>
<p>Welcome to Popupsmart, <?= htmlspecialchars($name !== '' ? $name : 'friend') ?>!</p>

Beklenen sonuç

Çalıştığını şöyle anlarsınız: Tarayıcı bir metin alanı, OK ve İptal içeren bir diyalog açar. Kullanıcı bir değer yazar, OK'e basar ve URL girdiyi içerecek şekilde değişir. Hedef sayfadaki PHP değeri okur ve yanıtı kişiselleştirir ("Welcome to Popupsmart, Ann!"). Yazılan HTML, kod olarak değil düz metin olarak görünür.

Sık yapılan hatalar ve sorun giderme

• Prompt girdisine güvenmek: Kullanıcının yazdığı her şey, tamamen onun kontrolündeki bir metindir. Sayfaya escape etmeden geri basmayın: welcome.php'deki gibi alan tarafta htmlspecialchars() kullanın.

• Cevabı URL'de göndermek: Sorgu metni tarayıcı geçmişinde ve sunucu kayıtlarında kalır. Bir ad için sorun değil. Özel ya da kısa bir cevaptan uzun her şeyi bir formla POST edin.

• Prompt eski görünüyor: Yerel prompt pencereleri Windows 95'ten kalma gibi duruyor. Müşterinin gördüğü her şey için metin alanı olan stilli bir modal istersiniz: 4. Adım'a ve aşağıdaki Popupsmart bölümüne bakın.

Profesyonel ipucu

Profesyonel ipucu: Pazarlama listesi için e-posta ya da isim toplamak üzere prompt kullanıyorsanız durun. Yerel prompt'un hiçbir dönüşüm verisi yok: gösterim yok, tamamlama oranı yok, yarıda bırakma takibi yok. Dahili araçlar ve hızlı prototipler için yerel prompt yeterli. Müşteri kazanmak içinse işi düzgün kurun.

4. Adım: HTML dialog öğesiyle özel bir PHP popup oluşturun

Özel bir PHP popup, PHP'nin metnini escape ederek sayfaya yazdığı, birkaç satır JavaScript ile açılıp kapanan ve CSS ile biçimlendirilen bir <dialog> öğesidir. Müşterilerin gördüğü her şey için kullanılacak sürüm budur, çünkü tasarım sizin elinizde, erişilebilirliği ise tarayıcı halleder.

Ayrım öncekiyle aynı: PHP karar verir ve yazar, tarayıcı açar. Değişen tek şey, popup'ın artık sizin kendi HTML'iniz olması. MDN'nin dialog öğesi başvurusuna göre showModal() popup'ı üst katmana (top layer) taşır, sayfanın geri kalanını etkisiz (inert) yapar, Escape ile kapatır ve ekran okuyuculara modal bir diyalog olarak sunar. Öğe Mart 2022'den beri tüm büyük tarayıcılarda çalışıyor.

Ayrıntılı talimatlar

1. delete.php'nin yönlendirdiği sayfa olan items.php dosyasını oluşturun. Flash mesajını bir kez okur, siler ve yalnızca mesaj varsa bir dialog yazar. İkinci dialog bir butonla açılır:

<?php
declare(strict_types=1);
session_start();

// Set by the handler that ran before the redirect (delete.php above)
$flash = $_SESSION['flash'] ?? null;
unset($_SESSION['flash']);

function e(string $value): string
{
    return htmlspecialchars($value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
?>
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Items</title>
  <link rel="stylesheet" href="/popup.css">
  <script src="/popup.js" defer></script>
</head>
<body>
  <main>
    <button type="button" data-popup="newsletter-popup">Get the newsletter</button>
  </main>

  <?php if (is_string($flash) && $flash !== ''): ?>
  <dialog id="flash-popup" class="popup" aria-labelledby="flash-popup-title" data-open-on-load>
    <div>
      <h2 id="flash-popup-title">Done</h2>
      <p><?= e($flash) ?></p>
      <form method="dialog">
        <button autofocus>OK</button>
      </form>
    </div>
  </dialog>
  <?php endif; ?>

  <dialog id="newsletter-popup" class="popup" aria-labelledby="newsletter-popup-title">
    <div>
      <h2 id="newsletter-popup-title">Get one email a month</h2>
      <form method="post" action="/subscribe.php">
        <label for="email">Email</label>
        <input id="email" name="email" type="email" required autocomplete="email">
        <button type="submit">Subscribe</button>
      </form>
      <form method="dialog">
        <button aria-label="Close">×</button>
      </form>
    </div>
  </dialog>
</body>
</html>

2. popup.js dosyasını oluşturun. Her dialog.popup öğesini sayfa yüklenince veya butona tıklanınca açar, arka plana tıklanınca kapatır ve odağı onu açan butona geri verir:

// Opens the <dialog> popups PHP rendered: on page load (data-open-on-load)
// or when a button with data-popup="<dialog id>" is clicked.
for (const dialog of document.querySelectorAll('dialog.popup')) {
  let opener = null;

  // Escape and <form method="dialog"> close it natively; send focus back.
  dialog.addEventListener('close', () => opener?.focus());

  // A click on the backdrop lands on the <dialog> itself, not its inner <div>.
  dialog.addEventListener('click', (event) => {
    if (event.target === dialog) dialog.close();
  });

  for (const button of document.querySelectorAll(`[data-popup="${dialog.id}"]`)) {
    button.addEventListener('click', () => {
      opener = button;
      dialog.showModal();
    });
  }

  if (dialog.hasAttribute('data-open-on-load')) dialog.showModal();
}

3. popup.css dosyasını oluşturun. Dialog'un kendi iç boşluğu yok (onu içteki div taşıyor); popup.js'teki arka plan tıklaması kontrolünü güvenilir kılan da bu:

.popup {
  width: min(28rem, calc(100vw - 2rem));
  padding: 0;
  border: 0;
  border-radius: 12px;
  box-shadow: 0 20px 50px rgb(0 0 0 / 0.25);
}
.popup > div { padding: 1.5rem; }
.popup::backdrop { background: rgb(0 0 0 / 0.5); }

.popup[open] { animation: popup-in 200ms cubic-bezier(0.23, 1, 0.32, 1); }
@keyframes popup-in {
  from { opacity: 0; transform: translateY(8px); }
}
@media (prefers-reduced-motion: reduce) {
  .popup[open] { animation: none; }
}

4. 2. Adım'daki akışı yeniden çalıştırın: öğeyi silin, items.php "Item deleted." popup'ıyla açılsın. Sayfayı yenileyin, mesaj oturumdan silindiği için popup kaybolur. Bu Post/Redirect/Get kalıbıdır ve "form gönderildikten sonra PHP ile uyarı mesajı nasıl gösterilir" sorusunun temiz cevabıdır.

Beklenen sonuç

Çalıştığını şöyle anlarsınız: Flash popup'ı karartılmış bir sayfanın üzerinde, odak OK butonundayken açılır. Escape, OK ya da karartılmış arka plana tıklamak onu kapatır. "Get the newsletter" ikinci popup'ı odak e-posta alanındayken açar; kapattığınızda odak butona döner. 375px genişlikte popup'ın iki yanında 1rem boşluk kalır. İşletim sisteminde hareket azaltma açıksa popup kayma animasyonu olmadan görünür.

Sık yapılan hatalar ve sorun giderme

• showModal() yerine open niteliğini kullanmak: <dialog open> öğeyi gösterir ama modal olarak değil: arka plan yok, sayfa etkisizleşmez, Escape çalışmaz. Popup'ı showModal() ile açın.

• Flash popup her yenilemede görünüyor: Mesajı okuduktan sonra oturumdan silin (unset($_SESSION['flash'])) ve sonuç sayfasını doğrudan yazdırmak yerine POST'tan sonra yönlendirin.

• Yanlış yerde escape etmek: Yazdırdığınız anda escape edin: HTML için htmlspecialchars(), JavaScript için json_encode(). Değeri kaydederken escape etmek, bir yerde iki kez escape edilmiş, başka bir yerde hiç escape edilmemiş metin demektir.

Düz HTML, CSS, Bootstrap ve Tailwind ile başka modal kalıpları için modal popup nasıl oluşturulur rehberimize bakın.

Popup'lar için PHP 8+ uyumluluğu ve güvenlik en iyi uygulamaları

2026'da yeni PHP popup kodu yazıyorsanız PHP 8.x kullanmalısınız; yeni işler için 8.3 veya daha yenisi. php.net'in desteklenen sürümler sayfasına göre PHP 8.5, 20 Kasım 2025'te yayımlandı; PHP 8.3 ise 31 Aralık 2027'ye kadar güvenlik güncellemesi alıyor. Laravel 13 en az PHP 8.3 istediği için framework kodlarının çoğu şu anda 8.3 ile 8.5 arasındaki sürümlerde çalışıyor.

Dikkat edilmesi gerekenler:

• Daha katı tür kontrolü: PHP 8 türleri 7.x'e göre çok daha sıkı uygular. PHP 8.1'den beri htmlspecialchars() gibi yerleşik bir fonksiyona null göndermek bir kullanımdan kaldırma (deprecation) uyarısı üretir. Popup mesajınız boş olabiliyorsa, items.php'nin is_string($flash) ile yaptığı gibi yazdırmadan önce kontrol edin.

• Escape varsayılanları: PHP 8.1'den beri htmlspecialchars() tek ve çift tırnakları varsayılan olarak escape eder (ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401). e() yardımcısındaki gibi bayrakları ve 'UTF-8' değerini açıkça yazmak, kodu sonra okuyacak kişi için davranışı netleştirir.

• JIT derleme: PHP 8'in JIT'i daha çok işlemciye yüklenen işlerde fark yaratır. Metin echo etmekte pek fark görmezsiniz; ama popup'ınız karmaşık bir sorgunun arkasındaysa çevresindeki mantık hızlanır.

• Kullanıcı girdisini her zaman temizleyin: Popup üzerinden XSS, PHP dünyasının en eski hatalarından biri. Script etiketine giden her dinamik içeriği JSON_HEX_* bayraklarıyla json_encode() üzerinden, HTML'e giden içeriği htmlspecialchars() üzerinden geçirin. Birini unutursanız bir güvenlik açığı yayınlamış olursunuz.

• İşlemler POST ve token ister: Bir işlemi onaylayan popup yalnızca sorudur. İşlemin kendisi, 2. Adım'daki gibi hash_equals() ile kontrol edilen bir CSRF token'ıyla gelen POST isteğinde çalışır.

2026'da peşinden koşulacak tek bir manşet özellik yok. Dil aynı anda hem hızlandı hem katılaştı. Eski popup kodunuz muhtemelen 8.5'te de çalışır, ama türü belirsiz kullanıcı girdisini echo etmediğinizden ya da PHP 7.x'in gevşek karşılaştırmalarına dayanmadığınızdan emin olmak için bir kez daha okumaya değer.

Laravel gibi modern PHP framework'leriyle entegrasyon

Laravel ya da başka bir modern PHP framework'üyle çalışıyorsanız satır içi echo "<script>" ifadeleri yazmak istemezsiniz. Framework'ün yolu, mesajı controller'da flash olarak kaydetmek ve popup'ı bir Blade şablonunda göstermektir.

Laravel 13'te (Ekim 2026'da Laravel 13 belgeleriyle kontrol edildi) controller, yönlendirme yaparken mesajı flash olarak kaydeder:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\ProfileUpdateRequest;
use Illuminate\Http\RedirectResponse;

class ProfileController extends Controller
{
    public function update(ProfileUpdateRequest $request): RedirectResponse
    {
        $request->user()->update($request->validated());

        return redirect()
            ->route('profile.edit')
            ->with('popup', 'Profile updated successfully.');
    }
}

ProfileUpdateRequest yerine kendi form request sınıfınızı kullanın. Ardından Blade layout'unuzda 4. Adım'daki <dialog> yapısının aynısını yazdırın. Blade'in {{ }} sözdizimi mesajı sizin yerinize escape eder:

@if (session('popup'))
    <dialog id="flash-popup" class="popup" aria-labelledby="flash-popup-title" data-open-on-load>
        <div>
            <h2 id="flash-popup-title">Saved</h2>
            <p>{{ session('popup') }}</p>
            <form method="dialog">
                <button autofocus>OK</button>
            </form>
        </div>
    </dialog>
@endif
  1. Adım'daki popup.js ve popup.css dosyalarını layout'a ekleyin, iş tamam. Böylece popup tetikleyicisi görünüm mantığınızın dışında kalır, Laravel'in CSRF koruması ve oturum flash mesajlarıyla ek bir bağlantı gerekmeden çalışır ve {!! !!} ile escape edilmemiş veri hiç yazdırılmaz.

Laravel uygulamasındaki karmaşık popup'lar için yaygın yollar Livewire veya Inertia.js ile seçtiğiniz bir bileşen kütüphanesidir. PHP tarafı yalnızca durumu ayarlar; görüntülemeyi ön yüz yapar. Bu, yıllardır PHP dünyasına yerleşen sorumlulukların ayrılması hikâyesinin aynısı ve "bir script etiketi echo et" yaklaşımının hızlı bir çözüm ama uzun vadede kötü bir kalıp olmasının sebebi de bu.

WordPress de bir PHP uygulaması ve aynı iki iş için kendi yardımcıları var: HTML'deki metin için esc_html(), script'e giden veri için wp_json_encode().

Popup'ları başka framework'lere entegre ediyorsanız React popup ve Bootstrap modal popup rehberlerimiz framework'e özgü sürümleri adım adım anlatıyor.

JavaScript yazdırmadan popup oluşturmak için Popupsmart'ı deneyin

Önce bunun nereye oturduğunu netleştirelim. Uygulama içinde bir PHP modalı kuruyorsanız (Laravel yönetim panelinde bir onay, sunucu tarafı doğrulama uyarısı, kısa bir soru), Popupsmart'a ihtiyacınız yok. Yukarıdaki yöntemler doğru araç. Uygulamanızın içinde çalışırlar, sunucu durumunuza tepki verirler ve birkaç satır kodla yayına çıkarlar.

Popupsmart'ın yeri, popup meselesinin öbür tarafı: herkese açık sitenizdeki pazarlama popup'ları. Çıkış niyeti kampanyaları, e-posta toplama formları, indirim teklifleri, duyuru çubukları. Pazarlama ekibinizin mühendislere talep açmadan A/B testi yapmak istediği işler. Popupsmart'ın COO'suyum, görüşümü buna göre tartın.

Kullanım alanınız buysa işleyiş şöyle:

Popupsmart'a ücretsiz kaydolun ve panelinize gidin.

1. Panelde "Yeni Kampanya" butonuna tıklayın.

PHP sitelerle uyumlu popup oluşturmak için Popupsmart panelindeki yeni kampanya butonu

2. Kampanyanıza bir ad verin, alan adınızı seçin ve kaydedin.

Popupsmart kampanyasına ad verme ve hedef alan adını seçme

3. Playbook bölümünden bir şablon seçin. Hedefinizi (e-posta toplama, çıkış niyeti, indirim vb.) seçin ve ona uyan bir popup şablonu bulun. Kaydolmadan önce de aynı popup şablonlarına göz atabilirsiniz.

Popupsmart Playbook bölümünden popup şablonu seçme

4. Tasarımı özelleştirin. Başlığı, metni, CTA butonunu ve görseli Özelleştir adımında düzenleyin. Stil adımında görünümü ve popup'ın boyutunu ayarlarsınız.

Popupsmart görsel editöründe popup tasarımını özelleştirme

5. Segment bölümünde hedeflemeyi ayarlayın. Kitleyi, davranış tetikleyicilerini (sayfada geçen süre, kaydırma derinliği, çıkış niyeti) ve gösterim sıklığı sınırlarını seçin.

6. Yayınlayın. Hedefleme Özeti'ni gözden geçirin ve Yayınla'ya basın.

Popupsmart panelinden popup kampanyası yayınlama

Alan adınızı henüz doğrulamadıysanız yanında bir doğrulama bağlantısı görürsünüz. Ona tıklayın, açılan modaldaki embed kodunu kopyalayın ve sitenize, tema dosyanızdaki kapanış </body> etiketinin hemen önüne yapıştırın. Ardından Web sitesini doğrula'ya tıklayın ve siteniz açıldıktan sonra Yenile'ye basın.

Popupsmart'ta embed kodu ile alan adı doğrulama

Embed kodu bir JavaScript etiketi, ama PHP sitesinde onu layout dosyanıza bir kez eklemeniz yeterli: footer.php, app.blade.php ya da sizdeki karşılığı neyse. İki kez eklemek çalışmasını engelleyebilir. Pazarlama etiketlerini kod tabanınızdan uzak tutmak istiyorsanız kurulumu Google Tag Manager üzerinden de yapabilirsiniz.

PHP bu popup'ları yine de yönlendirebilir. SiteData Hedefleme, sayfanızın window.ps.addMeta() ile Popupsmart'a gönderdiği değerlere göre bir kampanyayı gösterir veya gizler. Bir PHP sayfası bu değerleri güvenle yazdırabilir:

<script>
  // After the Popupsmart embed code: hand server values to SiteData targeting
  window.addEventListener('load', () => {
    window.ps.addMeta(<?= json_encode(['cartTotal' => $cartTotal], JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_THROW_ON_ERROR) ?>);
  });
</script>

Kampanyanın Segment adımında SiteData Hedeflemesi ekleyin, özellik anahtarı olarak cartTotal girin ve karşılaştırılacak değeri yazın. Kampanyayı bir butonla açmak isterseniz Tıklamaya Duyarlı Hedefleme, butonun tıklama işleyicisine koyacağınız bir kod parçası verir.

Bitmiş popup gerçek bir sitede şöyle görünüyor:

Popupsmart ile oluşturulup yayınlanmış bir web sitesindeki canlı popup

Kısa sürümü şu: PHP popup'ları size sunucudan tetiklenen kontrolü verir, stil ise sizin işinizdir. Popupsmart arka uç kodu gerektirmeyen, stilli ve hedeflenebilir popup'lar verir; A/B testi Advanced plan ve üzerinde. İkisi farklı sorunları çözer ve birçok canlı site ikisini birlikte kullanır: uygulama içi onaylar için yerel diyaloglar, pazarlama katmanı için bir popup oluşturucu.

2026'da PHP popup'lar için en iyi uygulamalar

Temiz uygulamaları dağınık olanlardan ayıran birkaç kalıp:

• Popup kararını sunucuda, popup'ın kendisini istemcide oluşturun. PHP'de popup durum yönetimi yapmaya çalışmayın. Bir bayrak ayarlayın, oturuma bir flash değeri yazın, bir JSON alanı döndürün; gerisini ön yüz alsın. 2015 PHP'si ile 2026 PHP'si arasındaki en büyük zihniyet farkı bu.

• Script etiketine yazdırdığınız dinamik içeriği her zaman json_encode() üzerinden, HTML'e yazdırdığınız içeriği htmlspecialchars() üzerinden geçirin. Kaçış karakteri hatalarını önler ve kullanıcı girdisinde yansıtılmış XSS'i engeller.

• Popup'ı her sayfa yüklemesinde açmayın. Oturum durumunu, bir çerezi veya veritabanındaki bir bayrağı kontrol eden bir koşula alın. Tekrarın bir bedeli var: Popupsmart'ın 2026 kıyaslamasında bir ziyaretçinin bir hafta içinde popup'ı gördüğü ilk iki sefer benzer oranlarda dönüşüyor (gösterimlerin %1,33'ü ve %1,22'si, toplu); üçüncü gösterimden itibaren dönüşüm düşüyor, altıncı gösterimden itibaren %0,41'e, yani ilk gösterim oranının %31'ine iniyor.

Bir popup, ziyaretçinin haftadaki ilk gösteriminde gösterimlerin %1,33'ünü, ikincide %1,22'sini, altıncıdan itibaren %0,41'ini dönüştürüyor
Ziyaretçinin o haftaki gösterim sayısına göre popup gösterimi başına potansiyel müşteri, tüm gösterimler toplu. Popupsmart popup kıyaslaması 2026, Ocak 2024 - Eylül 2026.

• Pazarlama popup'larına görünmeden önce biraz zaman tanıyın. Aynı kıyaslamada görünmeden önce bekleyen popup'lar, sayfa yüklenir yüklenmez gösterilenlere karşı %0,83'e %0,61 dönüştürüyor (medyan kampanya); yön verinin her yılında aynı kalıyor ama fark istatistiksel olarak güvenilir değil, bu yüzden bir kural değil, eğilim olarak okuyun. Popup zamanlaması rehberimiz gecikmeleri ve tetikleyicileri ayrıntılı anlatıyor. Kullanıcının az önce yaptığı bir şeye cevap veren mesajlar, örneğin bir kaydetme onayı, yine de hemen görünmeli.

• Yerel diyalogları tek seferlik, stilsiz durumlara saklayın. Yönetim araçları, dahili onaylar, kısa hata bildirimleri. Müşterinin gördüğü akışlar gerçek bir modalı hak eder: stilini sizin verdiğiniz bir <dialog> ya da bir popup oluşturucu.

• Telefonlarda test edin. Yerel alert() ve confirm() diyalogları mobil Safari'de ve Android için Chrome'da masaüstündekinden farklı görünür ve davranır. Metnin sığdığını ve akışın çalıştığını kontrol edin; <dialog> popup'ınızı da 375px genişlikte deneyin.

• window.open()'a güvenmeyin. Popup engelleyiciler onu durdurur. Ayrı bir pencereye ihtiyacınız varsa onun yerine bir modal katman kullanın.

PHP popup'larda kaçınılması gereken yaygın hatalar

Kod incelemelerinde ve Stack Overflow'da en sık gördüklerim:

• JavaScript'i escape etmeden echo etmek: $message kullanıcı girdisinden geliyorsa echo "<script>alert('$message');</script>"; ders kitaplarındaki XSS örneğidir. Her zaman önce json_encode() kullanın.

• Sunucu durumunu istemci durumuyla karıştırmak: Bir confirm() diyaloğunun sonucu aynı istekte PHP'ye ulaşmaz. Sayfa çoktan oluşturulmuştur. Kullanıcının seçimine göre işlem yapmak için yeni bir istek gerekir.

• Popup'ı sayfa çizilmeden açmak: Dosyanın en üstünde echo edilen script, HTML'in geri kalanı yüklenmeden alert'i çalıştırır. Script'i belgenin sonuna taşıyın ya da document.addEventListener('DOMContentLoaded', ...) içine alın.

• window.open()'ı popup olarak kullanmak: Tarayıcılar doğrudan bir kullanıcı tıklamasıyla tetiklenmeyen window.open() çağrılarının neredeyse tamamını engeller. "Popup"ınız Chrome'da hiç görünmüyorsa sebep neredeyse her zaman budur.

• Erişilebilirliği unutmak: Yerel alert ve confirm varsayılan olarak erişilebilirdir: ekran okuyucular onları duyurur, Escape kapatır. Özel modal kütüphaneleri çoğu zaman öyle değildir. showModal() ile açılan bir <dialog> bunların çoğunu hazır getirir; yine de etiketli bir başlık verin ve yayına almadan önce VoiceOver veya NVDA ile test edin. Popup UX tasarımı rehberimiz en çok zarar veren tasarım hatalarını listeliyor.

• Popup'ı bedava dönüşüm artışı sanmak: Popup'lar hedeflendiğinde, doğru zamanda açıldığında ve gerçek bir değer sunduğunda işe yarar. Her sayfa yüklemesinde herkese gösterilen bir "Bültenimize abone olun" penceresi, çoğunlukla ziyaretçilere onu kapatmayı öğretir.

PHP popup'ların dönüşüme etkisini ölçmek

Müşterinin gördüğü bir şey için PHP popup kullanıyorsanız, işe yarayıp yaramadığını ölçmenin bir yoluna ihtiyacınız var. Yerel alert() ve confirm() diyalogları takip edebileceğiniz olaylar üretmez; kullanım dahili araçtan müşteriye dönük alana geçtiğinde gerçek bir popup sistemine geçmenin en büyük sebeplerinden biri de bu.

Yerel diyaloglar için çözüm, popup'ı açan aynı script etiketinden bir analiz olayı göndermektir. Google Analytics 4 gtag.js ile kuruluysa:

<?php if ($loginFailed): ?>
<script>
  gtag('event', 'popup_shown', { popup_type: 'login_error' });
  alert('Invalid credentials. Please try again.');
</script>
<?php endif; ?>

Bu size Google Analytics'te "popup_shown" sayılarını verir. Yerel diyalog bunları sunmadığı için kapatma süresi veya etkileşim verisi alamazsınız, ama popup'ın ne sıklıkla açıldığını en azından bilirsiniz. Bir <dialog> kullanıyorsanız close dinleyicisinden de olay gönderebilirsiniz.

Pazarlama popup'larında önemli metrikler şunlar: gösterimler, CTA'nın tıklama oranı, tamamlama oranı (formlar için) ve sonraki dönüşümdeki artış. Popup oluşturucuların çoğu bunları standart raporlarda sunar. Kendi sisteminizi kuruyorsanız en azından gösterimleri ve dönüşümleri aynı veritabanı tablosuna kaydedin, yoksa karanlıkta yürürsünüz. Kapatmaları da kaydedin: Popupsmart'ın 2026 kıyaslamasında popup gösterimlerinin %40,5'i ziyaretçinin popup'ı kapatmasıyla bitiyor (tüm gösterimler toplu, Şubat 2025 - Eylül 2026, kapatma takibi başladığından beri).

Bir referans noktası için kulaktan dolma bir kural yerine ölçülmüş veriyi kullanın. E-posta veya telefon numarası isteyen 3.034 Popupsmart popup'ında (Ocak 2024 - Eylül 2026, her biri en az 1.000 gösterim ve 14 aktif günle) medyan popup, gösterimlerinin %0,83'ünü potansiyel müşteriye dönüştürüyor; en iyi %25 %1,96'ya, en iyi %10 %3,87'ye ulaşıyor. Yöntem 2026 popup dönüşüm kıyaslama raporunda. Karşılaştırmadan önce kendi popup'ınızı da aynı şekilde, gösterim başına ölçün. Medyanın çok altındaysanız olağan şüpheliler kitle (popup'ı yanlış ziyaretçilere göstermek), metin (net bir değer yok) ve zamanlamadır (fazla erken ya da fazla sık açılmak). Popup'ın peşine düşmeyin, sorunun kaynağını düzeltin.

Doğru PHP popup yaklaşımını seçmek

PHP popup'ları on yıldır perde arkasında pek değişmedi, ama 2026'da onları kullanmanın doğru yolu değişti. Uygulamanızın içinde sunucudan tetiklenen tek mesajlık diyaloglar için yerel alert(), confirm() ve prompt() hâlâ en hızlı araç: birkaç satır kod, sıfır bağımlılık, varsayılan olarak erişilebilir. Stil, zamanlama veya hedefleme gerektiren, müşterinin gördüğü her şeyde yerel diyalogların sınırını aşmışsınız demektir: PHP ile bir <dialog> yazdırın, hedefleme ve test gerektiğinde üzerine düzgün bir popup sistemi koyun.

Belirli bir senaryoda takıldıysanız önerim, sorunu çözen en küçük sürümle başlamanız. Kavram kanıtı için bir alert() koyun. Ne sıklıkla açıldığını izleyin. Konsoldaki hataları okuyun. Çalışıyorsa ve kimse şikâyet etmiyorsa iş bitmiştir. Ölçeklenmiyorsa (stil, mobil uyum, A/B testi veya analiz gerekiyorsa) daha kapsamlı bir çözüme geçme zamanı gelmiştir. Daha önce değil.

PHP popup'lar hakkında sık sorulan sorular

PHP ile popup nasıl oluşturulur?

PHP ile popup oluşturmak için alert(), confirm() veya prompt() çağıran bir JavaScript script etiketini echo ile sayfaya yazarsınız. PHP sunucuda çalışır ve pencereyi kendisi açamaz; JavaScript'i sayfaya ekler, diyaloğu tarayıcı açar. echo satırını bir if bloğuna alırsanız popup yalnızca sunucudaki koşul doğru olduğunda görünür. Stilli bir popup için metni escape edilmiş bir dialog öğesi yazdırın ve showModal() ile açın.

PHP popup ile JavaScript popup arasındaki fark nedir?

JavaScript popup'ları tamamen tarayıcıda çalışır: kullanıcının tıklaması veya kaydırması onları tetikler, gerisini JavaScript halleder. PHP popup'ları ise PHP'nin sunucu tarafındaki bir koşula (hatalı giriş, veritabanı durumu, oturum değeri) bakarak sayfaya yazdığı JavaScript veya HTML popup'larıdır. Diyalog her zaman tarayıcıda çalışır. Fark, tetikleyiciyi kimin kontrol ettiğidir: istemci (saf JS) ya da sunucu (PHP).

PHP popup'ım neden görünmüyor?

En sık üç neden var: (1) Tarayıcının popup engelleyicisi window.open() çağrısını engeller ama alert()'i engellemez, doğru yöntemi kullandığınızı kontrol edin. (2) echo edilen metindeki kaçışsız tırnaklar JavaScript söz dizimi hatasına yol açar, dinamik içeriği json_encode() ile geçirin. (3) PHP koşulu o istekte doğru değildir, örneğin oturumdaki flash mesajı yönlendirmeden önce ayarlanmamıştır.

PHP popup'ları güvenli mi?

Yerel alert, confirm ve prompt diyalogları tarayıcının kendi bileşenleridir ve kendi başlarına güvenlidir. Açık, kullanıcıdan gelen içeriği escape etmeden script etiketine yazdığınızda oluşur. Bir kullanıcı forma '); alert('XSS yazar ve PHP bunu temizlemeden popup'a geri basarsa yansıtılmış (reflected) bir XSS hatası yayınlamış olursunuz. Dinamik içeriği JavaScript'e giderken json_encode(), HTML'e giderken htmlspecialchars() ile geçirin.

Form gönderildikten sonra PHP ile uyarı mesajı nasıl gösterilir?

Formu işleyin, mesajı oturuma kaydedin ve 303 durum koduyla yönlendirin (Post/Redirect/Get kalıbı). Sonraki sayfada mesajı okuyun, oturumdan silin ve gösterin: json_encode() ile bir alert() olarak ya da htmlspecialchars() ile bir dialog öğesi olarak. Yönlendirme sayesinde ziyaretçi sayfayı yenilediğinde mesaj tekrar görünmez ve form yeniden gönderilmez.

PHP'de butona tıklayınca açılan popup nasıl oluşturulur?

Tıklama tarayıcıda gerçekleşen bir olaydır, bu yüzden popup PHP'nin sayfayı oluşturduğu ana değil, tıklama işleyicisine bağlanmalıdır. Butonu ve mesajı escape edilmiş bir dialog öğesini PHP ile yazdırın, ardından satır içi onclick yerine addEventListener ile eklenen bir tıklama işleyicisinden showModal() çağırın. Buton ile açılan popup rehberimiz kodsuz sürümüyle birlikte tüm kalıbı adım adım anlatıyor.

Bu yazılara da göz atın:

• 7 adımda popup reklam nasıl oluşturulur

• HTML ile popup nasıl yapılır

• Vue modal popup nasıl oluşturulur

Murathan Yıldırım

Popupsmart COO'su

Tüm yazılar

Murathan Yıldırım, yapay zekâ, dönüşüm optimizasyonu ve müşteri deneyimi odaklı SaaS ürünleri geliştiren bilgisayar mühendisi ve ürün odaklı bir girişimcidir. Kariyerine Oracle'da başlayarak büyük ölçekli kurumsal sistemler üzerinde deneyim kazanmıştır. Flatart adlı büyüme odaklı dijital ajansın kurucu ortaklarından biri olduktan sonra, 2019 yılında SaaS dünyasına geçiş yapmıştır. E-ticaret platformları (özellikle Shopify) için edindiği pratik büyüme deneyimini ölçeklenebilir ürünlere dönüştürmüştür. Dünya genelinde çevrim içi işletmeler tarafından kullanılan, yapay zekâ destekli Popupsmart'ın COO'su ve LiveChatAI'ın kurucusudur.

tarafından incelendi. Mert Özeren