Scriptlerde yeni sürüm bilgisi veya versiyon bilgisi son kullanıcıya, yeni bir sürüm çıktıkça nasıl haber veriliyor bugün bu konuyu işleyeceğiz. Bunun için birden çok yol olabilir. Ben kendiminde yapmış olduğum, scriptlerimde kullandığım yöntemi anlatacağım.
Geliştirici yada yazılımcı bir script yaptığında yönetim paneli gibi kısımlarda (genelde yönetim panelinin site yöneticisi görebildiği için bu kısımlar tercih edilir) hem yeni güncellemenin olup olmadığını varsa hangi sürümün şuan yayında olduğunu ve bu güncelleme ile gelen yeni özellikleri haber veriyor. Son kullanıcıların tümü(geliştiricinin yapmış olduğu scripti kullanan herkes) yönetim panellerinde bu yazıyı gördükten sonra geliştiricinin sitesini ziyaret eder ve bahsi geçen güncel sürümü indirirler, kurulumu tamamladıktan sonra ana-sayfalarında bulunan yeni sürüm var uyarısı kalkar ve güncel sürümü kullanıyorsunuz kullandığınız sürüm de şu.. gibi bir ibare yer alır. Biraz karmaşık anlatmış olabilirim ancak durum gerçekten biraz karmaşık.
Şöyle basit bir dosya hiyerarşisi ile durumu anlatmaya çalışalım.
index.php
guncelleme.php
yonetim/ayarlar.php
yonetim/index.php
. . .
.
index.php
yonetim/ayarlar.php
yonetim/index.php
. . .
.
Görüldüğü üzere guncelleme.php dosyasını dağıtılan script dosyaları arasında göremiyoruz. Çünkü geliştirici bu dosyayı her yeni sürüm çıkardığında manüel olarak çıkan yeni özellikler gibi bilgilerle güncelleyecektir. yonetim/index.php de basit bir bot kullanarak guncelleme.php dosyasındaki içerik çekilecektir.
guncelleme.php dosya içeriği
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo $row_ayar['surum']; ?></title> <link rel="stylesheet" href="css/bootstrap.min.css"> </head> <body> <div class="container"> <div class="col-xs-12 col-sm-12 col-md-12"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">Güncelleme ve Duyurular <span class="badge"><?php echo $row_ayar['surum']; ?></span></h3> </div> <div class="panel-body"> <p>Yayın Tarihi: <span class="label label-info">05.11.2016 v3.3</span> Ücretli Sürüm</p> <pre> -Pageloader eklendi. </pre> <p>Yayın Tarihi: <span class="label label-info">11.10.2016 v3.2</span> Ücretli Sürüm</p> <pre> -Vip linkler dofollow, normal linkler nofollow oldu. </pre> <p>Yayın Tarihi: <span class="label label-info">08.10.2016 v3.1</span> Ücretli Sürüm</p> <pre> -Reklamlar admin panelden eklenebilir hale getirildi. -Vip üyeler belirginleştirildi. -Footer kısmı açıp kapatılabilir(panelden) -Footer kısmı statik yada fixed olarak ayarlayabilme. -Detay sayfasında anahtar kelime ekleyebilme -Detay sayfasında linkin Vip olduğunu gösteren uyarı -Full Hd arkaplan -Menüyü siyah yada beyaz olarak kullanabilme </pre> </div> </div> </div> </div> <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script src="js/bootstrap.js"></script> </body> </html>
Yukarıdaki kodlara göre veritabanın ayarlar tablosunda surum adında bir hücrede kullanılan sürüm bilgisi yer alıyor. <?php echo $row_ayar[‘surum‘]; ?>bu şekilde veri tabanından sürekli kullanılan sürüm bilgisi çekiliyor.
Aynı zamanda güncellemeler hakkında da bilgiler verilmiş. yonetim/index.php dosyasında da file_get_contents kullanılarak bu geliştirici demo adresinden guncelleme.php dosyasının içeriği çekiliyor, dolayısıyla buradan kullanılan sürüm bilgisi de çekilmiş oluyor. Son kullanıcı scriptinde ki veritabanından sürüm bilgisi de çekilerek bu iki veritabanının (geliştirici ile son kullanıcının) bilgileri kıyaslanıyor. Eğer durum eşit değilse if else kullanılarak eski sürüm kullanıyorsunuz şeklinde bir alert çıkartılıyor. Eğer eşitlik sağlanıyorsa sürümünüz güncel yazısı çıkartılıyor. Eğer sürüm güncel değilse, yeni sürümü, özelliklerini, nereden indirilebileceği gibi bilgileri yazdırabilirsiniz.
Gelelim yonetim/index.php dosyasının nasıl bir içeriğe sahip olduğuna;
<?php require_once('../Connections/baglan.php'); include "ust.php"; ?> <div class="container"> <div class="col-xs-12 col-sm-12 col-md-12"> <div class="panel panel-default"> <div class="panel-heading"> <?php $link = "https://gelistricidemoadresi.com/guncelleme.php"; $parcala = '@<h3 class="panel-title">(.*?)</h3>@si'; $parcala2 = '@<div class="panel-body">(.*?)</div>@si'; $parcala3 = '@<span class="badge">(.*?)</span>@si'; $botara = file_get_contents($link); preg_match_all($parcala,$botara,$baslik); preg_match_all($parcala2,$botara,$icerik); preg_match_all($parcala3,$botara,$surum); $botbaslik =$baslik[0][0]; $boticerik =$icerik[0][0]; $surumcek =$surum[0][0]; echo $botbaslik; echo '</div>'; if ($surumcek == $row_ayar['surum']) { echo '<div class="alert alert-success alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> Güncel sürümü kullanıyorsunuz. </div>'; }else { echo '<div class="alert alert-danger alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> <strong>Yeni bir sürüm var '.$surumcek.'</strong> Eski sürüm kullanıyorsunuz! indirmek için <a href="http://scriptsat.com/item/pvp-server-listesi-scripti/805361">tıklayın.</a> </div>'; } echo $boticerik; ?> </div> </div> </div> </div> <?php include "alt.php"; ?>
Verilen kodlar mantığı anlamanız içindir, bu kodların tamamını kullanarak sürüm kontrol sistemi yapamazsınız.
Peki kıyaslamayı yaptık, sürümümüz güncel değil uyarısı aldık ve verilen linkten sürümümüzü güncelledik. Ancak hala uyarı gitmedi bunun nedeni sizin veritabanınızda hala eski sürüm bilgisi saklanıyor olmasıdır. Bunun için de geliştirici demosunda yonetim/ayarlar.php sayfasında(yöneticinin site ayarlarının yapıldığı bir sayfada form içerisinde hidden alan kullanılarak veri tabanında yeni sürüm numarasının güncellenmesi sağlanabilir böylelikle yeni sürüm güncellemesi yapıldığı halde, eski sürümü kullanıyorsunuz hatası almazsınız.
Buna örnek vermek gerekirse tahmini ayar.php dosya içeriği hidden alan;
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1"> <h2>Kullanıcı adı ve Şifre</h2> <div class="row"> <div class="col-md-6"> <div class="input-group"> <span class="input-group-addon" id="sizing-addon2"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></span> <input type="text" name="kullaniciadi" value="<?php echo htmlentities($row_ayar['kullaniciadi'], ENT_COMPAT, 'utf-8'); ?>" class="form-control" aria-describedby="sizing-addon2" required> </div> <div class="hidden-md hidden-sm hidden-lg" style="padding:10px;"></div> </div> <div class="col-md-6"> <div class="input-group"> <span class="input-group-addon" id="sizing-addon2"><span class="glyphicon glyphicon-asterisk" aria-hidden="true"></span> Şifre</span> <input type="text" name="sifre" value="" class="form-control" aria-describedby="sizing-addon2" > </div> </div> </div><hr> <input type="hidden" name="MM_update" value="form1" /> <input type="hidden" name="id" value="<?php echo $row_ayar['id']; ?>" /> <input type="hidden" name="surum" value="v3.3" /> </form>
Yukarıda ki formda aslında kullanıcı adı şifre ayarları kaydettiriliyor ancak bunun yanı sıra yeni versiyon bilgisi de update ediliyor. Umarım scriptlerinizde yeni bir sürüm yayınlarken en azından yöntem hakkında bir fikir oluşturabilmişimdir.