VS Code Klavuzu 2024

Visual Studio Code Sıfırdan Kurulum, Ayarlar ve Eklentiler

Php ile kodlama yapıyorsanız ve VS Code editörüne geçmek istiyorsanız bu yazının faydalı olacağını düşünüyorum. Ayrıca Python'a giriş yaptığım için Python ayarlarını ve gerekli eklentilerini de ekleyeceğim. Ayarları yaptığınızda Php + Python için uygun bir ortam hazırlamış olacaksınız. Uzun bir süredir Sublime Text editörünü kullanıyordum fakat github copilot gibi eklentilerin bu gibi editörlere geç gelmesi, VS Code'un daha çok kullanılması, python için yine VS Code'un tercih edilmesi gibi nedenlerle VS Code'a geçmeye karar verdim. Sonuçta hepsi bir araç, tercih size kalmış. Bu geçişte güncel bilgileri adım adım yazmaya çalışacağım. Hadi başlayalım...
---

İlk kurulum:

  • “Code/Preferences/Profiles/Create profile” ile profil adını yaz (ayhan vb) ve oluştur.
  • “Code/Preferences/Settings Sync is On” tıkla ve githup ile oturum aç. Böylece profilindeki tüm ayar, tema, vs.. senkronize olur.

Kullanıcı ayarlarını değiştirme (Vs Code standart ayarlarını bu dosya ile değiştirebilirsiniz):

  • Cmd+Shift+P ile komut paletini aç.
  • "Open User Settings (JSON)" yaz ve tıkla.
  • Açılan settings.json dosyasına ayar komutunu yaz ve kaydet.

PHP için ilk yapılacaklar (önce yukarıdaki ilk kurulum işlemlerini yapın!):

  • Extensions menüsünü sol panelden aç.
  • “PHP Intelephense by Ben Mewburn” kur. Aşağıdaki ayarları yap (eklenti sayfasında yazanlardır, güncelini eklenti sayfasından bakın).
    • Extensions arama kutusuna “@builtin php” yaz. “PHP Language Features” yerleşik php eklentisini Disable yap. Diğer “PHP Language Basics” syntax highlighting eklentisi Enable kalsın.
    • settings.json dosyasını aç ve aşağıdaki satırı ekle ve kaydet:
"files.associations": {
    "*.module": "php"
},
    • yine settings.json içine aşağıdaki satırı ekleyerek default php yazım önerilerini devre dışı bırakın:
"php.suggest.basic": false,
  • “PHP Debug by Xdebug” kur.

PYTHON için ilk yapılacaklar (önce yukarıdaki ilk kurulum işlemlerini yapın!):

  • “Python by Microsoft” kur.

Buraya kadar yaptıysanız artık çalışmaya hazırsınız demektir.

Diğer eklentiler (isteğe bağlı):

  • "SFTP" by Natizyskunk: web sitenizin dosyalarını local ve server tarafı olmak üzere senkronize etmek istiyorsanız bu eklentiyi tavsiye ederim. "ftp-sync by Lukasz Wronski" ve birkaç farklı ftp eklentisini denedim fakat htaccess dosyalarını senkronize edememek gibi farklı hatalar aldım. Bu nedenle SFTP eklentisini tercih ettim. Eklentiyi kurup ftp bilgilerinizi girdikten sonra klasörünüzdeki dosyalarda bir değişiklik yapıp kaydet dediğinizde otomatik olarak upload edilir. İsterseniz sol panelden dosyaya/klasöre sağ tık yapıp upload veya download yapabilirsiniz. Tüm klasörü download veya upload yapmak için komut paletini de kullanabilirsiniz (local to remote veya remote to local). 
    • Komut paletine "SFTP: config" yazıp tıklayın. İlk kez kullandığınız için bir ayar oluşturmamız gerekecek. sftp.json (klasörünüzdeki .vscode içine yerleşir) dosyası açılır. Bu dosyaya aşağıdaki ayarları girip kaydedin (bu ayarlarda ftp bilgilerinize göre gerekli değişiklikleri yapın. Ftp bilgileriniz yoksa cpanel > ftp hesapları kısmından ftp hesabı oluşturabilirsiniz):
{
    "name": "mywebsite.com",
    "host": "reseller.ni.net.tr",
    "protocol": "ftp",
    "port": 21,
    "username": "ftp@mywebsite.com",
    "password": "your_password",
    "remotePath": "/",
    "uploadOnSave": true,
    "ignore": [".vscode", ".git", ".DS_Store"],
    "useTempFile": false,
    "openSsh": false
}

  • JavaScript Productivity Pack - Emre MUTLU: Bu bir eklenti paketidir. Faydalı bulduğum eklentileri içerdiği için ben kurdum. Fakat içinden daha sonra "Code Spell Checker, Turkish Code Spell Checker, Error Lens" isimli üç eklentiyi kaldırdım (yanlış yazılmış kelimelerle ilgili bu eklentileri kodda karışıklık yaptığı için kaldırdım).
  • "Twig" by whatwedo: Php twig dosyalarının syntax highlighting eklentisidir. Twig dosyaları ile çalışıyorsanız faydalı olacaktır.
  • CodeMetrics: Bu eklentiyi kullandım fakat bence gerek yok. Javascript kodlarındaki karmaşıklığı ölçüyor. Örneğin bir fonksiyonunuz var bunun yanına bir renk ve sayı ile karmaşıklık notunu yazıyor. Görünüm olarak karışıklığa neden olduğunu düşündüğüm için kaldırdım.
  • Codeium: Kod ve yorum yazarken yapay zekadan öneri almak için bu eklentiyi kurabilirsiniz. Github Copilot gibi AI desteği sunan bir eklentidir. Copilot ücretli olduğu için Codeium eklentisini ücretsiz bir alternatif olarak tavsiye ediyorum. Üstelik Chat bölümü de sidebar'a ekleniyor ve buradan soru sorabiliyorsunuz. Eklentiyi kur + signup + mailden onayla + token gir sırasını izleyerek aktif edebilirsiniz.
  • "Selected Lines Count" by Ram Dayal Vaishnav: Normalde durum çubuğunda seçtiğiniz alanın satır sayısını göstermenin malesef bir seçeneği yok. Durum çubuğunda kaç karakter seçtiğiniz görünüyor fakat kaç satır seçtiğiniz görünmüyor. İşte bu eklenti durum çubuğunda kaç satır seçtiğinizin görünmesini sağlıyor.

 

Diğer ayarlar kısmını ikiye ayırıyorum:
1) settings.json dosyasına yazılacaklar
2) ayarlar arayüzünden yapılacaklar

1) Diğer ayarlar - settings.json dosyasına eklenir (isteğe bağlı):

Cmd+Shift+P ile komut paletini aç. "Open User Settings (JSON)" yaz ve aç. Açılan settings.json dosyasına aşağıdaki ayarlardan yapmak istediklerinizi ekleyin ve kaydedin.

  • workspace'i kaydetme işlemine onay vermek için.
"security.workspace.trust.untrustedFiles": "open",
  • exit veya close işleminde kaydedilmemiş dosyalar var uyarısını devre dışı bırakmak için (vs code tekrar açıldığında bu dosyalar son hali ile gelecektir).
"window.confirmBeforeClose": "never",
"files.hotExit": "onExitAndWindowClose"

2) Diğer ayarlar - ayarlar sayfasından yapılır (isteğe bağlı):

Cmd+Shift+P ile komut paletini aç. "Open User Settings" yaz ve tıkla (json olmayan seçeneği tıklayın). Bu genel kullanıcı ayarlarını açar. Bu sayfanın başında arama kutusu var oraya yapacağınız ayarı aratabilirsiniz.

  • line highlight özelliği default olarak açıktır ve bulunduğunuz satırı highlight yapar yani satır rengi değişir. Bu benim istemediğim bir durum çünkü o satırda bir kelimeyi seçili hale getirdiğimde satırı tamamen seçmişim gibi görünüyor, nereyi seçtiğim karışıyor. Bu özelliği kapatmak için: 
    • Ayarlar sayfanın başındaki arama kutusuna "Render" yazarak aratın.
    • "Editor: Render Line Highlight" seçeneğini bulup "none" olarak belirleyin.
  • Vs Code içinde tanımlı olmayan bir dosya türünü bilinen bir dosya türünün şablonu ile eşleştirebilirsiniz. Böylece vs code yeni dosyayı ilişkilendirdiğiniz dosya türünde açacaktır.  Örneğin Tpl dosyaları (önceden kullanılan twig benzeri bir şablon oluşturma dilidir) ile çalışıyorsanız ve bu tpl dosyalarının php renk şablonunda açılmasını istiyorsanız:
    • Ayarlar sayfasının solundaki menüden Text Editor altındaki Files başlığına tıklayın.
    • Associations kısmına gelin ve Add Item butonuna tıklayın. Birinci kutuya *.tpl ikinci kutuya da php yazın. Ok tıkladığınızda artık tpl dosyaları php dosyası gibi açılacaktır. 
  • Tabların arasındaki boşlukların azaltılarak daha sıkışık görünmesi için Workbench › Editor: Tab Sizing değerini "shrink" olarak belirleyin. Ben bir süre "shrink" ayarıyla kullandım fakat sonra default olan "fit" değerine geri döndüm. Çünkü çok fazla tab açınca tablar iyice küçülüyordu. Dolayısı ile çok fazla tab kullanacaksanız "fit" ayarı daha mantıklı olacaktır.
  • Örneğin bir css dosyasında height kelimesinin üzerine tıklayınca tüm height kelimelerini highlight yapar. Bu bence gereksiz çünkü bunu istiyorsanız o kelimeye çift tıklamanız yeterli, kendiliğinden yapmasına gerek yok ki bu da editörü yavaşlatır bence. Bunu kapatmak isterseniz "Editor: Occurrences Highlight" seçeneğindeki işareti kaldırın.
  • "workbench.editor.untitled.labelFormat" ayarını "name" olarak belirledim. Varsayılan olarak content olarak gelir ve yeni bir sayfa açtığınızda tab başlığında yazdığınız kodun ilk birkaç kelimesi görünür. Bu tab mesafesini arttırdığı için ve karışık görünmesine neden olduğu için bana gereksiz geldi. Yine de kara sizin.
  • "editor.tabSize": 4 olarak belirleyebilirsiniz. Böylece tab boşlukları 4 karakter olarak ayarlanır. Default değeri 1'dir.
  • "editor.lightbulb.enabled" ayarını kaldırdım. Çünkü bu ayar aktif olunca özellikle js dosyalarında satırların başında bir ampül ikonu çıkıyor. Ampüle tıklayınca o satırla ilgili yapılabilecek düzeltmeleri ve sonuçlarını gösteriyor. Yine çok gerekli görmediğim ve karmaşıklığa sebep olduğu için bu ayarı kaldırdım. 
  • "workbench.editor.pinnedTabsOnSeparateRow" seçeneğini işaretli hale getirirseniz pin'lediğiniz tablar bir üst sırada sabitlenir.
  • "editor.colorDecorators" seçeneğinin işaretini kaldırdım. Böylece css gibi yerlerde bir renk kodu yazdığınızda yanında kare kutucuk çıkmıyor, fakat renk kodunun metnini o renkte göstermeye devam ediyor. Bu seçenek aktif olursa kutu çıkar ve siz o kutuya tıklayıp paletten renk seçebilirsiniz. Fakat kod yazarken bu kutu karışıklığa yol açıyor bence ve zaten bu renk seçme işini tarayıcının developer araçlarından yapıyorum genellikle. Bu kutuya gerek olmadığını düşünüyorum.
  • "workbench.editor.highlightModifiedTabs" ayarını işaretli yaparak değişiklik yapılan tabın highligth yapılmasını böylece diğer tablardan daha rahat ayrışmasını sağlayabilirsiniz.
  • "workbench.editor.tabCloseButton" off yaparak tabların yanında görünen Close butonunu kaldırabilirsiniz. Böylece tabın genişliği biraz daha küçülecektir. Ayrıca tab'a tıklarken yanlışlıkla x butonuna basma durumuna çözüm olacaktır.
  • "problems.decorations.enabled": seçeneğini kapatarak dosyalardaki uyarıları (kodlama hatası vb) göstermeyi kapatabilirsiniz. Çünkü burada uyarı verdiği durumlar her zaman bir hata olmayabiliyor, örneğin css'de boş sınıf olunca bir uyarı veriyor. Yani bu uyarı verilen durumları bazen bilerek yapıyoruz ve bunların hataymış gibi görünmesini istemediğim için bu ayarı kapattım. Ayrıca bu ayar açık olunca hatalı dosyalar sidebar ve tab olarak renk değiştiriyordu ve bu görünüşte karışıklığa nadan oluyordu.
  • "editor.showUnused": false olarak belirleyin. Normalde tanımladığınız bir değişken herhangi bir yerde kullanılmayınca (unused) farklı renkte görünüyor. False yaparak bu özelliği kapatabilirsiniz.

Kullandığım renk ve ikon temaları:

Tema seçimi tamamen kişiye bağlıdır ve rahat ettiği bir renk düzeni olmalıdır. Çoğunlukla koyu temalar kullanılır. Ben de koyu temaları uzun süre kullandım ve halen de kullanıyorum fakat arada sıkıldıkça açık temalara da geçiş yapıyorum. Sublime Text editöründe daha fazla tema vardı, bu anlamda Vs Code daha az seçeneğe sahip gibi geldi. Tema renk düzeni olarak tavsiye edebileceğim hususlardan biri de mavi renkleri çok içermeyen bir tema seçin. Çünkü mavi ışık uzun süre bakılınca göze rahatsızlık veriyor. Ben bu anlamda mavi rengi azaltıp ekranı sarartan bir yazılım olan flux'u kullanıyorum bilgisayarda. 

Aşağıya kullandığım temaları "Renk Teması / İkon Teması" formatında ekliyorum.
  • Github Dark Default / Material Icon Theme
    • Material Icon Theme için şu ayarları normal ayarlar arayüzünden yaptım: activeIconPack: react seç, material-icon-theme.files.associations: "*.tpl": "php" satırını ekle, material-icon-theme.folders.color: #F8D775 olarak belirle, material-icon-theme.folders.theme: Classic seç.

Bazı Kısayollar:

  • Cmd + Shift + L: dosyadaki seçili ifadenin geçtiği her yere imleç ekler.
  • Alt + Shift + I: her satırın sonuna imleç ekler (önce tümünü seç).
  • Cmd+Shift+P: komut paletini açar.
  • Cmd+P: folder daki ve son açılan dosyalar arasında hızlı dosya açmayı sağlar.
  • Cmd+Shift+P / Open user settings (JSON): settings.json kullanıcı ayarlarını açar.
  • Kntrl + G: satıra git.
  • F8: sonraki hataya git
  • Bookmark add: Alt+Cmd+K
  • Bookmark next: Alt+Cmd+L
  • Alt + up/down arrow: satırı aşağı yukarı taşır.
  • Transform to Lowercase: Shift + Kntrl + Alt + L
  • Transform to Uppercase: Shift + Kntrl + Alt + U
  • Transform to Titlecase: Shift + Kntrl + Alt + T
  • Shift + Alt + F: Auto indent (otomatik girinti ayarlama)

Kendi Eklediğim Kısayollar:

File > Preferences > Keyboard Shortcuts açın ilgili komutları bulup kısayolları ekleyin:
  • Transform to Lowercase: Shift + Kntrl + Alt + L
  • Transform to Uppercase: Shift + Kntrl + Alt + U
  • Transform to Titlecase: Shift + Kntrl + Alt + T

Bonus:

https://learn.vscode.one/
VS Code'yi profesyonel olarak kullanmayı öğreten web sitesi.


Farklı öneriler oldukça buraya eklemeye devam edeceğim...
Son Güncelleme: 28/12/2023

PHP foreach Döngüsünde Son Değer Değilse Virgül Ekle

determine the last iteration in a php foreach loop?()

Php'de foreach döngüsü ile değerleri aralarına virgül işareti koyarak yan yana yazdırdığınızı düşünelim. Bu durumda en sonununcu değerden sonra virgül koyulmasın istersiniz. Bu durumda son kayıt olup olmadığını array_key_last ile kontrol ederiz (aynı şekilde ilk kayıt kontrolü yapmak isterseniz array_key_first kullanabilirsiniz).

foreach ($array as $key => $value) {
    echo $value;
    if ($key !== array_key_last($array)) echo ", ";
}


PHP Fonksiyonu Çağıran Sayfa Bilgilerini Almak

debug_backtrace()

Php'de fonksiyon ve metodlar çeşitli sayfalardan çağrılabilir. Bir hata durumunda metoda parametre gönderen sayfayı görmek isteyebilirsiniz. Bu gibi hata ayıklama durumlarında kullanabileceğiniz debug_backtrace fonksiyonu için aşağıdaki kodu kullanabilirsiniz.

$trace = debug_backtrace();
$caller = array(
    "file" => $trace[1]['file'],
    "line" => $trace[1]['line'],
    "function" => $trace[1]['function'],
    "class" => $trace[1]['class'],
);
var_dump( $caller );

ÖNEMLİ NOT: Burada dikkat etmeniz gereken husus; direk olarak var_dump( debug_backtrace() ) şeklinde kullanarak bütün sonucu bastırmamanızdır. Projenize göre değişmekle birlikte MB'larca bir sonuç döndürebilir. Bu nedenle dizideki 4 değeri çıktı olarak almanızı öneririm.

var_dump yerine error dosyasına yazdırmak için var_error_log($caller) kullanabilirsiniz.

Opencart PHP Zip & Download (Ajax Method)


Opencart sayfasındaki bir butona tıklayarak dosyaları indirmek için ajax metodunu kullanabilirsiniz. Bunun için controller ve view dosyalarına ekleyeceğiniz kodlar aşağıdadır.

Controller:
public function downloadAllFiles() {
    $json = array();

    $zip_files = array(
        "file-1.jpg",
        "file-2.jpg",
        "file-3.jpg",
    );
    
    if ( count($zip_files) > 0 ) {
        $zipname = "indir.zip";
        $zip = new ZipArchive;
        $zip->open($_SERVER['DOCUMENT_ROOT']."/store/image/download/".$zipname, ZipArchive::CREATE);
        foreach ($zip_files as $file) {
          $zip->addFile($_SERVER['DOCUMENT_ROOT']."/store/image/download/".$file, $file);
        }
        $zip->close();

        //success and send zip file path
        $json['success'] = 'https://example.com/store/image/download/'.$zipname;
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
    else {
        $json['error'] = "İndirilecek dosya bulunamadı! Lütfen kontrol ediniz.";
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
}

View:
<!-- Add Download Button -->
<button id="btn-download-zip" data-loading-text="<?php echo $text_downloading; ?>" class="btn btn-info"><?php echo $text_download; ?> <i class="fa fa-download"></i></button>

<!-- Add Ajax Script -->
<script type="text/javascript">
    $(document).delegate('#btn-download-zip', 'click', function() {
        $.ajax({
            url: 'index.php?route=sale/order/downloadallfiles',
            type: 'post',
            dataType: 'json',
            beforeSend: function() {
                $('#btn-download-zip').button('loading');
            },
            complete: function() {
                $('#btn-download-zip').button('reset');
            },
            success: function(json) {
                $('.alert').remove();

                if (json['error']) {
                    $('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + '</div>');
                }
                else {
                    //download zip file
                    window.location.href = json['success'];
                }
            },
            error: function(xhr, ajaxOptions, thrownError) {
                alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
            }
        });
    });
</script>

Imagick Vector (Pdf, Svg) to Jpg


Find best resulation and apply for all vector image.
$imagick = new Imagick();
$imagick->setResolution(100,100);
$imagick->readimage("image.svg[0]"); //or "image.pdf[0]"
/* Apply Best Resolution */
$geo=$imagick->getImageGeometry();
$geo_height = intval($geo['height']);
$geo_width = intval($geo['width']);
if ($geo_width > 800 || $geo_height > 800) {
    //do not do anything if one of them is larger than 800px
}
else {
    if ($geo_width > $geo_height) {
        $r = round(800 / $geo_width) * 150;
    }
    else {
        $r = round(800 / $geo_height) * 150;
    }
    //readimage with new resolution
    $imagick->setResolution($r,$r);
    $imagick->readimage("image.svg[0]");
}
/* Apply Best Resolution End */

Adım adım Html5 Temel Web Site Kurulumu


Html5 Web Tutorial with Folder Structure

Burada gördüğünüz klasör yapısı standart bir Html5 web projesinin ilk halidir. Bazı farklılıklar olabilir. Örneğin css, js klasörleri dist veya assist gibi bir klasör içinde yer alabilir. Fakat temel olan ve benim de tavsiye ettiğim yapı budur. Gelelim bu yapıyı güncel haliyle nasıl kuracağımıza;

Not: Burada bir backhand developer olarak bir proje yaptığınızı varsayıyorum. Yani tamamen işiniz kodlar ile. Bu işi bir program (Adobe XD, Figma vs) yapıyor iseniz zaten bu tarz frontend yazılımlar size kodları hazır halde verecektir.

1. Bir web projesi için kolları sıvadığınızda ilk iş olarak temel yapıyı oluşturmak istersiniz ve bunu güncel araçlarla kurmayı dilersiniz. Ben burada microsoft, nike gibi firmalar tarafından da kullanılan HTML5 Boilerplate'i seçtim. Bu araç size standart yapıyı verecektir.

2. https://html5boilerplate.com/ adresinden son versiyonu indirin ve tüm klasörleri sitenizin root'una upload edin.

3. Bu yapıda hazırda yerleşik olmayan ama işimizi kolaylaştıracak Bootstrap framework'ü kendimiz entegre edicez. Böylece son versiyonu kullanmış oluruz. https://getbootstrap.com/ adresinden indirip upload ediniz. Zaten css ve js olarak iki klasörden oluşmakta. Bunları mevcut olanların içine eklemiş olacaksınız.

4. index.html sayfanızın head bölümünde tüm css'lerin en üstüne bunu ekleyin:

<link rel="stylesheet" href="css/bootstrap.min.css">

5. Bu iki js dosyasını (yok ise popper.min.js indirip upload edin) jquery dosyasının çağırıldığı koddan sonraya ekleyin:

<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>

6. Şablonunuz hazır. Artık header, content ve footer bölümlemelerinizi yaparak sayfanızı tasarlayabilirsiniz.

Bu yazıda sizlere temel ve güncel bir HTML5 şablonunun nasıl oluşturulacağını anlatmaya çalıştım.

Php Oturum Zamanını Belirlemek (session_start time)

Php Oturum Zamanını Belirlemek | Setting Php Session Time

Php'de session_start() fonksiyonu ile oluşturduğunuz standart oturum zamanı 1440sn (24dk) dir. Bunu uzatmak veya kısaltmak isterseniz .htaccess dosyasınızın en altına şu satırı eklemeniz yeterli olacaktır.

php_value session.save_path /home/xxx/session
php_value session.gc_maxlifetime 172800

Böylece kullanıcı 48 saat boyunca birşey yapmasa bile oturumu sonlanmayacaktır. Tabiki bu süre size kalmış. Bu kadar. Bu htaccess kodunun ne anlama geldiğini aşağıda bulabilirsiniz.

(Ayrıntı):
1. satırda php'de oturum dosyalarının kaydedildiği klasörü belirliyoruz. Standart olarak bu klasör public_html dışında kalan /tmp klasörüdür. Biz yine public_html dışında kalacak şekilde root klasöründe (çünkü bu klasöre erişim olmamalıdır) /session adlı bir klasör oluşturup htaccess de bu yolu belirttik. /home/xxx/session yolunu buna göre belirtmelisiniz.
2. satırda bu klasör içerisine oluşturulacak session dosyalarının ömrünü belirttik. 1. satırı yazmazsanız bu komut işe yaramayacaktır. Çünkü standart /tmp klasörü belli aralıklarla boşaltılmaktadır.

Wordpress ThemeForest Temasını Güncelleme (Envato Market)


Wordpress ThemeForest Temasını Güncelleme (Envato Market)
Update Wordpress ThemeForest Theme (Envato Market)


  1. https://envato.com/market-plugin/upgrading/ adresinden "Envato Market" eklentisini indirin (eski Envato Toolkit eklentisini kurmayın).
  2. İndirdiğiniz zip dosyasını eklentiler menüsünden "yeni ekle" butonuna tıklayarak kurun ve aktifleştirin.
  3. Sol menüye gelen Envato Market menüsüne tıklayın.
  4. Burada Api token bilgisini girmeniz için bir kutu var. Bu token kodunu almak için yine bu settings sekmesinde "clicking this link" yazan yere tıklayın. Sizi token alacağınız Envato sitesine yönlendirecek. 
  5. Burada bir token name yazmanızı isteyecek yazın ve altta izin kutularından şu üçünü seçin (bu üçünden başka seçmeyin! hata oluşuyor)
    1. View and search Envato sites
    2. Download your purchased items
    3. List purchases you've made
  6. Sonra Terms and Conditions kutusunu işaretleyip "Create Token" tıklayın.
  7. Size token kodunu verecek. Kopyalayın ve kutucuğu işaretleyip düğmeye tıklayın.
  8. Bu token kodunu 4. aşamada bahsettiğim kutuya girin ve Save Changes düğmesine tıklayın. Başarılı mesajını aldıysanız bir de Test Api Connection düğmesine tıklayın. Yine başarılı mesajını almışsanız artık güncellemeleri alabilirsiniz demektir.
  9. Envato Market > Themes sekmesinde update varsa göreceksiniz ve update linkine tıklayınca otomatik olarak temanız güncellenecektir.
  10. İşte bu kadar!

Wordpress Upload Edilen Medyaların Dosya Adını Değiştirme



Wordpress upload edilen medyaların adını değiştirme

Wordpress rename uploaded file


Normalde upload ettiğiniz dosyaların adını değiştiremezsiniz. Hatta bunu ftp'den yaparsanız wordpress bu dosyayı bulamaz ve hata oluşur. Uyguladığım en iyi çözümü anlatacağım.

  1. Phoenix Media Rename eklentisini kurunuz.
  2. Bu eklentiyi kurduktan sonra ortam (media) menüsünden dosyanın edit sayfasını açın. 
  3. Filename adlı kutudan yeni ismi verin ve güncelleyin. Hepsi bu kadar. 
  4. Eğer dosyanın kalıcı bağlantısını (permalink) değiştirmek istiyorsanız; aynı edit sayfasında yazı kısa ismi (permalink) kutusuna yazmanız yeterli olacaktır (bu kutu görünmüyorsa Ekran Tercihleri'nden açınız).

WordPress wp-config.php Dosyasını Koruma (dogushan.com)


Alıntı yapılmıştır, kaynağından okumak için lütfen tıklayınız:
https://www.dogushan.com/wordpress-wp-config-php-dosyasini-koruma/

WordPress wp-config.php Dosyasını Koruma:

Sitenize olan saldırıları önlemek için mutlaka yapmanızı öneririm.

Çözüm:

  • wp-config.php dosya iznini (CHMOD) 600 yapın. (400 yapınca wordpress admin panel pluginleri bu dosyada işlem yapamıyor. Örneğin WP Super Cache eklentisi gibi)
  • .htaccess içine bu kodu yapıştırıp kaydedin.
    <files wp-config.php>
    order allow,deny
    deny from all
    </files>
    

En çok kullanılan CHMOD değerleri:

400     r--------       files (won't let you accidentally erase)

444     r--r--r--      files (lets everyone read)

600     rw-------     files (no one else can read or see files)

644     rw-r--r--      files

664     rw-rw-r--      files

666     rw-rw-rw-     files

700     rwx------          programs and directories

750     rwxr-x---          programs and directories

755     rwxr-xr-x          programs and directories

777     rwxrwxrwx     programs and directories

WordPress: Yazının ilk kategorisini yazdırma


WordPress yazının ilk kategorisi | Wordpress first category of the post:

WordPress'de yazılara kategori ekleyebiliriz. Fakat kategori fonksiyonları tüm kategorileri bize çıktı olarak vermektedir. Peki sadece ilk kategoriyi (veya ikinciyi ..vs) ekrana yazdırmak istiyorsak ne yapmalıyız?

Çözüm:

Bu kodu yazdırmak istediğiniz sayfanın kodları içine ekleyin.
term_id ) ) . '">' . esc_html( $categories[0]->name ) . '
'; } ?>

2018 En İyi Wordpress Eklentileri



2018 En İyi Wordpress Eklentileri | 2018 Best Wordpress Plugins
Son Güncelleme | Last Update: 21.12.2018

  • Bir çok eklenti arasından en kullanılışlı gördüklerimi (en çok indirilenleri değil) sizlerle paylaşacağım. 
  • Hepsini kullandım ve sizlere öneriyorum. Genelde pro veya premium kısıtlaması olmayan tamamen ücretsiz eklentileri seçtim. 
  • Kullanım amaçlarına göre listeleyeceğim. 
  • Yazılan eklenti adlarını kopyalayıp Admin > Plugins > Add New tıklayarak aratınız.

HER SİTE İÇİN GEREKEN EKLENTİLER

Wordpress url içinden category ifadesini kaldırma / Wordpress remove category from url
Yoast SEO
Kurduktan sonra Yoast > Search Appearance >  Kategoriler > Category URLs seçeneğini Kaldır olarak belirleyin.

Wordpress backup and restore
UpdraftPlus - Backup/Restore
Bence en iyi backup alma eklentisi. Sitenizin komple yedeğini alabilir, bu arşivin içine girebilir. Ayrı ayrı veya komple geri yükleme yapabilirsiniz. İsterseniz yedekleri indirme imkanı da veriyor.

Wordpress url içinden tag ifadesini kaldırma / Wordpress remove tag from url
WP No Base Permalink
Kurduktan sonra Settings > Permalinks >  Disabled Tag Base kutusunu işaretleyin.

Wordpress siteyi bakım veya yakında moduna alma / Wordpress Coming Soon & Maintenance
CMP - Coming Soon & Maintenance Plugin
Bu eklentinin diğerlerinden farkı white list ve black list yapabilmeniz. Yani sadece anasayfa linki için bakım moduna alıp, diğer linklerin açılmasına izin verebilirsiniz...

Wordpress yazı ve sayfaları çoğaltma / Wordpress duplicate post and page

Duplicate Page and Post
Yazı ve sayfaların alt kısmına Duplicate butonu eklenir.

Wordpress sayfaları önbellekleme / Wordpress cache page

WP Super Cache
Sayfaları ve yazıları cache'e alabilir veya kapatabilirsiniz. Ben daha çok bir eklentide değişiklik yapıp sitede hala eski halini görünce, cache'i boşaltmak için kullanıyorum.

Wordpress başlık alanına video-resim ekleme / Wordpress add video-image into header

Advanced WordPress Backgrounds
Çok aradım ve şiddetle tavsiye ederim. Header alanında bir video oynatmak istiyordum ama mobilde bir türlü video görünmüyordu. Bu eklenti sorunu çözdü. Tabiki resim, youtube veya kendi videolarınızı da ekleyebilirsiniz. Seçenekleri gayet tatmin edici.

Wordpress SMTP mail ayarları  / Wordpress SMTP mail settings

WP Mail SMTP by WPForms
Site üzerinden mail göndermek istiyorsanız (Contact Form 7...vs)
öncelikle bu eklentiyi kurmalısınız ve gereken mail bilgilerini girmelisiniz.

Wordpress iletişim formu/ Wordpress contact form

Contact Form 7
En beğendiğim iletişim formu eklentisidir.

Wordpress abone ol listesi / Wordpress subscriber list

Newsletter
Bu eklenti sitenize abone ol formu eklemektedir. Listeyi yönetebilir, toplu mail atabilir, mail şablonları oluşturabilirsiniz. Çok kapsamlıdır.

Wordpress ziyaretçi sayacı / Wordpress visit counter

Count per Day
Sade ve basit bir ziyaretçi sayacı eklentisidir. Günlük, aylık, sayfa başı...vs tıklama istatistiklerini verir. Başlangıç menüsü altında bulacağınız kendine özel Dashboard sayfası güzel tasarlanmıştır.

Wordpress sosyal medya ikonları ekleme / Wordpress add social media icons

Social Media and Share Icons (Ultimate Social Media)
Sitenizin herhangi bir yerine sosyal medya hesapları ikonlarını ekler.

Wordpress sitenize farklı dil seçenekleri ekleme / Wordpress add multi language

WPML Multilingual CMS
Dil menüsünü özelleştirebilirsiniz. Sayfaları düzenleme ekranında sağ tarafta görünür ve + butonuna tıklayarak o dil için sayfanıza çeviri ekleyebilirsiniz. İçeriği TR den kopyala diyerek aynı içeriği alıp ilgili yerleri çevirirsiniz.

Wordpress sitenizde ziyaretçi yorumlarını gösterme / Wordpress show testimonials

Strong Testimonials
Anasayfanıza ziyaretçi yorumlarını slider olarak eklemek için kullandım. Ayarları oldukça fazla. Örneğin slide geçişleri, butonlar, sayfalama, ...vs
Wordpress upload edilen medyaların adını değiştirme / Wordpress rename uploaded file
Phoenix Media Rename
Normalde upload ettiğiniz dosyaların adını değiştiremezsiniz. Hatta bunu ftp'den yaparsanız wordpress bu dosyayı bulamaz ve hata oluşur. Bu eklentiyi kurduktan sonra ortam (media) menüsünden dosyanın edit sayfasını açın. Filename adlı kutudan yeni ismi verin ve güncelleyin. Hepsi bu kadar. Eğer dosyanın kalıcı bağlantısını (permalink) değiştirmek istiyorsanız; aynı edit sayfasında yazı kısa ismi (permalink) kutusuna yazmanız yeterli olacaktır (bu kutu görünmüyorsa Ekran Tercihleri'nden açınız).

Wordpress indirme yöneticisi / Wordpress download management

Download Monitor
Download Manager eklentisi ile neredeyse aynı fakat özellikle Türkçe desteği olmak üzere daha iyi olduğunu test ettim. Sitenizden indirilen dosyaları izlemek, özel indirme sayfası ve butonu koymak, indirme sayasını bilmek için kullanabilirsiniz

Wordpress galeri / Wordpress 
gallery
Photo Gallery (by Photo Gallery Team)
Kasım 2018 itibariyle galeri eklentileri içinden %80'ini test ettim. Sonuç olarak Photo Gallery yüzlerce resmi işleyebilmesi, etiketleyebilmesi, sıralayabilmesi, arama imkanı vermesi, filtreleme-search box butonlarını galeriye ekleme imkanı vermesi, sayfalama yada daha fazla yükle opsiyonlarının olması, title bilgilerini alabilmesi gibi aradığım özellikleri barındırdığı için tercih ettim. Bana göre eksi tarafı; wordpress'e eklenen fotoğraflar bile olsa bunları kendisinin tekrar ayrı bir klasöre import etmesi, bu disk kullanımını arttırmaktadır, fakat görselleri tehlikeye atmaması yönüyle bi yönüyle de iyi bir özellik. Eğer bu sizin için önemli ise Envira Gallery eklentisini alternatif olarak önerebilirim. Diğer eklentiler de bu saydığım özelikler bir yönüyle yok. Ben özellikle yüzlerce resmi barındırıp sağlıklı bir şekilde görüntüleyen bir eklenti bulma konusunda zorluk yaşadım. Photo Gallery bu yönüyle tercih edilebilir.

..devamı gelecektir.

PROJEYE ÖZEL EKLENTİLER

Wordpress  yazıları grid şeklinde listeleme / Wordpress show posts like grid view

Post Grid
Content Views (satın almak isterseniz görünüm modları çok hoş olan bir eklenti)
Ayarları esnek. Pinterest gibi (masonry) görünüm seçenekleri mevcut.

Wordpress  ziyaretçi defteri ekleme / Wordpress add guestbook

Gwolle Guestbook
Oku ve yaz sayfaları ve kendi database'i var. TR için bazı düzenlemeleri var fakat %100 Türkçe yapmak için plugin kodlarında değişiklik yapmanız gerekecektir.

Wordpress  fotoğrafları grid şeklinde gösterme / Wordpress photo grid

PhotoBlocks Grid Gallery
Fotoğrafları grid şeklinde gösterebilir ve üzerine metin ekleyebilirsiniz. Responsive ve şık bir görünüme sahip.

Wordpress  fotoğrafları tab'lı albümler olarak gösterme / Wordpress make album with tab

Portfolio Filter Gallery
Üst tarafında tab menüsü olan bir albüm oluşturabilirsiniz. Bu tab'lara göre ilgili fotoğraflar filtrelenecektir. Fotoğrafları grid şeklinde gösterir.

Wordpress içeriğinizi timeline şeklinde listeleme / Wordpress add events timeline

Rich Event Timeline
Aşağı doğru veya yana doğru (vertical or horizantal) zaman çizelgesi oluşturmanızı sağlar. Metin yada resim ekleyebilirsiniz. TR için ay isimlerini kodlardan düzenlemeniz gerekecektir.
..devamı gelecektir.

Wordpress: Veritabanına kayıt limiti


Yeni kayıt ekleyemiyorum:
Wordpress panelinden yazı, sayfa veya herhangi bir plugin içinde yeni bir kayıt eklemek istediğinizde olmuyorsa, bunun nedeni php.ini dosyasında belirlenen input limiti olabilir (max_input_vars). Bu değeri arttırarak sorunu çözebilirsiniz. Fakat bazen php.ini dosyasına erişmek imkansız olabiliyor. Bu nedenle htaccess yöntemini önereceğim.

Çözüm:
- Öncelikle Cpanel > Select PHP Version > Php 7 olarak belirleyin.
- Cpanel > Dosya Yöneticisi > .htaccess dosyasını açın. Dosya yönetecisi ayarlarında "Gizli dosyaları göster" açık olmalıdır. Yinede yoksa kendiniz oluşturun.
- Şu kodu htaccess dosyanızın en sonuna ekleyin:
#maksimimum kayıt sayısını arttırma
php_value max_input_vars 10000
php_value suhosin.get.max_vars 10000
php_value suhosin.post.max_vars 10000
php_value suhosin.request.max_vars 10000
- Htaccess dosyasını kaydedin. Bu kadar.

Wordpress Hata: İstediğiniz işlemi yapabilmek için WordPress web sunucunuza erişmelidir...

Wordpress - Hata:

"İstediğiniz işlemi yapabilmek için WordPress web sunucunuza erişmelidir. Lütfen devam etmek için FTP bilgilerinizi girin. Eğer giriş bilgilerinizi hatırlamıyorsanız, web barındırma firmanızla iletişime geçmelisiniz"

Çözüm:

wp-config.php dosyasını açın ve en alt satıra ekleyin:
define('FS_METHOD', 'direct');

Opencart Ürün Linklerini Kategorisiz Hale Dönüştürme (Product Seo Url Without Category)


Opencart sitenizde kategorilerdin birine girip, herhangi bir ürüne tıkladığınızda Url'ye üründen önce kategori ismi de eklenmektedir. Bu da Google'ın sitenizi yanlış indekslemesine yol açabilir. Çünkü aynı ürüne direk anasayfadan tıklayınca Url'ye kategori eklenmiyor. Bu şekilde bir ürün için iki farklı Url Google tarafından algılanıyor. Url'den kategoriyi çıkartarak bu durumu düzeltmek için:

- catalog/controller/startup/seo_url.php dosyasını açınız.
$url .= '/' . $query->row['keyword']; yazan ilk satırı arayınız ve şu değişikliği yapınız:
  $url = '/' . $query->row['keyword'];
- Diğer satırlarda değişikliğe gerek yok.
- Kaydedip, modifikasyonlardan refresh yapınız. Bu kadar.

Bu düzeltme Opencart 2.3.0.2 versiyonu için denenmiştir. Versiyona göre seo_url.php dosyasının yeri değişebilir.

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=32399

SublimeText Kurulum ve PHP Developer Ayarları


Ben bu ayarları ve kurulumu MacOS'da yaptım ama genel olarak diğer sistemlerde de aynı şekilde yapabilirsiniz.
1. SublimeText editörünü kuruyoruz.

2. View-Side Bar-Show Side Bar ve Show Open Files işaretliyoruz.

3. Projemizi açıyoruz (Project-Open Porject). Yoksa Project-Add Folder to Project diyerek htdocs klasörünüzü ekleyebilirsiniz. Daha sonra bu projenizi kaydedersiniz. Böylece dosyalarımız sidebar'a geldi.

4. Sublime user ayarlarımızı yüklüyoruz (daha önceden yedeğiniz varsa) yada yeniden yazıyoruz. Sublime Text-Preferences-Settings açılıdığında yanyana iki pencere gelecektir. Soldaki orjinal ayarlar, sağdaki user yani bizim belirleyeceğimiz ayarlar. Sol kısımdan ayarları kopyalayabiliriz veya internetten sık kullanılan ayarlar paylaşılmıştır bunları user bölümüne açıklamalarıyla ekleyebilirsiniz. Ben kendi ayarlarımı (etkin satırı, tabı renklendirme, satırı bölmeme...vb) şu şekilde belirledim:
{
//aktif satırı reklendir
"highlight_line": true,

//değişiklik yapılmış tabları renklendir
"highlight_modified_tabs": true,

//yatayda sığmayan satırı alta alma
"word_wrap": false,
}

5.  Eklentilerimizi yüklüyoruz. SublimeText 3 son versiyonunda Package Control yüklü geliyor. Eğer yok ise internette nasıl yükleneceğini anlatan videolar var (bir kodu var onu Sublime consol'a yapıştırıp onaylıyorsunuz). Package Control'ü açmak için Tools-Command Palette yada Shift+Command+P kısayolu ile Komut Paletini açıyoruz. install diye arattığınızda Package Control: Install Package seçeneğini seçiyoruz. Böylece Package Control penceresi açılıyor. Buradan Sublime için hazırlanan tüm paketleri bulup kurabilirsiniz. Bir eklentiyi kurmak için listeden seçtiğinizde kurulum başlar, durum çubuğunda insalling yazar ve sonunda genelde bir sekme açılır ve kurulum bitmiş olur. Bazen sublime'yi tekrar başlatmanız gerekebilir.
Kuracağım paketler şunlardır:
Neon Color Scheme packagecontrol:
Color Scheme paketleri kodlarınızın görünüm renklerini değiştirir. Bu tema php için benim seçtiğimdir.
Emmet / packagecontrol:
html:5, img, php, ...vb yazıp tab tuşuna basınca kodu tamamlar. Ayrıca php komutlarını (if, for, switch,...vb) tamamlar.
BracketHighlighter  / packagecontrol:
Parantezleri ve söz dizimi etiketlerini renklendiren bir eklenti. İç içe parantezlerde işinizi kolaylaştırır.
AutoFileName  / packagecontrol:
a href veya img src gibi etiketlerde dosya linkini yazacağımız zaman kutu içinde mevcut dosyalarınızı listeler.
ColorPicker / packagecontrol:
Cmd+Shift+C ile renk seçici açar ve renk kodunu direk yazar.
Color Highlighter / packagecontrol:
Renk kodlarını o renk ile gösterir.
SublimeLinter  / packagecontrol:
Bir kod linting paketidir. Kodlarımızın daha temiz ve hatasız olması için yazılım esnasında bize oldukça yardımcı olur. Hata yaptığımız anlarda satır başlarında kırmızı veya sarı renkli noktalarla bize anlık uyarı verir. Kurmak için öncelikle SublimeLinter paketini kurun. Sonra aynı şekilde SublimeLinter - Php paketini kurun. Diğer dilleri de isterseniz ekleyebilirsiniz.
HTML Nest Comments / packagecontrol:
HTML Nest Comments ile, seçili blok içindeki comment karakterleri regexp ile değiştirilip, karışıklığın önüne geçiyorsunuz.
Alignment  / packagecontrol:
: ve = gibi işaretlere göre kodları hizalar. Özellikle mysql'den veri çekerken çok yararlı olacaktır. 
Mac'de Standart kısayolu sublimeLinter ile çakışmaktadır. Bunun için Sublime Text-Preferences-Package Settings-Alignment-Key Bindings User açın ve şunu ekleyin:
[
{ "keys": ["super+ctrl+a"], "command": "alignment" }
]
FtpSync  / packagecontrol:
Ftp hesabınızı htdocs klasörünüze ekler. Ayarlardan "upload_on_save": true ise dosyanız kaydedildiği anda upload edilir. Yada diğer komutları command palette ile çalıştırabilirsiniz yada kısayol atayabilirsiniz. Sidebar Enhancements eklentisi ile sidebar'da sağ tuşa tıklayarak da işlem yapabiirsiniz. Komutlar için tıklayınız.
SidebarEnhancements  / packagecontrol:
Kısaca olmazsa olmaz. Sidebarınızı işlevsel hale getiriyor. Çoğu işlemi sağ tuş menüsü ile yapmanıza olanak veriyor.
StyleToken  / packagecontrol:
Örneğin bir div etiketini seçip sağ tuş ile ilgili menüsünden Style1,2,3 gibi seçerek dosyadaki tüm div etiketlerinin bu renkte görünmesini sağlayabilirsiniz.
SublimeCodeIntel  / packagecontrol:
SublimeCodeIntel, yazılım dillerinin SDK yollarını belirttiğiniz takdirde, bütün alt sınıflarını ve argümanlarını size otomatik tamamlama içinde sunabiliyor. Eklentinin JavaScript, SCSS, Python, HTML, Ruby, Python3, XML, Sass, HTML5, Perl, CSS, Twig, Less, Node.js, TemplateToolkit ve PHP dilleri indexleyebilmesi aktif seçenek olarak geliyor. Olmazsa olmazlardan.
SwapStrings  / packagecontrol:
Bir ifadeyi diğer bir ifade ile karşılıklı değiştirir. "<>' yazdığınızda tüm " ları ' tırnak ve tüm ' ları " yapar. elma<>armut yazınca da aynı şekilde elma ve armutları yer değiştirir. Yalnız işlem yapılacak alanı seçmeniz gereklidir. Kısayolu ^ + Alt + Cmd + S dir.
Terminal  / packagecontrol:
Kurduktan sonra Cmd + ^ + T kısayolu ile terminal penceresini açabilirsiniz. Terminal ile birçok işlemi başka bir programa gerek kalmadan yapabilirsiniz.
DocBlockr  / packagecontrol:
Bu eklenti sayesinde daha kolay açıklama satırları oluşturabilirsiniz. /** yazıp tab tuşuna basmanız yeterli, bu işlemi fonksiyonların öncesinde yaparsanız parametreleri de otomatik olarak açıklama satırına eklemektedir. Son olarak // Tanımlar yazıp Ctrl+ Enter yapınız ve dekoratif bir tarz elde ediniz (bu işlemi mac'de yapamadım).

6. Geldik son olarak bu kadar uğraşarak kurduğumuz packages'leri yedekleme işlemine. Bu işlem Sublime'yi sıfırdan kurduğumuzda yeniden tek tek bu packages'leri kurmadan kolayca tek seferde geri yüklememizi sağlar. Öncelikle PackageSync / packagecontrol paketini kuruyoruz. Sonra menüden Tools - PackageSync - Backup/Restore - Backup packages to zip (recommended) seçiyoruz. zip yedeğinin kaydedileceği yeri soruyor yazıp Enter'a basıyoruz. İşte bu kadar. Geri yüklerken de Restore ile kolayca paketlerimizi yüklüyoruz.

Opencart - Hata Mesajları ve Çözümleri

Missing argument 2 for Template::render() called in /public_html/system/storage/modification/system/engine/loader.php on line 87

Hata Nedeni: 
Yeni tema yükleme. TR dilini yükledikten sonra bir tema eklediğinizde çıkıyor.

Çözümü:
Admin/Eklentiler/Modifikasyonlar/Refresh(Yenile) butonuna bir yada birkaç kez tıklayın.

Php _GET & _POST & Url & Int & Değişken & SQL Güvenliği

Php'de kodlama yaparken $_GET gibi değişkenlerden gelen zararlı karakterleri filtrelemek için bu yöntemleri öneririm:


A) $_GET & $_POST & Url & Int & DEĞİŞKEN GÜVENLİĞİ

1. İlk olarak gelen değişkendeki html karekterlerini zararsız hale getirelim (< yerine < gibi)
$user_name= htmlspecialchars($_GET['user_name']);
    Veya
$name= filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS);

       Ben htmlspecialchars kullanıyorum. Farkı yok. Fakat filter_input en az PHP 5.2.0 gerektirir.  Eğer html kodlarından tamamen kurtulmak isterseniz  $user_name=strip_tags($user_name)

2. Eğer aldığınız değer integer (sayısal) ise gerçekten sayısal mı diye kontrol edelim
$user_id =intval($_GET['user_id']);
Veya
$user_id = filter_input(INPUT_GET, 'user_id', FILTER_SANITIZE_NUMBER_INT);
     Ben intval kullanıyorum. Farkı yok. Fakat filter_input en az PHP 5.2.0 gerektirir.
   
     Eğer sayısal bir değer gelmezse NULL değeri döner. 'sddd3' gibi bir değer için 3 döner. Eğer gelen sayısal değeri - ve + işaretlerinden arındırmak istiyorsanız:  $user_id = abs($user_id); 

3. Eğer aldığınız değer url içeriyorsa güvenlik için şu şekilde kullanalım (Bu sefer POST yöntemi için örnek verelim)
$url = urlencode($_POST['url']);
Veya
$url = filter_input(INPUT_POST, 'url', FILTER_SANITIZE_ENCODED);
    Ben urlencode kullanıyorum. Farkı yok. Fakat filter_input en az PHP 5.2.0 gerektirir. Eğer encode edilmiş url'yi decode etmek isterseniz:  $url=urldecode($url);


B) SQL GÜVENLİĞİ

1. Eğer SQL sorgu cümlesi içerisine ' gibi özel karakterler girip sorun çıkarmasını istemiyorsanız sorgunuzu çalıştırmadan önce sql cümlenizi filtrelemeniz gereklidir.
// PDO
$safe = $db->escape_string($name); // OOP Style

// MySQLi
$safe = mysqli_real_escape_string($db, $name); // mysqli

// mysql_*
$safe = mysql_real_escape_string($name, $db);

// Genel Kullanım (Son Çare Olarak Kullanılabilir)
$safe = addslashes($name);

En Faydalı Notepad++ Eklentileri (Php, Html, Javascript, ...)


Kullandığım ve tavsiye ettiğim Notepad++ eklentileri (plugins):

HTML Tag: html etiketlerinin başını ve sonunu yakalar.
JSTool: Javascript kodlarındaki hataları yakalar.
Compare: İki dosya arasındaki farkları bulur.
NppFTP: Ftp mantığı ile hostinginizde bulunan dosyalara ulaşırsınız. Ayrıca bu dosyaları direk server üzerinden düzenleyebilirsiniz.
PHP Autocompletion: Php komutları hakkında size yardımcı olur. Örneğin unset yazıp ( açtığınızda bir kutu içinde size kodun bölümlerini gösterir.
Quick Color Picker + : Kod içindeki renkleri seçili hale getirdiğinizde yada renk eklemek istediğinizde size renk paletini açar ve renk kodunu yazmadan direk seçebilirsiniz.

Bu eklentileri yüklemek için Notepad++ > Eklentiler > Pulgin Manager > Show Plugin Manager yolunu takip edin. Bütün eklentiler listelenecektir. Listeden istediğinizi seçip kurabilirsiniz.

phpMyAdmin Alanların Altındaki Kesik Çizginin Anlamı Nedir?

Görüldüğü gibi phpMyAdmin kullanıyorsanız bazı alanların altında kesik çizgi olduğunu görebilirsiniz. Bunun anlamı bu alana bir açıklama (comments) girilmesidir. Bu sayede yeni bir satır veri girişi yaparken bu kesik çizginin üzerine fareyi getirdiğimizde açıklama görünür.