• 22-02-2023, 22:06:34
    #1
    Selamlar,
    PHP CURL kullanarak tcmb üzerinden dolar ve euro kurlarını çekmek istiyorum.
    Alt tarafta vermiş olduğum kodu kullanıyorum.
    Sayfa hataya düşmüyor fakat değişkenlerin karşılığı olan kurlar boş geliyor.

    <?php
    
        $url = "https://www.tcmb.gov.tr/kurlar/today.xml";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $xml = curl_exec($ch);
        curl_close($ch);
    
        // Dolar kuru verisine erişmek için, XML'i ayrıştırın
        $xmlObj = simplexml_load_string($xml);
        $dolarKuruSatis = $xmlObj->Currency[0]->ForexSelling;
        $dolarKuruAlis = $xmlObj->Currency[0]->ForexBuying;
        echo "Dolar Kuru Satış: " . $dolarKuruSatis . "<br>";
        echo "Dolar Kuru Alış: " . $dolarKuruAlis;
    
    ?>
    Error.log dosyamda anlık olarak alt taraftaki hataları alıyorum;

    [Wed Feb 22 21:59:06.345757 2023] [php:warn] [pid 191782] [client 100.100.100.2:62908] PHP Warning:  Attempt to read property "Currency" on bool in /var/www/cloud/islemler/kur.php on line 12
    [Wed Feb 22 21:59:06.345969 2023] [php:warn] [pid 191782] [client 100.100.100.2:62908] PHP Warning:  Trying to access array offset on value of type null in /var/www/cloud/islemler/kur.php on line 12
    [Wed Feb 22 21:59:06.346044 2023] [php:warn] [pid 191782] [client 100.100.100.2:62908] PHP Warning:  Attempt to read property "ForexSelling" on null in /var/www/cloud/islemler/kur.php on line 12
    [Wed Feb 22 21:59:06.346102 2023] [php:warn] [pid 191782] [client 100.100.100.2:62908] PHP Warning:  Attempt to read property "Currency" on bool in /var/www/cloud/islemler/kur.php on line 13
    [Wed Feb 22 21:59:06.346151 2023] [php:warn] [pid 191782] [client 100.100.100.2:62908] PHP Warning:  Trying to access array offset on value of type null in /var/www/cloud/islemler/kur.php on line 13
    [Wed Feb 22 21:59:06.346199 2023] [php:warn] [pid 191782] [client 100.100.100.2:62908] PHP Warning:  Attempt to read property "ForexBuying" on null in /var/www/cloud/islemler/kur.php on line 13
  • 22-02-2023, 22:10:45
    #2
    Şeklinde güncelleyiniz
    $xmlObj->Currency->ForexSelling[0]
  • 22-02-2023, 22:12:19
    #3
    yusuf68700 adlı üyeden alıntı: mesajı görüntüle
    Şeklinde güncelleyiniz
    $xmlObj->Currency->ForexSelling[0]
    Sonuç değişmedi malesef.
  • 22-02-2023, 22:21:44
    #4
    turansonkaya adlı üyeden alıntı: mesajı görüntüle
    Sonuç değişmedi malesef.
    echo yaparken şu şekilde kullanın hocam
    Demo
  • 22-02-2023, 22:23:23
    #5
    yusuf68700 adlı üyeden alıntı: mesajı görüntüle
    echo yaparken şu şekilde kullanın hocam
    $xmlObj->Currency->ForexSelling[0];
    Echo olarakta kullandım fakat sonuç değişmiyor.
    Edit: localhost'da kod sorunsuz çalışıyor, sunucuma taşıdığım zaman bu şekilde değişken boş geliyor.
  • 22-02-2023, 22:23:59
    #6
    turansonkaya adlı üyeden alıntı: mesajı görüntüle
    Echo olarakta kullandım fakat sonuç değişmiyor.
    Attığım demoya bakabilirsiniz hocam çalışıyor belki kullandığınız firma curl ile alakalı bir özelliği kapatmıştır
  • 23-02-2023, 00:09:04
    #7
    $url = 'https://www.tcmb.gov.tr/kurlar/today.xml';
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    $xml = curl_exec( $ch );
    curl_close( $ch );
    
    $xmlObj = simplexml_load_string( $xml );
    //xml to json
    $json = json_decode( json_encode( $xmlObj ), true );
    
    $dolarKuruSatis = false;
    $dolarKuruAlis = false;
    
    if( $json && isset( $json['Currency'] ) ){
        foreach($json['Currency'] as $kur){
            if( $kur['@attributes']['CurrencyCode'] == 'USD' ){
                $dolarKuruSatis = $kur['ForexSelling'];
                $dolarKuruAlis = $kur['ForexBuying'];
                break;
            }
        }
    }
    
    echo 'Dolar Kuru Satış: ' . $dolarKuruSatis . '<br>';
    echo 'Dolar Kuru Alış: ' . $dolarKuruAlis;
  • 23-02-2023, 00:45:03
    #8
    Platin üye
    Merhaba son zamanlara hosting sunucularında curl reguest atılamiyor firewall kuralları vsvs yüzünden plesk web hosting kullanıp denemenizi tercih ederim curl işlemleri için büyük ihtimalle çözüm bulacaksınız
  • 23-02-2023, 02:49:43
    #9
    Hosting de cURL yüklü değildir. Veya Aktifleştirilmemiştir. Cpanel de PHP Selector altında aktifleştirebilirsin. Veya cURL yerine file_get_contents kullanabilirsin

    $url = "https://www.tcmb.gov.tr/kurlar/today.xml";
    $getUrl = file_get_contents($url);
    $simpleXml = simplexml_load_string($getUrl);
    $jsonArr = json_decode(json_encode($simpleXml), true);
    if( $jsonArr && isset( $jsonArr['Currency'] ) ){
        
            foreach($jsonArr['Currency'] as $kur){
            if( $kur['@attributes']['CurrencyCode'] == 'USD' ){          
         
                echo 'Dolar Kuru Satış: ' . $kur['ForexSelling'] . '<br>';
                echo 'Dolar Kuru Alış: ' . $kur['ForexBuying'];
                
                break;
            }
        }
        
    }