Kişisel web tasarım ve kodlama blogu. Web tasarımı ve kodlama araçları ile ilgili bilgiler ve yardımcı dökümanlar.

Kod yazmak sanattır...

gokhankr.com

Blogger tarafından desteklenmektedir.

PHP etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
PHP etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Getting $_REQUEST (like POST and GET) as JSON with PHP


 

JSON is the most practical and fastest way to get data. PHP provides encode and decode feature for JSON object. However, you cannot directly fetch data as application-json.

That's why you can't fetch data with the JSON standard over $_GET and $_POST. We will use the input that PHP provides for I/O to get the data.


file_get_contents('php://input')

Now let's expand this a little more and assume that the incoming data is JSON.


json_decode(file_get_contents('php://input'), true);

The above process will take the data when we receive JSON data and convert it to PHP Array, and if the incoming data does not come as JSON, it will return null. So we can now try this process on a Router.


function getJSON()
{
    $jsonData = json_decode(file_get_contents('php://input'), true);
    return $jsonData ?? [];
}

Now you can get the data as JSON via getJSON() just as we get the data via $_POST and $_GET.

If you want, we can also define and use the data globally as we receive it via $_POST or $_GET. For this:


// index.php
$jsonData = json_decode(file_get_contents('php://input'), true);
$GLOBALS['_JSON'] = $jsonData;

//user.php
if (isset($_JSON['userLogin'])) {
    /* ... */
}

In this way, you can define $_GLOBALS on your requested page and use it like $_POST on any page you want. That's all I'm going to tell you in detail about "Getting JSON requests with PHP". Thanks.

PHP ile JSON olarak $_REQUEST(POST ve GET gibi) alma işlemi


JSON veri almanın en pratik ve hızlı yoludur. PHP, JSON nesnesi için encode ve decode özelliği sunar. Ancak veriyi application-json olarak doğrudan alma işlemi yapamazsınız. 

Bu yüzden $_GET ve $_POST üzerinden JSON standardı ile bir veri alımı yapamazsınız. Veriyi almak için PHP'nin I/O için sağlamış olduğu girişi kullanacağız.


file_get_contents('php://input')

Şimdi bunu biraz daha genişletelim ve gelen verinin JSON olduğunu varsayalım.


json_decode(file_get_contents('php://input'), true);

Yukarıdaki işlem bize JSON verisi geldiğinde veriyi alıp PHP Array'a çevirecek ve eğer gelen veri JSON olarak gelmezse de null olarak dönecek. Böylece bu işlemi artık bir Router üzerinde deneyebiliriz.


function getJSON()
{
    $jsonData = json_decode(file_get_contents('php://input'), true);
    return $jsonData ?? [];
}

Şimdi $_POST ve $_GET üzerinden veriyi aldığımız gibi getJSON() üzerinden de alma işlemini JSON olarak gerçekleştirebilirsiniz.

Eğer isterseniz veriyi $_POST veya $_GET üzerinden aldığımız gibi global olarak tanımlayıp kullanabiliriz de. Bunun için:


// index.php
$jsonData = json_decode(file_get_contents('php://input'), true);
$GLOBALS['_JSON'] = $jsonData;

//user.php
if (isset($_JSON['kullaniciGirisi'])) {
    /* ... */
}

Bu şekilde istek atılan sayfanızda $_GLOBALS tanımlayarak istediğiniz herhangi bir sayfada $_POST gibi de kullanabilirsiniz. "PHP ile JSON istek alma işlemi" ile ilgili detaylı anlatacaklarım bu kadardı. Teşekkürler.

PHP ile Site Adresini ve Dosya Dizinini Yazdırmak


 


PHP ile çalıştığınız URL'i ve dosya dizin yolunu almak için $_SERVER global değişkeninden yararlanmanız gerekir.

Bir çok değeri bünyesinde barındıran bu değişkende site adresi "HTTP_HOST" üzerinde barınır.

echo $_SERVER['HTTPS'] ?? 'http' . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

Yukardaki kodun çıktısı aşağıdaki şekilde görünecektir.

http://siteadresi.com/calisma-dizini/
$_SERVER["HTTPS"] değeri eğeri eğer var ise tanımlı olacaktır, yok ise hata vereceği için nullsafe operatörü ile kontrol ettirip olmadığında yerine "http" yazdırıyoruz.

PHP ile zaman aşımını görüntüleme



Bugün web sayfalarında Facebook gönderilerinde olduğu gibi paylaşılan içeriğin zaman aşımını görüntüleyen bir kodu sizlerle paylaşmak istedim.

1. Fonksiyon kodu


// Zaman aşımı fonksiyonu
function time_since($since) {
$chunks = array(
array(60 * 60 * 24 * 365 , 'yıl'),
array(60 * 60 * 24 * 30 , 'ay'),
array(60 * 60 * 24 * 7, 'hafta'),
array(60 * 60 * 24 , 'gün'),
array(60 * 60 , 'saat'),
array(60 , 'dakika'),
array(1 , 'saniye')
);

for ($i = 0, $j = count($chunks); $i < $j; $i++) {
$seconds = $chunks[$i][0];
$name = $chunks[$i][1];
if (($count = floor($since / $seconds)) != 0) {
break;
}
}

$print = ($count == 1) ? '1 '.$name : "$count {$name}";
return $print;
}


2. Kullanımı

Oldukça basit bir şekilde şimdiki zamandan gönderi/paylaşım zamanını çıkarıp time_since() içerisine yuvarlıyoruz.


//Kullanımı
echo time_since(strtotime("now")-$veri['soru_zaman']);