Çözüldü XenForo URL Türkçe Karakter Sorunu

  • Konuyu başlatan Konuyu başlatan Recep Baltaş
  • Başlangıç Tarihi Başlangıç Tarihi
  • Mesaj Mesaj 48
  • Görüntüleme Görüntüleme 6B
Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
3 Aralık 2023
Mesajlar
15.078
Makaleler
104
Çözümler
1.590
Beğeniler
45.771
Yer
İstanbul
Arkadaşlar selam,

Hem Technopat hem de burada mevcut olan bir sorunu çözmeye çalışıyoruz. Sorun basitçe içinde Türkçe karakter olan bir link konulduğunda karakterlerin bozuk çıkması. Bkz:


Bütün eklentileri kapatsak da bu sorun devam etti maalesef. İşin garibi, sistem veriyi çekerken sorun yok. Bkz.

HTML:
<!DOCTYPE html>
<html class="nojs tr-tr seg-consumer emea tr" lang="tr-TR">

        <head>


            <link rel="preconnect" href="https://store.storeimages.cdn-apple.com/4668/store.apple.com" crossorigin="anonymous">
            <link rel="dns-prefetch" href="https://store.storeimages.cdn-apple.com/4668/store.apple.com" crossorigin="anonymous">

            <link rel="preconnect" href="https://www.apple.com" crossorigin="anonymous">
            <link rel="dns-prefetch" href="https://www.apple.com" crossorigin="anonymous">

            <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1" />
    <title>Güç Adaptörü Uzatma Kablosu - Apple (TR)</title>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />  
    <meta name="format-detection" content="telephone=no" />      
         <meta property="og:locale" content="tr_TR" />
        <meta name="robots" content="max-image-preview:large" />
        <meta property="og:title" content="Güç Adaptörü Uzatma Kablosu" />
        <meta property="og:type" content="product" />
        <meta property="og:image" content="https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/MK122_GEO_EMEA?wid=1200&amp;hei=630&amp;fmt=jpeg&amp;qlt=95&amp;.v=1694554348237" />
        <meta name="twitter:card" content="summary_large_image" />
        <meta property="og:site_name" content="Apple (TR)" />
        <meta name="twitter:site" content="@apple" />
        <meta property="og:url" content="https://www.apple.com/tr/shop/product/MK122TU/A/güç-adaptörü-uzatma-kablosu" />
        <meta property="og:description" content="Güç Adaptörü Uzatma Kablosu ile, Apple güç adaptörünüzü kolaylıkla uzatabilirsiniz." />
    <meta name="description" content="Güç Adaptörü Uzatma Kablosu ile, Apple güç adaptörünüzü kolaylıkla uzatabilirsiniz." />
       
     
     
      <link rel="canonical" href="https://www.apple.com/tr/shop/product/MK122TU/A/güç-adaptörü-uzatma-kablosu" />
            <link rel="alternate" hreflang="zh-hant-hk" href="https://www.apple.com/hk-zh/shop/product/MK122B/A/%E9%9B%BB%E6%BA%90-%E8%BD%89%E6%8F%9B%E5%99%A8-%E5%BB%B6%E9%95%B7%E7%B7%9A" />
            <link rel="alternate" hreflang="en-sg" href="https://www.apple.com/sg/shop/product/MK122B/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="zh-hant-tw" href="https://www.apple.com/tw/shop/product/MK122TA/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="en-ca" href="https://www.apple.com/ca/shop/product/MK122LL/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="en-ie" href="https://www.apple.com/ie/shop/product/MK122B/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="en-gb" href="https://www.apple.com/uk/shop/product/MK122B/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="en-ae" href="https://www.apple.com/ae/shop/product/MK122B/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="no-no" href="https://www.apple.com/no/shop/product/MK122Z/A/skj%C3%B8tekabel-for-lader" />
            <link rel="alternate" hreflang="hu-hu" href="https://www.apple.com/hu/shop/product/MK122Z/A/h%C3%A1l%C3%B3zatiadapter-hosszabb%C3%ADt%C3%B3" />
            <link rel="alternate" hreflang="fr-be" href="https://www.apple.com/be-fr/shop/product/MK122Z/A/c%C3%A2ble-extension-adaptateur-secteur" />
            <link rel="alternate" hreflang="en-us" href="https://www.apple.com/shop/product/MK122LL/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="en-in" href="https://www.apple.com/in/shop/product/MK122HN/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="tr-tr" href="https://www.apple.com/tr/shop/product/MK122TU/A/g%C3%BC%C3%A7-adapt%C3%B6r%C3%BC-uzatma-kablosu" />
            <link rel="alternate" hreflang="de-ch" href="https://www.apple.com/ch-de/shop/product/MK122SM/A/power-adapter-netzteil-verl%C3%A4ngerungskabel" />
            <link rel="alternate" hreflang="th-th" href="https://www.apple.com/th/shop/product/MK122TH/A/%E0%B8%AA%E0%B8%B2%E0%B8%A2%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%A2%E0%B8%B2%E0%B8%A7%E0%B8%AD%E0%B8%B0%E0%B9%81%E0%B8%94%E0%B8%9B%E0%B9%80%E0%B8%95%E0%B8%AD%E0%B8%A3%E0%B9%8C%E0%B9%81%E0%B8%9B%E0%B8%A5%E0%B8%87%E0%B9%84%E0%B8%9F" />
            <link rel="alternate" hreflang="da-dk" href="https://www.apple.com/dk/shop/product/MK122DK/A/forl%C3%A6ngerkabel-til-str%C3%B8mforsyning" />
            <link rel="alternate" hreflang="vi-vn" href="https://www.apple.com/vn/shop/product/MK122ZP/A/c%C3%A1p-n%E1%BB%91i-d%C3%A0i-cho-b%E1%BB%99-ti%E1%BA%BFp-h%E1%BB%A3p-ngu%E1%BB%93n" />
            <link rel="alternate" hreflang="fi-fi" href="https://www.apple.com/fi/shop/product/MK122Z/A/virtal%C3%A4hteen-jatkokaapeli" />
            <link rel="alternate" hreflang="fr-lu" href="https://www.apple.com/lu/shop/product/MK122Z/A/c%C3%A2ble-extension-adaptateur-secteur" />
            <link rel="alternate" hreflang="en-au" href="https://www.apple.com/au/shop/product/MK122X/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="fr-fr" href="https://www.apple.com/fr/shop/product/MK122Z/A/c%C3%A2ble-extension-adaptateur-secteur" />
            <link rel="alternate" hreflang="nl-be" href="https://www.apple.com/be-nl/shop/product/MK122Z/A/lichtnetadapter-verlengkabel" />
            <link rel="alternate" hreflang="de-at" href="https://www.apple.com/at/shop/product/MK122D/A/power-adapter-netzteil-verl%C3%A4ngerungskabel" />
            <link rel="alternate" hreflang="nl-nl" href="https://www.apple.com/nl/shop/product/MK122Z/A/lichtnetadapter-verlengkabel" />
            <link rel="alternate" hreflang="en-th" href="https://www.apple.com/th-en/shop/product/MK122TH/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="en-ph" href="https://www.apple.com/ph/shop/product/MK122PP/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="pl-pl" href="https://www.apple.com/pl/shop/product/MK122Z/A/przed%C5%82u%C5%BCacz-do-zasilacza" />
            <link rel="alternate" hreflang="es-cl" href="https://www.apple.com/cl/shop/product/MK122CI/A/cable-de-extensi%C3%B3n-para-el-adaptador-de-corriente" />
            <link rel="alternate" hreflang="fr-ca" href="https://www.apple.com/xf/shop/product/MK122LL/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="zh-hans-cn" href="https://www.apple.com.cn/shop/product/MK122CH/A" />
            <link rel="alternate" hreflang="en-hk" href="https://www.apple.com/hk/shop/product/MK122B/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="cs-cz" href="https://www.apple.com/cz/shop/product/MK122Z/A/prodlu%C5%BEovac%C3%AD-kabel-nap%C3%A1jec%C3%ADho-adapt%C3%A9ru" />
            <link rel="alternate" hreflang="ja-jp" href="https://www.apple.com/jp/shop/product/MK122J/A/%E9%9B%BB%E6%BA%90%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF%E5%BB%B6%E9%95%B7%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB" />
            <link rel="alternate" hreflang="fr-ch" href="https://www.apple.com/ch-fr/shop/product/MK122SM/A/c%C3%A2ble-extension-adaptateur-secteur" />
            <link rel="alternate" hreflang="de-de" href="https://www.apple.com/de/shop/product/MK122D/A/power-adapter-netzteil-verl%C3%A4ngerungskabel" />
            <link rel="alternate" hreflang="es-es" href="https://www.apple.com/es/shop/product/MK122Z/A/cable-alargador-adaptador-corriente" />
            <link rel="alternate" hreflang="pt-br" href="https://www.apple.com/br/shop/product/MK122BZ/A/cabo-de-extens%C3%A3o-para-adaptador-de-energia" />
            <link rel="alternate" hreflang="es-mx" href="https://www.apple.com/mx/shop/product/MK122LL/A/cable-de-extensi%C3%B3n-para-el-adaptador-de-corriente" />
            <link rel="alternate" hreflang="it-it" href="https://www.apple.com/it/shop/product/MK122CI/A/prolunga-per-alimentatore" />
            <link rel="alternate" hreflang="pt-pt" href="https://www.apple.com/pt/shop/product/MK122Z/A/cabo-de-extens%C3%A3o-para-adaptador-de-corrente" />
            <link rel="alternate" hreflang="en-nz" href="https://www.apple.com/nz/shop/product/MK122X/A/power-adapter-extension-cable" />
            <link rel="alternate" hreflang="sv-se" href="https://www.apple.com/se/shop/product/MK122Z/A/f%C3%B6rl%C3%A4ngningskabel-f%C3%B6r-str%C3%B6madapter" />
          <link rel="image_src" href="https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/MK122_GEO_EMEA?wid=400&amp;hei=400&amp;fmt=jpeg&amp;qlt=90&amp;.v=1694554348237" />

            <link data-srs rel="stylesheet" href="https://store.storeimages.cdn-apple.com/4668/store.apple.com/static-resources/rs-globalelements-2.6.0-2a5e7/dist/ac-globalnav.css" media="screen, print"  />



        <link data-srs rel="stylesheet" href="https://store.storeimages.cdn-apple.com/4668/store.apple.com/static-resources/rs-external-1.54.1-77a94/rel/tr/external.css" media="screen, print"  />
        <link data-srs rel="stylesheet" href="https://store.storeimages.cdn-apple.com/4668/store.apple.com/static-resources/rs-vendor-1.17.1-38d61/dist/common-css@0.4.2/dist/common.css" media="screen, print"  />
        <link data-srs rel="stylesheet" href="https://store.storeimages.cdn-apple.com/4668/store.apple.com/static-resources/rs-pdp-1.19.5-81256/dist/product-details.css" media="screen, print"  />

        <link data-srs rel="stylesheet" href="https://www.apple.com/wss/fonts?families=SF+Pro,v3:200,300,400,500,600|SF+Pro+Icons,v3|Apple+Monochrome+Emoji,v3|Apple+Monochrome+Emoji+Ind,v2|Graphik,v1"  />

   



<link rel="stylesheet" href="https://store.storeimages.cdn-apple.com/4668/store.apple.com/shop/Catalog/global/css/dd/buy-flow/pdp.css" media="screen, print" />
<link rel="stylesheet" href="https://store.storeimages.cdn-apple.com/4668/store.apple.com/shop/Catalog/global/css/web/fee/pdp/as-pdp.css" media="screen, print" />

    </head>

Ben yine de sorunun kurduğumuz bir eklentiden kaynaklandığını düşünüyorum ama daha kapsamlı test için local'de XAMPP ile bir test yapacağız.
 
Son düzenleme:
Çözüm
Efenim sorunu çözdüm. Peki nasıl çözdüm adım adım ilerleyelim:
  • Öncelikle sorun Techopat'ta başladı. Ben de bu yüzden soruna bizim geliştirici Mikail'in eklentileri sebep oluyor sanıyordum zira onun eklentileri hem Techolay.net'te hem de İngilizce sitemiz olan Geekberry.net'te mevcut.
  • Geekberry.net'te bütün eklentileri kapatmama rağmen sorun devam ediyordu. Bu durumda sorun eklenti kaynaklı değildi.
  • Bu sorun genelde UTF-8 eksikliğinden kaynaklandığından veri tabanlarını tekrar kontrol ettim ama veri tabanları zaten XenForo tarafından otomatik olarak utf8mb4_general_ci olarak ayarlanıyor. Kaldı ki veri tabanında da bir değişiklik olmadı.
  • XenForo'nun Demo sitesine girdim, sorun yoktu. XenForo.com'da da sorun yok.
  • PC'ye XAMPP kurup sıfır XenForo 2.2.13 kurdum, sorun bu temiz kurulumda da karşıma çıktı!
  • Yeni sürümde sorun vardır deyip 2.2.12 ile denedim, yine çözülmedi!
En sonunda XenForo Demo sitesindeki admin paneline ve XAMPP paneline bakmaya başladım. XenForo ekibi de sorun sunucu kaynaklı dediği için sunucudaki bir şey bu soruna sebep olmalıydı. cURL veya OpenSSL düşük ihtimaldi. Dikkatimi çeken şey şu oldu: Technopat, Techolay, Geekberry ve XAMPP; hepsi PHP 8.2 kullanıyordu! XAMPP içinde PHP sürüm düşürme nasıl yapılır diye baktım, uzun bir işlemdi, vazgeçtim. Hemen Geekberry cPanel'ini açtım ve PHP 8.2 (8.2.12) sürümünü 8.1 (8.1.26) yaptım ve sorun çözüldü!

Evet, sorunun sebebi PHP 8.2 imiş.

Şimdi tabii net olarak hatanın PHP mi XenForo kaynaklı mı olduğunu bilmiyoruz ama XenForo ekibine durumu ileteceğim, yazdıkları kodda hata varsa onlar, yoksa da PHP ekibi sorunu çözecek.

Böylece Techolay.net'te sorduğum ilk soruyu yine ben çözmüş oldum

Teşekkürler oraya da ekledim.

Yazılan şeylerden hiçbir şey anlamadım ama elinize sağlık
Rica ederim.

Tekrar selam,
Buradan iletilen 2 sorunun çözümünü kodda düzelttim. Ve nelerin nasıl değişmesi gerektiği ile ilgili olarak yazının devamında bilgi olarak paylaştım.
Sorunlar:
1) Türkçe karakter içeren başlıkların bağlantıları doğru olarak görülmüyor.
Ör:
başlık: XenForo URL Türkçe karakter sorunu.
URL: XenForo-URL-tuerkce-karakter-sorunu. 852.

2) Türkçe karakter içeren bağlantılarda "urlToUtf8 hatası" veya "bir sunucu hatası oluştu" şeklinde uyarı alınıyor.
Ör: https://www.apple.com/tr/shop/product/MK122TU/A/güç-adaptörü-uzatma-kablosu


Bu sorun içinde bir çözüm buldum. Yine kaynak kod üzerinde değişiklik yapmak gerekiyor.
Dosya konumu: src/XF/Str/Formatter.php:440

PHP:
public function encodeURI($uri)
{
 return preg_replace_callback("{[^0-9a-z_.!~*'();,/?:@&=+$#-]}i", function ($m) {
 return sprintf('%%%02X', ord($m[0]));
 }, $uri);
}

public function prepareAutoLinkedUrl($url, array $options = [])
 {
 // Eklenmesi gereken alan başlangıcı.
 $url = $this->encodeURI($url);
 // Eklenmesi gereken alan sonu.
 ...

Koddaki değişiklik:



Sorunun çözümü:





URL yapısı (slug) ile ilgili çözüm:

Dosya konumu: src/XF/Mvc/Router.php:515

PHP:
public function turkishSlugConverter($text){
 $turkisLetter = ["Ğ","Ü","Ş","İ","Ö","Ç","ğ","ü","ş","ı","ö","ç"," "];
 $englishLetter = ["G","U","S","I","O","C","g","u","s","i","o","c","-"];

 return str_replace($turkisLetter, $englishLetter, strip_tags(trim($text)));
}

public function prepareStringForUrl($string, $romanizeOverride = null)
{
 // Eklenen kod başlangıcı.
 $string = strval($string);
 $string = $this->turkishSlugConverter($string);
 // Eklenen kod sonu.
 ...

Kodda değişiklik:





Bir değişiklik yapılması gereken yer daha var mış. Bu kod türkçe karakterli girilen bağlantıların embed kutularını oluşturmayı sağlıyor. Eklenmediği taktirde yine hata alınmaya devam edecektir.

Dosya konumu: src/XF/Http/MetadataFether.php:35

PHP:
public function encodeURI($uri)
{
 return preg_replace_callback("{[^0-9a-z_.!~*'();,/?:@&=+$#-]}i", function ($m) {
 return sprintf('%%%02X', ord($m[0]));
 }, $uri);
}

public function fetch($requestUrl, &$error = null, $startTime = null, $timeLimit = null)
 {
 // Eklenmesi gereken kod başlangıcı
 $requestUrl = $this->encodeURI($requestUrl);
 // Eklenmesi gereken kod bitişi
 $requestUrl = $this->getValidRequestUrl($requestUrl, $startTime, $timeLimit);

 
Son düzenleme:
Bir değişiklik yapılması gereken yer daha var mış. Bu kod türkçe karakterli girilen bağlantıların embed kutularını oluşturmayı sağlıyor. Eklenmediği taktirde yine hata alınmaya devam edecektir.
Bunun için bir yama yayınladılar hocam hatam yoksa. Hatta size verdiğim link bu yamayı içeriyor.

Umarım bunları 2.2.14 sürümüne entegre ederler
 
URL yapısı (slug) ile ilgili çözüm:
Bunun için bir yama yayınladılar hocam hatam yoksa. Hatta size verdiğim link bu yamayı içeriyor.

Umarım bunları 2.2.14 sürümüne entegre ederler
@ramsan45'in sağladığı kodları ufak bir eklentiye çevirdim. Recep Bey uygulamak isterse, böylece kaynak kodlarını değiştirmesine gerek kalmaz. Yalnızca "unfurl" problemi ile ilgili kodu eklemedim, PHP sürümünü düşürerek çözüm sağlandığı için gerek duymadım.

Zaten ileride resmi güncelleme yapılır.

PHP kodlamayalı ve XenForo eklentisi yazmayalı uzun bir zaman oldu, umarım bir problem yoktur.

Bilgisi olan arkadaşların kendi ortamlarında test etmesini rica ediyorum.
 

Elinize sağlık. XenForo'yu hiç kullanmamıştım. Fena bir şey değilmiş. Gayet kullanılabilir
 
Son düzenleyen: Moderatör:
Eline sağlık ama çok yakında 2.2.14 geleceği için çok da şart değil, bekleyelim.

Güncelleme: XenForo 2.2.14 ile çözülen sorun 2.2.15 ile geri geldi.
 
Son düzenleme:
Aslında sorun PHP daha çok XenForo Yazılım kişilerin artık 60 70 geçmesi ve yenilik kapalı olmasından dolayı oluşuyor.

Yıl olmuş 2024 PHP 8.1 8.2 mi kaldı PHP 9.0 tanıtıldı. Sene sonu geliyor.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…