Posts

HTTP Dersleri – Ders 1 – Temel kavramlara genel bakış

HTTP Dersleri – Ders 1 – Temel kavramlara genel bakış
HTTP Dersleri – Ders 2 – Mimari Yönleri
HTTP Dersleri – Ders 3 – İstemci Kimliği
HTTP Dersleri – Ders 4 – İstemci Doğrulama Mekanizmaları
HTTP Dersleri – Ders 5 – Güvenlik
HTTP Dersleri – Sözlük

Bu yazıda size HTTP temellerini sunacağım.

Ama neden HTTP?

Kendinize sorabileceğiniz HTTP hakkında neden okumalıyım?

Bir yazılım geliştiricisi iseniz, nasıl iletişim kurduğunu öğrenerek, daha iyi uygulamaları nasıl yazacağınızı anlayacaksınız. Sistem mimarı veya ağ yöneticisiyseniz, karmaşık ağ mimarileri tasarlama konusunda daha derin bilgi sahibi olursunuz.

Günümüzde çok önemli mimari tarz olan REST, tamamen HTTP özelliklerini kullanmaya dayanıyor; bu nedenle HTTP’yi anlamayı daha da önemli hale getiriyor. Harika RESTFULL uygulamalar yapmak istiyorsanız öncelikle HTTP’yi anlamalısınız.

Yani, World Wide Web ve ağ iletişiminin ardındaki temel kavramları anlama ve öğrenme şansını tepmek mi istiyorsun?

Umarım istemiyorsundur ?

Makalenin odak noktası, HTTP’nin en önemli bölümlerini mümkün olan en basit şekilde açıklamak üzerine olacak. Buradaki düşünce, HTTP ile ilgili tüm yararlı bilgileri tek bir yerde organize etmektir; böylece, ihtiyaç duyduğunuz bilgileri bulmak için kitaplara ve RFC’lere gitme zamanınızı kurtarabilirsiniz.

Bu makalede neler öğreneceksiniz?

  • HTTP tam olarak nedir
  • Kaynaklar
  • Web İstemcisi ve Web Sunucusu arasındaki bilgiler nasıl aktarılır
  • Mesajlar ve bazı mesaj örnekleri
  • MIME türleri
  • Talep Yöntemleri
  • Başlıkları
  • Durum kodları

Daha fazla ado olmadan, içeriye girelim.

HTTP tanımı

HTTP’nin kurucusu Tim Berners-Lee (aynı zamanda World Wide Web’in mucidi olduğu düşünülen adam). HTTP’nin geliştirilmesi için önemli olan diğer isimler arasında da REST mimari stilinin yaratıcısı Roy Fielding var.

Köprü Metni Aktarım Protokolü (Hyper-Text Transfer Protocol), uygulamaların birbirleriyle iletişim kurmak için kullandığı protokoldür. Özünde, HTTP, tüm internetteki medya dosyalarını istemciler ve sunucular arasında iletmekle görevlidir. HTML, görüntüler, metin dosyaları, filmler ve bunlar arasındaki her şeyi içerir ve bunu hızlı, güvenilir bir şekilde yapar.

HTTP, uygulama katmanındaki iletişim için kullanıldığından, uygulama protokolüdür, aktarım protokolü değildir. Burada belleğinizi tazelemek için netmork katmanlarına bakalım;

Kaynaklar

İnternetteki her şey bir kaynaktır ve HTTP kaynaklar ile çalışır. Bu dosyalar, akışlar, hizmetler ve her şeyi içerir. HTML sayfası bir kaynaktır, youtube videonuz bir kaynaktır, günlük sayfanızdaki bir web uygulamasındaki e-tablonuzu bir kaynaktır… olayı anladınız.

Fakat bir kaynaktan diğerini nasıl ayırt edersiniz?

Onlara bir URL vererek (Uniform resource locators).

URL, tarayıcınızın kaynağı bulabileceği benzersiz yere işaret eder.

Web İstemcisi ve Web Sunucusu arasındaki iletiler nasıl değişir

Her içerik parçası, her kaynak Web sunucusunda (HTTP sunucusu) bulunur. Bu sunucular, bu kaynakları sağlamak için bir HTTP isteği beklemektedir.

Ancak nasıl Web sunucusundan bir kaynak isteğinde bulunuyorsunuz?

Elbette bir HTTP istemcisine ihtiyacınız var ?

Bu makaleyi okumak için şu anda bir HTTP istemcisi kullanıyorsunuz. Web tarayıcıları HTTP istemcileridir. Kaynakları bilgisayarınıza almak için HTTP sunucularıyla iletişim kurarlar. En popüler istemcilerden bazıları Google Chrome, Mozilla Firefox, Opera, Apple’ın Safari ve ne yazık ki hala rezil Internet Explorer.

Mesajlar ve bazı mesaj örnekleri

Peki, HTTP mesajı nasıl görünüyor?

Çok fazla konuşmadan, HTTP mesajlarına bazı örnekler verelim:

GET İsteği

GET /repos/CodeMazeBlog/ConsumeRestfulApisExamples HTTP/1.1
Host: api.github.com
Content-Type: application/json
Authorization: Basic dGhhbmtzIEhhcmFsZCBSb21iYXV0LCBtdWNoIGFwcHJlY2lhdGVk
Cache-Control: no-cache

Post İsteği

POST /repos/CodeMazeBlog/ConsumeRestfulApisExamples/hooks?access_token=5643f4128a9cf974517346b2158d04c8aa7ad45f HTTP/1.1
Host: api.github.com
Content-Type: application/json
Cache-Control: no-cache
 
{
  "url": "http://www.example.com/example",
  "events": [
    "push"
  ],
  "name": "web",
  "active": true,
  "config": {
    "url": "http://www.example.com/example",
    "content_type": "json"
  }
}

İşte bir GET ve bir POST isteği örneği. Bu isteklerin farklı kısımlarını hızla gözden geçirelim.

Talebin ilk satırı, talep hattı için ayrılmıştır. İstek yöntemi adı, istek URI’si ve HTTP sürümünden oluşur.

Sonraki birkaç satır istek üstbilgilerini temsil etmektedir. İstek başlıkları, istekte bulunan içerik türleri, yanıtta beklenen içerik, yetkilendirme bilgileri vb. Gibi ek bilgi sağlar;

GET isteği için hikaye burada bitiyor. POST isteğinde ayrıca bir gövde olabilir ve gövde mesajı şeklinde ek bilgi taşıyabilirsiniz. Bu durumda, URI’de belirtilen verilen repo için GitHub web kancasının nasıl oluşturulması gerektiği konusunda ek bilgi içeren bir JSON mesajıdır. Bu mesaj, web kağıdının oluşturulması için gereklidir, bu nedenle bu bilgileri GitHub API’sine sunmak için POST isteği kullanıyoruz.

İstek hattı ve istek başlıkları, <CR> <LF> (satır başı ve satır besleme \r \n) tarafından takip edilmeli ve ileti üstbilgileri ile ileti gövdesi arasında yalnızca CRLF içeren tek bir boş satır bulunmalıdır.

HTTP isteği için referans: https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html

Ve bu isteklere cevap olarak ne alacağız?

Yanıt mesajı

HTTP/1.1 200 OK
Server: GitHub.com
Date: Sun, 18 Jun 2017 13:10:41 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Status: 200 OK
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4996
X-RateLimit-Reset: 1497792723
Cache-Control: private, max-age=60, s-maxage=60
 
[
  {
    "type": "Repository",
    "id": 14437404,
    "name": "web",
    "active": true,
    "events": [
      "push"
    ],
    "config": {
      "content_type": "json",
      "insecure_ssl": "0",
      "url": "http://www.example.com/example"
    },
    "updated_at": "2017-06-18T12:17:15Z",
    "created_at": "2017-06-18T12:03:15Z",
    "url": "https://api.github.com/repos/CodeMazeBlog/ConsumeRestfulApisExamples/hooks/14437404",
    "test_url": "https://api.github.com/repos/CodeMazeBlog/ConsumeRestfulApisExamples/hooks/14437404/test",
    "ping_url": "https://api.github.com/repos/CodeMazeBlog/ConsumeRestfulApisExamples/hooks/14437404/pings",
    "last_response": {
      "code": 422,
      "status": "misconfigured",
      "message": "Invalid HTTP Response: 404"
    }
  },
]

Yanıt mesajı, ilk satırın yanıt durumu hakkında taşıdığı bilgi hariç, istekle hemen hemen aynı şekilde yapılandırılmıştır. ?

Durum satırı, yanıt başlıkları ve yanıt gövdesi tarafından izlenir.

HTTP yanıtı için referans: https://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html

MIME türleri

MIME türleri internetteki dosya türlerini tanımlamak için standart bir yol olarak kullanılır. Tarayıcınız bir MIME türleri listesine sahiptir ve web sunucuları için de aynı şey geçerlidir. Bu şekilde, dosyalar işletim sisteminden bağımsız olarak aynı şekilde aktarılabilir.

Aslında multimedya e-postası için geliştirildikleri için MIME, Çok Amaçlı İnternet Posta Uzantısı anlamına gelir. O zamandan beri HTTP ve diğer pek çok protokol için kullanılmak üzere uyarlandılar.

Her MIME türü, bir tür, alt türü ve aşağıdaki biçimde isteğe bağlı parametrelerin bir listesinden oluşur: type / subtype; Isteğe bağlı parametreler.

İşte birkaç örnek:

Content-Type: application/json
Content-Type: text/xml; charset=utf-8
Accept: image/gif

Sık kullanılan MIME türlerinin ve alt türlerinin listesini HTTP referansında bulabilirsiniz.

İstek Yöntemleri

HTTP istek yöntemleri (“eylemler” de denir), kaynak üzerinde gerçekleştirilecek eylemi tanımlar. HTTP, en çok bilinen / kullanılan GET ve POST yöntemleri olan birkaç istek yöntemi tanımlar.

Bir istek yöntemi idempotent veya idempotent olmayabilir. Bu, yöntemin aynı kaynaklarda birkaç kez çağrılmasının güvenli / güvensiz olduğunu açıklayan basit bir terimdir. Başka bir deyişle, bu, yalnızca bilgi alma özelliğine sahip olan GET yönteminin varsayılan olarak idempotent olması gerektiği anlamına gelir. Aynı kaynaktaki GET’in tekrar tekrar çağırılması farklı bir yanıtla sonuçlanmamalıdır. Öte yandan POST yöntemi idempotent bir yöntem değildir.

HTTP / 1.1 öncesinde yalnızca üç yöntem vardı: GET, POST ve HEAD ve HTTP / 1.1’in belirtimi oyuna birkaçını daha getirdi: OPTIONS, PUT, DELETE, TRACE ve CONNECT.

Bu yöntemlerin her birinin ne yaptığını HTTP Referansında daha fazla bulabilirsiniz.

Başlıklar

Başlık alanları, istek veya yanıt mesajının ilk satırından hemen sonra bulabileceği iki nokta üstüste ayrılmış ad-değer alanlarıdır. Bunlar, HTTP mesajlarına daha fazla bağlam sağlarlar ve istemcilerin ve sunucuların, talebin veya yanıtın niteliği hakkında uygun şekilde bilgilendirilmesini sağlarlar.

Toplamda beş tür üstbilgi var:

  • Genel başlıklar: Bu üstbilgiler hem sunucu hem de istemci için yararlıdır. İyi bir örnek, mesajın oluşturulma zamanı ile ilgili bilgileri sağlayan tarih başlık alanını içerir.
  • İstek başlıkları: İstek mesajlarına özgü. Sunucuya ek bilgi sağlamaktadırlar. Örneğin, Kabul Et: * / * başlık alanı sunucuyu, istemcinin herhangi bir ortam türünü almaya istekli olduğunu bildirir.
  • Yanıt başlıkları: Yanıt mesajlarına özgü. İstemciye ilave bilgi sağlarlar. Örneğin, İzin ver: GET, HEAD, PUT üstbilgi alanı, istemciye hangi yöntemlerin istenen kaynak için izin verildiğini bildirir.
  • Varlık üstbilgileri: Bu üstbilgiler varlığın gövdesiyle ilgilidir. Örneğin, Content-Type: text / html header, uygulamanın verilerin HTML belgesi olduğunu bilmesini sağlar.
  • Genişletme üstbilgileri: Bunlar, uygulama geliştiricileri tarafından oluşturulan standart olmayan üstbilgilerdir. HTTP’nin bir parçası değil, ancak tolere edilmeleri gerekir.

Sıkça kullanılan istek ve yanıt başlıklarının listesini HTTP Referansında bulabilirsiniz.

Durum Kodları

Durum kodu, bir isteğin sonucunu gösteren üç basamaklı bir sayıdır. Bunu, insan tarafından okunabilir olan neden açıklaması takip eder.

Bazı örnekler şunları içerir:

  • 200 Başarılı.
  • 404 Bulunamadı
  • 500 Sunucu Hatası

Durum kodları, beş farklı gruptaki aralıklarla sınıflandırılır.

Hem durum kodu sınıflandırması hem de durum kodlarının tümü ve anlamları HTTP Referansında bulunabilir.

Sonuç

Phew, çok fazla bilgi oldu.

HTTP öğrenerek kazandığınız bilgi, doğrudan bazı problemi çözmenize yardımcı olan tür değildir. Ancak size, HTTP’den daha üst düzeydeki neredeyse her problem için uygulayabileceğiniz internet iletişiminin temel ilkesini anlayacaksınız. İster REST API’ler, web uygulaması geliştirme veya ağ olsun, şimdi bu tür sorunları çözerken en azından biraz daha emin olabilirsiniz.

Tabii ki, HTTP konuşmak için oldukça büyük bir konudur ve hala temel konulardan çok daha fazlası var.

HTTP serisinin 2. bölümünde HTTP’nin mimari yönlerini okuyabilirsiniz.

Bu makale size yardımcı oldu mu? Lütfen yorum bırakın ve bana bildirin.

Bir sonraki ders: HTTP Dersleri – Ders 2 – Mimari Yönleri

Referanslar:

Orjinal Yazı: https://www.code-maze.com/http-series-part-1/

Php Ders 5 – Koşullar

Programlamada koşullar, belirttiğimiz durumların gerçek (true) olması veya olmaması (false) halinde çalışacak kodları belirlemek için kullanılır.

If/Else/ElseIf

If, parantezin içerisindeki koşul true ise belirtilen işlemi ve eğer gene belirtilirse false olması durumda belirtilen işlemi yapan kurgudur. Kullanımı aşağıdaki gibidir;

if( Koşul ) {
işlem
} elseif ( Başka Bir Koşul) {
işlem
} else {
işlem
}

<?php
define("TAM_ISMI_KULLAN", FALSE);

$isim = "Erhan";
$soyad = "Kılıç";

if(TAM_ISMI_KULLAN == TRUE){ // (Burada oluşturduğumuz sabitin true'ya eşit olması koşulu belirtmişiz. Eğer bir eşitlik koşulu koymasak bile koşul parantezinin içine koyduğumuz değişken, sabit veya başka bir şeyin true'ya eşit olup olmamasına bakar Php. 
    $tamisim= $isim. " " . $soyad; // Burada ise eğer tam ismi kullan sabitimiz true ise isim ve soyad değişkenlerini birleştirmektedir.
} else{ // Else kullanımı zorunlu değildir.
    $tamisim = $isim; // Eğer true değilse ki değil, sadece isim değişkeni ile tamisim değişkenini oluşturuyoruz.
}

echo "Herkese Merhaba!!";
 echo $isim;
?>

Bazen ise koşulumuzda olumsuz olduğu durumları belirtmek isteyebiliriz. Yukarıdaki örneği geliştirirsek eğer TAM_ISIM_KULLANMA sabiti oluşturup bu sabitin false olduğu durumlarda çalışacak bir kod yazmak isteyebiliriz. O zaman aşağıdaki gibi bir işlem yaparız;

<?php
define("TAM_ISMI_KULLANMA", FALSE);

$isim = "Erhan";
$soyad = "Kılıç";

if(!TAM_ISMI_KULLANMA){ // (Burada ise başına ! işareti koyarak false olduğu durumu koşul olarak belirtiyoruz. Temelde şu şekilde de yapabilirdik: if(TAM_ISMI_KULLANMA == FALSE). Aslında false eşitliği arasak bile koşul false olduğu için Php bunu true olarak algılayıp gerekli işlemi gerçekleştirmektedir. False olması koşulu koyduk ve false olduğunda koşulumuz true oluyor.
    $tamisim = $isim;
} else{
    $tamisim= $isim. " " . $soyad;
}

echo "Herkese Merhaba!!";
echo $isim;
?>

Switch/Case

Switch/Case ise if‘den farklı olarak belirttiğimiz koşullar listesinden birisi çalışırsa geçerli kodları çalıştıracaktır. Mesela bir değişkenimizin olabileceği koşul durumları 2-3’ten fazla ise, if ile yazmaya kalkışırsak bir çok elseif yazmak zorunda kalırız. Switch/Case ile bir çok koşulu daha rahat oluşturabiliriz.

Kullanım yapısı;

switch (n) { // n burada koşul durumlarının sorgulanacağı şeydir. Herhangi bir şey olabilir.
case label1:
      kodlar
break; // break kullanmamızın sebebi eğer koşul doğru olup kodlar çalışsa bile Php diğer koşulların doğru olup olmadığını test etmeye devam etmesinden dolayı çıkış yapmasını sağlamaktır.
case label2:
      kodlar
break;
case label3:
      kodlar
break;

default: // default ise hiç bir koşul gerçekleşmediğinde çalışacak kodları belirlemek için kullanılır. Zorunlu değildir.
      kodlar
}

Örnek;

<?php

$islem = "toplama";
 $a = 1;
 $b = 10;

switch ($islem) {
    case 'toplama':
        echo $a + $b;
        break;
    case 'bölme':
        echo $a / $b;
        break;
    case 'çarpma':
        echo $a * $b;
        break;
    case 'çıkarma':
        echo $a - $b;
        break;
}

?>

 

Php Ders 4 – Operatörler

Binary

Bu operatör işlemleri büyüktür, küçüktür işlemlerini kapsamaktadır. “<“, “<=”, “>”, “>=” operatörleri ile kullanılmaktadır.

<?php
var_dump(1 < 10); // TRUE değeri verir.
var_dump(5 > 5); // FALSE değeri verir.

Ternary

Bu operatör eşitlik kontrol etme işlemlerini kapsamaktadır.

“==” operatörü değerlerin eşit olup olmadığını kontrol eder. Mesela string 1 değeri ile integer 1 değeri için TRUE değeri döndürür.

“===” operatörü değerlerin yanında veri tiplerinin de eşit olup olmadığını kontrol eder. String 1 değeri ile integer 1 değeri için FALSE değeri döndücektir.

<?php
var_dump("1" == 1); // TRUE değeri verir.
var_dump("10" === 10); // FALSE değeri verir. Çünkü veri tipleri eşit değil.

Concatenation

Verileri birleştirme operatörüdür. “.” operatörü kullanılır.

<?php
$isim = "Erhan";
$soyad = "Kılıç";
var_dumo($isim . " " . $soyad); // "Erhan Kılıç" değeri döndürecektir.

Arithmetic

Aritmetik işlemler için kullanılan operatörlerdir.
“+” operatörü integer verileri matematiksel olarak toplar, string verileri birleştirir.
“-“ operatörü integer verileri matematiksel olarak birbirinden çıkarır.
“/” operatörü integer verileri matematiksel olarak birbirine böler.
“*” operatörü integer verileri matematiksel olarak birbiriyle çarpar.
“%” operatörü integer verilerin birbirine bölümünden kalanı verir. Mesela 10%2 işleminden 0 değerini, 10%3 işleminden 1 değerini verir.
“++” operatörü integer veririnin 1 sayı artmasını sağlar.

<?php
var_dump(10+5); // 15 değeri döndürecektir.
var_dump("10"+"5"); // 105 değeri döndürecektir.
var_dump(10-5); // 5 değeri döndürecektir.
var_dump(10/2); // 5 değeri döndürecektir.
var_dump(10*2); // 20 değeri döndürecektir.
var_dump(10%4); // 2 değeri döndürecektir.
var_dump(10++); // 11 değğeri döndürecektir.

Casting

Veri tiplerini belirlemekte kullanılan operatörlerdir. “int”, “string”, “bool” operatörleri kullanılır.

<?php
$int = (int)"10"; // String 10 olan veriyi integer 10 yapar.
$string = (string)255; // İnteger 255 olan veriyi string 255 yapar.
$boolean = (bool)"bool"; // String veriyi TRUE'ya yani 1'e çevirir.

Assignments

Atama operatörleridir. Bir değişkenin içeriğini belirlerken ya da değiştirirken kulanılır. “=”, “+=”, “.=” operatörleri kullanılır.

<?php
$degisken = "deger";
$degisken += " birleştirme";
$degisken .= ", ikinci birleştirme";

Mantıksal Operatörler

Türkçe olarak ve, veya anlamındaki operatörlerdir. “&&”, “AND”, “||”, “OR” operatörleri kullanılır.

<?php
$a = TRUE;
$b = TRUE;
$c = FALSE;

var_dump ($a and $b); // true sonucu döner.
var_dump ($a && $c); // false sonucu döner.
var_dump($a or $b || $c); // true sonucu döner.

Sonraki Ders: Php Ders 5 – Koşullar

Php Ders 3 – Veri Tipleri

Php’de, diğer dillerde de olduğu gibi, verinin farklı türleri vardır. Bu veri türlerinin değişik kullanım alanları vardır.

  • Integer: “Tüm Numaralar”
  • Float: “4.2 gibi sayılar”
  • String: “Metinler”
  • Array: “Diziler birden fazla data tiplerini bulundurabilir.”
  • Boolean: “İkili değer sistemidir. True, False gibi.”
  • Constant: “Değiştirilemez sabitlerdir.”
  • Objeler: “OOP sisteminin objeleridir.”

Integer

Sayılardır. Bu verilerle matematiksel işlemler yapılabilir.

<?php
$degisken1 = 5;
$degisken2 = 10;
echo $toplam = $degisken1 + $degisken2;
?>

String

Metinlerdir. Yazı olarak her şey kullanılabilir. İçerisindeki sayılarla matematiksel işlemler yapılamaz. Bu veride toplama işlemi yaparsak yan yana koyma işlemi yapacaktır. Mesela 1+1 yaparsak sonucu 11 olacaktır. String veri içerisinde html kodları yazabiliriz. Bunu html kodlarını yazdırmak için de kullanabiliriz.

<?php
$string = "<p>Merhaba Dünya</p>";
echo $string;
?>

Float

Bu veri tipi ise ondalıklı sayılardır.

<?php
$float = 1.5;
?>

Boolean (Bool)

Sadece yanlış (false) ya da doğru (true) değerleri alabilen veri tipidir. 1 doğru, 0 yanlış, boş yanlış ve verinin içeriği boşluk karakteri bile olsa dolu ise doğru tanımı almaktadır Php’de. Mesela isset() fonksiyonu içine konulan şeyin var olup olmadığını kontrol ederken empty() fonksiyonu ise içinde veri var mı yok mu diye kontrol eder.

<?php
$booltrue = TRUE;
$booltrue2 = 1;
$booltrue3 = "Merhaba Dünya";
$boolfalse = False;
$boolfalse2 = 0;
$boolfalse3 = "";

Constants

Bu veriler değiştirilemez sabitlerdir. Bir defa tanımını yaparsınız ve bir daha o tanımdan başkasına değiştirilemez. İsimleri büyük harf olmak zorundadır.

<?php
define("ISIM", "Erhan");
echo ISIM;
?>

Array

Diziler içerisinde birden fazla veri taşıyabilen bir veri türüdür. İçerisinde istediğimiz sayıda veri koyabiliriz. Değişik tanımlamaları vardır.

<?php
$array = array("Erhan", "Kılıç", 1987, false);

Bir diğer eleman tanımlama yöntemi ise aşağıdaki gibidir. Bu yöntemde en son sıraya veri eklemektedir.

$array[] = "Nasılsınız";

Dizinin içindeki verilere ise anahtarları ile ulaşabiliriz. Dizilerde verilerin yerini temsil eden anahtarlar 0’dan başlar. Mesela ilk dizimizdeki ilk veriye ulaşmak için aşağıdaki gibi hareket ederiz;

<?php
echo $array[0];

Associative Array

Bu dizide ise anahtarları kendimiz belirliyoruz.

<?php
$array = array(
"isim" => "Erhan",
"soyad" => "Kılıç",
"yas" => 28
);
 
echo "İsim: " . $array["isim"] . "<br/>Soyad: " . $array["soyad"];

Sonraki Ders: Php Ders 4 – Operatörler

Php Ders 2 – Değişkenler

Değişkenin en basit tanımı, istediğimiz verileri saklı tutması için kullanılan yapılardır. Boş bardağa benzetebilirsiniz. Bardağa ne istersek onu koyabiliriz.

Php‘de değişenlerin isimleri $ işareti ile başlar. İsimde türkçe karakter, boşluk, tire (-), özel karakterler kullanamayız. Örnek bir değişken tanımlama yapalım;

<?php
$isim = "Erhan";
$yer = "Türkiye";
$tam_isim ="Erhan Kılıç";
$isim = $tam_isim;
$yil = 2015;
?>
<!DOCTYPE html>
<html>
<head>
<title>Erhan Kılıç</title>
</head
<body>
<h1><?php echo $isim ?></h1>
<h3>Location: <?php echo $yer ?></h3>
</body>
</html>

Php‘de kodlarımızın sonuna (;) işareti koyarız. Bu o satırda kodun sonlandığını gösterir. Tabi aynı satırda farklı kodlar yazabiliriz. Örneğimizde görüldüğü üzere değişkenlere istediğimiz şekilde tanımlama yapabiliyoruz. Birbirlerine eşitleme yapabiliyoruz. Sayı tanımlaması yaparken tırnak işaretine ihtiyaç duymuyoruz. Bir sonraki dersimizde veri tiplerini anlatacağım. O vakit daha detayına inmiş olacağız.

Kod yazdıkça ve çalışmamız büyüdükçe, hangi kodu ne amaçlı yazdığımızı hatırlamak ve başkasının da okumasını kolaylaştırmak için yorum yazabiliriz. Yorumlar Php yorumlayıcı tarafından es geçilen yazılardır. İçerisinde Php kodu bile olsa es geçecektir. Örnek olarak yorum olan kodlar yazalım;

<?php
// Bu benim ismim.
$isim = "Erhan";
 
// $yer = "Türkiye";
/* Yer: Türkiye
bla bla bla
*/
$tam_isim ="Erhan Kılıç";
$isim = $tam_isim;
?>

Tek bir satırı yorum yapmak için başına (//) koymamız yeterlidir. Birden fazla satırı yorum yapmak için ya her satırın başına (//) koymalıyız ya da daha kolay olan bir yöntemi uygularız. Başına (/*) işareti, sonuna ise (*/) işareti koyarız.

Php‘de çalışma şekli yukarıdan aşağıya doğrudur. Yani yukarıda bir değişkene değer verdikten sonra aşağıda başka bir değer verdiğimizde, değişkenin son içeriği aşağıda verdiğimiz değerdir. Ama o değeri verdiğimiz satıra kadar olan kısımda ilk değer geçerlidir.

Php‘de satırlardaki boşluklar da görmezden gelinmektedir. Yani iki satır arasındaki boşluklar Php için bir anlam ifade etmemektedir. Fakat aşağıdaki gibi değişken tanımlamalarında boşluklar için aynı durum geçerli değildir.

<?php
$degisken = " Merhaba ";
?>

Sonraki Ders: Php Ders 3 – Veri Tipleri

PHP Ders 1 – PHP Nedir?

Php sunucu taraflı çalışan bir programlama dilidir. 1995 yılında yayınlanmıştır ve o zamanki açılımı (Kişisel Web Sayfası) Personal Home Page’dir. Şimdi ise açılımı Hypertext Preprocessor.

Sunucu taraflı çalışan demek, Html içine entegre edilmiş kodların istemcinin (tarayıcı vs) isteklerini sunucu tarafından işledikten sonra istemciye html olarak sunmaktır. İşlem tam olarak aşağıdaki gibidir;

Server-Vs-Client

Bilgisayarımız ile sunucuya bir istek (HTTP Request) göndeririz. Sunucu bu isteğe cevap vermeden önce isteğin olduğu sayfadaki Php kodlarını çalıştırır ve sonucunu bir Html sayfa olarak bize gönderir. Biz de tarayıcımızda görüntüleriz.

İlk örneğimizi yapalım;

<body>
<p>
Hello <?php echo "World"; ?>
</p>
</body>

<?php tagı Php kodlarının başladığını belirtir. ?> ise Php kodların bittiğini belirtir. Echo kodumuz ise ekrana tırnak işaretleri arasındakini yazdırmaya yarar. Echo “World”; yazdığımızda sayfa önizlemesinde Hello World gözükür. Php kodları gözükmez. Sayfa kaynağında da gözükmez. Çünkü sunucu Php kodunu işler ve Html kodu olarak istemciye geri dönüş yapar.

Php kodlarını gene php uzantılı dosyalarda çalıştırabiliriz. Aynı zamanda, sunucunun, Php dilini yorumlayabilmesi için, Php‘nin yüklü olması gerekmektedir.

Php çalışma ortamı oluşturmak için bilgisayarınıza php yüklemeniz gerekmektedir. Php yüklediğinizde, yazdığınız kodları terminalden çalıştırabilecek durumda olursunuz. Mesela “php program_dosyasi.php” gibi bir komutla çalıştırabilirsiniz. Fakat php, web ortamında çalışmak için uygun olduğundan, web sayfalarını görüntülemek için web sunucusu kurmanız gerekmektedir. Windows ortamı için XAMPP kurmanızı tavsiye ederim. İnternette kurulumu ile ilgili bir sürü kaynak bulabilirsiniz. Eğer ubuntu gibi linux dağıtımı kullanıyorsanız, ubuntu’ya lamp kurulumu yazımı okuyabilirsiniz.

Sonraki Ders: Php Ders 2 – Değişkenler