• 12-05-2023, 21:35:26
    #1
    Merhaba, Aşağıdaki kodda post ile gelen blog_adi veriyi veritabanına eklerken tükrçe karakter sorunu çıkarıyor. Örneğin; "şanlıurfa" kelimesini "ÅŸanlıurfa " olarak veritabanına kaydediyor. Yardımcı olabilecek varmı?




    $error_msg = "";
    $valid = true;
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $blog_ad = trim($_POST['blog_ad']);
    
    // Karakter setini belirleme
    mb_internal_encoding("UTF-8");
    
    // Blog adı değerindeki karakterleri düzeltme
    $blog_ad = mb_convert_encoding($blog_ad, "UTF-8", "auto");
    
    $blog_metin = $_POST['blog_metin'];
    
    // Blog adı için url oluşturma
    $blog_url = strtolower(trim(preg_replace('/[^a-zA-ZğüşıöçĞÜŞİÖÇ0-9]+/', '-', $blog_ad)));
    
    // Türkçe karakterleri değiştirme ve tüm harfleri küçük yapma
    $tr_to_en = array("ı" => "i", "İ" => "i", "ğ" => "g", "Ğ" => "g", "ö" => "o", "Ö" => "o", "ü" => "u", "Ü" => "u", "ş" => "s", "Ş" => "s", "ç" => "c", "Ç" => "c");
    $blog_url = strtr($blog_url, $tr_to_en);
    $blog_url = preg_replace('/-{2,}/', '-', $blog_url);
    $blog_url = rtrim($blog_url, '-');
    
    // Resim yüklenmiş mi kontrolü
    if ($_FILES['image']['error'] === UPLOAD_ERR_NO_FILE) {
    $error_msg .= '<div class="alert alert-success">Lütfen bir resim yükleyin. </div> <br>';
    
    $valid = false;
    } else {
    // Resim için dosya yolunu ve url'yi oluşturma
    $image_name = strtolower(str_replace(' ', '_', $_FILES['image']['name']));
    $image_tmp_name = $_FILES['image']['tmp_name'];
    $image_path = "resimler/" . $image_name;
    $image_url = "resimler/" . $image_name;
    
    // Dosya tipini kontrol etme
    $image_type = $_FILES['image']['type'];
    if ($image_type != "image/jpeg" && $image_type != "image/png" && $image_type != "image/gif" && $image_type != "image/webp") {
    $error_msg .= '<div class="alert alert-success">Sadece JPG, PNG, GIF ve WebP dosyaları yükleyebilirsiniz.</div> <br>';
    
    $valid = false;
    }
    
    // Dosya boyutunu kontrol etme (1MB'dan büyük olamaz)
    $image_size = $_FILES['image']['size'];
    if ($image_size > 1000000) {
    $error_msg .= "Dosya boyutu 1MB'dan küçük olmalıdır. <br>";
    $valid = false;
    }
    }
    
    // Veritabanına ekleme
    if ($valid) {
    $stmt = $conn->prepare("INSERT INTO blog (blog_adi, blog_metin, blog_resim
    , blog_url) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $blog_ad, $blog_metin, $image_url, $blog_url);
    $stmt->execute
    ();
    
    // Resim klasörüne kaydetme
    move_uploaded_file($image_tmp_name, $image_path); // move_uploaded_file fonksiyonuna dosya yolunu ve hedef konumunu belirterek resmi kaydediyoruz
    
    // Başarılı mesajı
    echo "Blog başarıyla eklendi.";
    } else {
    // Hata mesajlarını gösterme
    echo $error_msg;
    }
    }
  • 12-05-2023, 21:36:52
    #2
    config dosyanızda karakter seti tanımlımı
  • 12-05-2023, 21:37:29
    #3
    Darkbey adlı üyeden alıntı: mesajı görüntüle
    config dosyanızda karakter seti tanımlımı
    Evet hocam. Diğer hiç bir formda bu sorunu yaşamıyorum kod ile alakalı olduğundan eminim
  • 12-05-2023, 21:40:58
    #4
    GetTeac adlı üyeden alıntı: mesajı görüntüle
    Evet hocam. Diğer hiç bir formda bu sorunu yaşamıyorum kod ile alakalı olduğundan eminim
    $error_msg = "";
    $valid = true;
     
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $blog_ad = trim($_POST['blog_ad']);
     
    // Karakter setini belirleme
    mb_internal_encoding("UTF-8");
    
    $blog_adi  = mb_convert_encoding($blog_ad , 'UTF-8', 'ISO-8859-9');
     
    $blog_metin = $_POST['blog_metin'];
     
    // Blog adı için url oluşturma
    $blog_url = strtolower(trim(preg_replace('/[^a-zA-ZğüşıöçĞÜŞİÖÇ0-9]+/', '-', $blog_adi)));
     
    // Türkçe karakterleri değiştirme ve tüm harfleri küçük yapma
    $tr_to_en = array("ı" => "i", "İ" => "i", "ğ" => "g", "Ğ" => "g", "ö" => "o", "Ö" => "o", "ü" => "u", "Ü" => "u", "ş" => "s", "Ş" => "s", "ç" => "c", "Ç" => "c");
    $blog_url = strtr($blog_url, $tr_to_en);
    $blog_url = preg_replace('/-{2,}/', '-', $blog_url);
    $blog_url = rtrim($blog_url, '-');
     
    // Resim yüklenmiş mi kontrolü
    if ($_FILES['image']['error'] === UPLOAD_ERR_NO_FILE) {
    $error_msg .= '<div class="alert alert-success">Lütfen bir resim yükleyin. </div> <br>';
     
    $valid = false;
    } else {
    // Resim için dosya yolunu ve url'yi oluşturma
    $image_name = strtolower(str_replace(' ', '_', $_FILES['image']['name']));
    $image_tmp_name = $_FILES['image']['tmp_name'];
    $image_path = "resimler/" . $image_name;
    $image_url = "resimler/" . $image_name;
     
    // Dosya tipini kontrol etme
    $image_type = $_FILES['image']['type'];
    if ($image_type != "image/jpeg" && $image_type != "image/png" && $image_type != "image/gif" && $image_type != "image/webp") {
    $error_msg .= '<div class="alert alert-success">Sadece JPG, PNG, GIF ve WebP dosyaları yükleyebilirsiniz.</div> <br>';
     
    $valid = false;
    }
     
    // Dosya boyutunu kontrol etme (1MB'dan büyük olamaz)
    $image_size = $_FILES['image']['size'];
    if ($image_size > 1000000) {
    $error_msg .= "Dosya boyutu 1MB'dan küçük olmalıdır. <br>";
    $valid = false;
    }
    }
     
    // Veritabanına ekleme
    if ($valid) {
    $stmt = $conn->prepare("INSERT INTO blog (blog_adi, blog_metin, blog_resim
    , blog_url) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $blog_adi, $blog_metin, $image_url, $blog_url);
    $stmt->execute
    ();
     
    // Resim klasörüne kaydetme
    move_uploaded_file($image_tmp_name, $image_path); // move_uploaded_file fonksiyonuna dosya yolunu ve hedef konumunu belirterek resmi kaydediyoruz
     
    // Başarılı mesajı
    echo "Blog başarıyla eklendi.";
    } else {
    // Hata mesajlarını gösterme
    echo $error_msg;
    }
    }
    bu şekilde denermisin
  • 12-05-2023, 21:42:32
    #5
    Mysql'de karakter utf8_general_ci olmalı. Ayrıca mysql bağlantısından hemen sonra:

    mysqli_set_charset($conn,"utf8");
  • 12-05-2023, 21:42:34
    #6
    Darkbey adlı üyeden alıntı: mesajı görüntüle
    $error_msg = "";
    $valid = true;
     
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $blog_ad = trim($_POST['blog_ad']);
     
    // Karakter setini belirleme
    mb_internal_encoding("UTF-8");
    
    $blog_adi  = mb_convert_encoding($blog_ad , 'UTF-8', 'ISO-8859-9');
     
    $blog_metin = $_POST['blog_metin'];
     
    // Blog adı için url oluşturma
    $blog_url = strtolower(trim(preg_replace('/[^a-zA-ZğüşıöçĞÜŞİÖÇ0-9]+/', '-', $blog_adi)));
     
    // Türkçe karakterleri değiştirme ve tüm harfleri küçük yapma
    $tr_to_en = array("ı" => "i", "İ" => "i", "ğ" => "g", "Ğ" => "g", "ö" => "o", "Ö" => "o", "ü" => "u", "Ü" => "u", "ş" => "s", "Ş" => "s", "ç" => "c", "Ç" => "c");
    $blog_url = strtr($blog_url, $tr_to_en);
    $blog_url = preg_replace('/-{2,}/', '-', $blog_url);
    $blog_url = rtrim($blog_url, '-');
     
    // Resim yüklenmiş mi kontrolü
    if ($_FILES['image']['error'] === UPLOAD_ERR_NO_FILE) {
    $error_msg .= '<div class="alert alert-success">Lütfen bir resim yükleyin. </div> <br>';
     
    $valid = false;
    } else {
    // Resim için dosya yolunu ve url'yi oluşturma
    $image_name = strtolower(str_replace(' ', '_', $_FILES['image']['name']));
    $image_tmp_name = $_FILES['image']['tmp_name'];
    $image_path = "resimler/" . $image_name;
    $image_url = "resimler/" . $image_name;
     
    // Dosya tipini kontrol etme
    $image_type = $_FILES['image']['type'];
    if ($image_type != "image/jpeg" && $image_type != "image/png" && $image_type != "image/gif" && $image_type != "image/webp") {
    $error_msg .= '<div class="alert alert-success">Sadece JPG, PNG, GIF ve WebP dosyaları yükleyebilirsiniz.</div> <br>';
     
    $valid = false;
    }
     
    // Dosya boyutunu kontrol etme (1MB'dan büyük olamaz)
    $image_size = $_FILES['image']['size'];
    if ($image_size > 1000000) {
    $error_msg .= "Dosya boyutu 1MB'dan küçük olmalıdır. <br>";
    $valid = false;
    }
    }
     
    // Veritabanına ekleme
    if ($valid) {
    $stmt = $conn->prepare("INSERT INTO blog (blog_adi, blog_metin, blog_resim
    , blog_url) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $blog_adi, $blog_metin, $image_url, $blog_url);
    $stmt->execute
    ();
     
    // Resim klasörüne kaydetme
    move_uploaded_file($image_tmp_name, $image_path); // move_uploaded_file fonksiyonuna dosya yolunu ve hedef konumunu belirterek resmi kaydediyoruz
     
    // Başarılı mesajı
    echo "Blog başarıyla eklendi.";
    } else {
    // Hata mesajlarını gösterme
    echo $error_msg;
    }
    }
    bu şekilde denermisin
    "şanlıurfa " Bu sefer de bu şekilde kaydetti hocam
  • 12-05-2023, 21:44:39
    #7
    GetTeac adlı üyeden alıntı: mesajı görüntüle
    "şanlıurfa " Bu sefer de bu şekilde kaydetti hocam
    <input type="text" name="blog_ad" accept-charset="UTF-8">

    input tarafını bu şekilde düzenleyip dene bide
  • 12-05-2023, 21:46:52
    #8
    phpc adlı üyeden alıntı: mesajı görüntüle
    Mysql'de karakter utf8_general_ci olmalı. Ayrıca mysql bağlantısından hemen sonra:

    mysqli_set_charset($conn,"utf8");
    O şekilde hocam zaten


    Darkbey adlı üyeden alıntı: mesajı görüntüle
    <input type="text" name="blog_ad" accept-charset="UTF-8">

    input tarafını bu şekilde düzenleyip dene bide
    Yaptım hocam aynı şekilde sorun devam etmekte
  • 12-05-2023, 21:48:00
    #9
    GetTeac adlı üyeden alıntı: mesajı görüntüle
    O şekilde hocam zaten



    Yaptım hocam aynı şekilde sorun devam etmekte

    15-20 dkya gelicem olmadı twden bağlanıp bakalım konu altına tekrar yazarım buralarda olursanız