<?php

session_start(); // Session'ı başlat

// GET isteği üzerinden kur parametresini al
if (!empty($_GET["kur"])) {
    $_SESSION["kur"] = $_GET["kur"];
}

// Varsayılan kur belirleme
if (!isset($_SESSION["kur"]) || empty($_SESSION["kur"])) {
    $_SESSION["kur"] = "TRY";
}

function Altinkaynak($deger) {
    try {
        // SOAP istemcisini oluştur
        $client = new SoapClient('http://data.altinkaynak.com/DataService.asmx?WSDL', array('connection_timeout' => 5));
        $auth = new stdClass();
        $auth->Username = 'AltinkaynakWebServis';
        $auth->Password = 'AltinkaynakWebServis';
        $header = new SoapHeader('http://data.altinkaynak.com/', 'AuthHeader', $auth, false);
        $client->__setSoapHeaders($header);
        
        // Altın kurlarını al
        $response = $client->GetCurrency();
        $xml = simplexml_load_string($response->GetCurrencyResult);
        
        // Euro değerini döndür
        return $xml->Kur[$deger]->Satis;
    } catch (Exception $e) {
        // SOAP hatası oluştuğunda
        // Hata iletisi: echo "Soap Hatasi Olustu: " . $e->getMessage();
        return null; // Hata durumunu işlemek için null döndür
    }
}

function CanliDoviz($deger) {
    try {
        // CanliDoviz API'sinden JSON verisini al
        $jsonVeri = file_get_contents("https://canlidoviz.com/doviz-kurlari.jsonld", true);
        $veri = json_decode($jsonVeri, true);
        
        // Döviz verisini döndür
        return $veri["mainEntity"]["itemListElement"][$deger]["currentExchangeRate"]["price"];
    } catch (Exception $e) {
        // Hata durumunda
        return null; // Hata durumunu işlemek için null döndür
    }
}

function TCMBDoviz($deger, $alis = null) {
    try {
        // TCMB'den XML verisini al
        $veri = simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml');
        
        // Kur bilgilerini al
        $forexSatis = $veri->Currency[$deger]->ForexSelling;
        $bankaSatis = $veri->Currency[$deger]->BanknoteSelling;
        
        // Değerleri döndür
        if ($alis === "satis") {
            return $forexSatis;
        } elseif ($alis === "alis") {
            return $bankaSatis;
        }
    } catch (Exception $e) {
        // Hata durumunda
        return null; // Hata durumunu işlemek için null döndür
    }
}

function TruncGil($key, $alis) {
    try {
        // Truncgil API'sinden JSON verisini al
        $jsonVeri = file_get_contents("https://finans.truncgil.com/today.json", true);
        $veri = json_decode($jsonVeri, true);
        
        // Döviz değerini döndür
        $birim = ['USD' => 'ABD DOLARI', 'EUR' => 'EURO'];
        return $veri[$birim[$key]][$alis];
    } catch (Exception $e) {
        // Hata durumunda
        return null; // Hata durumunu işlemek için null döndür
    }
}

// Veriyi güncellemek için cooldown süresini kontrol et
if (time() > $_SESSION['doviz_cooldown']) {
    unset($_SESSION['dolar']);
    unset($_SESSION['euro']);
    unset($_SESSION['doviz_cooldown']);
    
    // Döviz değerlerini al
    if ($dolar = CanliDoviz(0)) {
        $_SESSION['dolar'] = round($dolar, 2);
    } elseif ($dolar = Altinkaynak(0)) {
        $_SESSION['dolar'] = round($dolar, 2);
    } elseif ($dolar = TCMBDoviz(0)) {
        $_SESSION['dolar'] = round($dolar, 2);
    } elseif ($dolar = TruncGil("USD", "Alış")) {
        $_SESSION['dolar'] = round($dolar, 2);
    }
    
    if ($euro = CanliDoviz(1)) {
        $_SESSION['euro'] = round($euro, 2);
    } elseif ($euro = Altinkaynak(1)) {
        $_SESSION['euro'] = round($euro, 2);
    } elseif ($euro = TCMBDoviz(3)) {
        $_SESSION['euro'] = round($euro, 2);
    } elseif ($euro = TruncGil("EUR", "Alış")) {
        $_SESSION['euro'] = round($euro, 2);
    }
    
    // Veri güncelleme cooldown süresini ayarla
    $_SESSION['doviz_cooldown'] = time() + 900; // 900 saniye (15 dakika)
} else {
    // Cooldown süresi geçmemişse, önbellekten verileri al
    $dolar = $_SESSION['dolar'];
    $euro = $_SESSION['euro'];
}

function kur($value, $value2) {
    if ($value2 == "EUR") {
        return $value . " EUR";
    } elseif ($value2 == "USD") {
        return "$" . $value;
    } elseif ($value2 == "TRY") {
        return $value . " TL";
    }
}
iyi forumlar.