Dış Kaynaklı Değişkenler
HTTP Çerezleri
PHP, » RFC 6265'de
tanımlandığı gibi HTTP çerezlerini şeffaf olarak destekler. Çerezler
kullanıcıları izleyip tanımlamak amacıyla kullanıcının tarayıcısında
veri saklamak için kullanılan bir yöntemdir. Çerezleri
setcookie() işlevini kullanarak belirtebilirsiniz.
Çerezler HTTP başlığının bir parçasıdır, bu nedenle
setcookie() işlevi tarayıcıya herhangi bir çıktı
gönderilmeden önce çağrılmak zorundadır. Bu kısıtlama
header() işlevi için de geçerlidir. Çerez verisi
$_COOKIE veya $_REQUEST gibi
uygun çerez veri dizisinde bulunur. Ayrıntılar ve örnekler için
setcookie() kılavuz sayfasına bakınız.
Bilginize:
Sırasıyla PHP 7.2.34, 7.3.23 ve 7.4.11'den itibaren, gelen çerezlerin
isimleri güvenlik kaygıları nedeniyle artık
url-kodlu değildir.
Eğer tek bir çerez değişkenine birden fazla değer atamak isterseniz,
değişkeni bir dizi olarak atayabilirsiniz. Örneğin:
Her ne kadar betiğinizde Cerezim
tek bir dizi olsa da
bu iki ayrı çerez oluşturacaktır. Eğer birden fazla değere sahip tek bir
çerez atamak isterseniz, önce değer üzerinde
serialize() veya explode()
kullanmayı düşünün.
Yolu veya alan adı farklı olmadığı sürece aynı isimdeki bir çerez
önceki çerezin üzerine yazılır. Böylece, isterseniz örneğin bir
alışveriş sepeti uygulaması için bir sayaç tutabilir ve bunu karşıya
aktarabilirsiniz.
Örnek 4 - setcookie() örneği
<?php
if (isset($_COOKIE['sayac'])) {
$sayac = $_COOKIE['sayac'] + 1;
} else {
$sayac = 1;
}
setcookie('sayac', $sayac, time()+3600);
setcookie("Sepet[$sayac]", $mal, time()+3600);
?>
Gelen değişken isimleri içindeki noktalar
Genellikle, PHP bir betiğe aktarılan değişken isimlerini değiştirmez.
Fakat, nokta iminin PHP'de değişken isimlerinde geçerli bir karakter
olmadığına dikkat edilmelidir. Örnek:
Burada, yazım denetleyicinin gördüğü
$varname
isimli bir değişkeni takip eden bir dizge birleştirme işlemi ve çıplak
bir (tırnaklarla çevrilmemiş, herhangi bir anahtar veya anahtar sözcük
ile eşleşmeyen dizge) 'ext' metnidir. Açıkça görülüyor ki, bu istenen
sonucu vermemektedir.
Bu nedenle, PHP'nin gelen değişken isimlerindeki nokta imlerini alt
çizgi imi ile değiştirdiğini bilmekte yarar vardır.
Değişken türlerini belirlemek
Değişken türlerini PHP belirlediği ve (genellikle) gerektiği gibi
değiştirdiği için, verilen bir değişkenin herhangi bir anda hangi
türde olduğu sorgulanmadan bilinemez. PHP'de bir değişkenin hangi
türde olduğunu bulan birçok işlev vardır. Örnek:
gettype(), is_array(),
is_float(), is_int(),
is_object() ve is_string().
Ayrıca Türler bölümüne de
bakınız.
Bir metin protokolü olarak HTTP'de, çoğunlukla, tamamen olmasa da,
Süper küresel
diziler içinde gelen içerik dizge olarak kalır. PHP değerleri
belli bir türe dönüştürmeyi denemez. Aşağıdaki örnekte,
$_GET["var1"] değişkeni "null" ve
$_GET["var2"]ise "123" dizgesini içerecektir.
/index.php?var1=null&var2=123