• 03-04-2013, 14:40:44
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    merhaba arkadaşlar basit bi iletişim formu kullanmaktayım fakat formlar türkçe karakter desteklemiyor. Bu sorunu nasıl çözebilirim?

    Alıntı
    <?php
    if(isset($_POST['email'])) {

    // BURAYA KENDI MAIL ADRESINIZI YAZIN
    $email_to = "info@yaz-ka.com";

    $email_subject = "İletişim Formu";


    function died($error) {
    // your error code can go here
    echo "Üzgünüz, iletişim formunda bazı hatalar var.<br /><br />";
    echo $error."<br /><br />";
    echo "Lütfen geriye dönün ve hataları düzeltin.<br /><br />";
    die();
    }

    // validation expected data exists
    if(!isset($_POST['first_name']) ||
    !isset($_POST['last_name']) ||
    !isset($_POST['email']) ||
    !isset($_POST['telephone']) ||
    !isset($_POST['comments'])) {
    died('Üzgünüz, gnderdiğiniz formda hatalar mevcut.');
    }

    $first_name = $_POST['first_name']; // gerekli
    $last_name = $_POST['last_name']; // gerekli
    $email_from = $_POST['email']; // gerekli
    $telephone = $_POST['telephone']; // gerekli değil
    $comments = $_POST['comments']; // gerekli

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'Geçerli bir mail adresi girin.<br />';
    }
    $string_exp = "/^[A-Za-z .'-]+$/";
    if(!preg_match($string_exp,$first_name)) {
    $error_message .= 'Geçerli bir isim girin.<br />';
    }
    if(!preg_match($string_exp,$last_name)) {
    $error_message .= 'Geçerli bir soyisim girin.<br />';
    }
    if(strlen($comments) < 2) {
    $error_message .= 'Geçerli bir mail mesaj girin.<br />';
    }
    if(strlen($error_message) > 0) {
    died($error_message);
    }
    $email_message = "Form detayları aşağıdadır.\n\n";

    function clean_string($string) {
    $bad = array("content-type","bcc:","to:","cc:","href");
    return str_replace($bad,"",$string);
    }

    $email_message .= "First Name: ".clean_string($first_name)."\n";
    $email_message .= "Last Name: ".clean_string($last_name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Telephone: ".clean_string($telephone)."\n";
    $email_message .= "Comments: ".clean_string($comments)."\n";


    // create email headers
    $headers = 'From: '.$email_from."\r\n".
    'Reply-To: '.$email_from."\r\n" .
    'X-Mailer: PHP/' . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);
    ?>

    <html>
    <head>
    <meta http-equiv=content-type content=text/html;charset=iso-8859-9>
    </head>
    <body>


    Mesajınız için teşekkür ederiz, yakında sizinle iletişime geçeceğiz.
    </body>
    </html>

    <?php
    }
    die();
    ?>
  • 03-04-2013, 15:17:21
    #2
    $headers .= 'Content-type: text/html; charset=iso-8859-9' . "\r\n";
    $headers .= 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion();
    olarak değiştiriniz.
  • 03-04-2013, 15:53:37
    #4
    malesef sorun çözulemedı arkadaşlar yardımlarınızı beklıyorum
  • 03-04-2013, 16:27:46
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bu sayfayı aynen uygularsanız sorun çözülür.

    http://pehepe.net/php-turkce-karakter-problemi/
  • 03-04-2013, 16:58:21
    #6
    erginkeles adlı üyeden alıntı: mesajı görüntüle
    Bu sayfayı aynen uygularsanız sorun çözülür.

    http://pehepe.net/php-turkce-karakter-problemi/
    işe yaramadı :S
  • 03-04-2013, 17:07:13
    #7
    parq adlı üyeden alıntı: mesajı görüntüle
    işe yaramadı :S
    PHP'de Türkçe karakter sorununun nedenleri bellidir. Dosya karakter seti utf-8 değildir. Hiçbir header bildirimi yapılmamıştır. mail gönderirken buna bi faktör daha eklenir. O da arkadaşların dediği gibi header bilgisi eklemektir.

    Kodları kendim de deneyeceğim. Size bildilendirme yaparım.

    Düzenleme:

    Verdiğiniz kodların hepsini kopyalayın. notepadı açın yapıştırın. Farklı kaydet yapın. farklı kaydederken karakter setini mutlaka utf-8 olarak belirleyin.

    Aynı dosyayı notepad++ ile açın. kodlama sekmesinden UTF-8 BOMSUZ dönüştür seçeneğini seçin. Kaydedin çıkın.

    Ardından kodların en üstüne şu kodu ekleyin.

    header("Content-Type: Text/html; Charset=utf-8");
    Aslında http://pehepe.net/php-turkce-karakter-problemi/ adresteki değişikliklerin aynısını anlattım size.

    Ben bu şekilde yaptım ve denedim bizzat. Sorunsuz şekilde başlık da içerik de türkçe olarak gönderiliyor. Hatta ben mail fonksiyonunda header bile kullanmadım.