Jump to content

Php Iletişim Formunda Küçük Bir Düzenleme !


Recommended Posts

Merhaba arkadaşlar;

Php iletişim formumda değiştirmek istediğim bir yer var ama bir türlü yapamadım.
Sorun şu: Web sitesinden mail göndermek isteyince formu doldurmadan direk GÖNDER tuşuna basınca form kullanıcıya UYARI mesajı gösteriyor.(isminizi girin,mail adresinizi girin vb..)

Ancak benim php formumda bu ingilizce ve ben türkçeye çevirdiğim zaman uyarı yerine NULL yazıyor.
Bu sorunu nasıl çözebilirim...

<?php
if(!session_id()) {
	session_start();
}
error_reporting(0);

if (isset($_REQUEST['action'])) {
    if ($_REQUEST['action'] == "contact_form_request") {

        $ourMail = "[email protected]";

        $required_fields = array("name", "email", "message");
        $pre_messagebody_info = "";
        $errors = array();
        $data = array();
        parse_str($_REQUEST['values'], $data);
		
        //check for required and assemble message

        if (!empty($data)) {
            foreach ($data as $key => $value) {
                $name = strtolower(trim($key));
                if (in_array($name, $required_fields)) {
                    if (empty($value)) {
                        $errors[$name] = "Please enter your " . $name . "!";
                    }
                }

                if ($name == "email") {
                    if (!check_email_address($value)) {
                        $errors[$name] = "You've entered invalid email address!";
                    }
                }
            }
        }

//***	
     
        $verify = $_SESSION['verify'];
        if ($verify != md5($data['verify'])) {
            $errors["verify"] = "The verification code you've entered is wrong!";
        }

//***
        $result = array(
            "is_errors" => 0,
            "info" => ""
        );
        if (!empty($errors)) {
            $result['is_errors'] = 1;
            $result['info'] = $errors;
            echo json_encode($result);
            exit;
        }
		
		$pre_messagebody_info.="<strong>Gönderen</strong>" . ": " . $data['name'] . "<br />";
        $pre_messagebody_info.="<strong>E-mail Adresi</strong>" . ": " . $data['email'] . "<br />";

        $headers = 'MIME-Version: 1.0' . "\r\n";
        $headers.= 'Content-type: text/html; charset=UTF-8859-9' . "\r\n";
        $headers.= "From: ".$data['email']."\r\n";

        $after_message = "\r\n<br />--------------------------------------------------------------------------------------------------\r\n<br /> Bu email web sitenizdeki iletişim formundan gönderilmiştir...";

        if (mail($ourMail, "Web sitenizden email aldınız...", $pre_messagebody_info .="<strong>Mesajı</strong>" . ": " . $data['message'] .$after_message, $headers)) {
            $result["info"] = "success";
        } else {
            $result["info"] = "server_fail";
        }

        echo json_encode($result);
        exit;
    }
}

function check_email_address($email) {
// First, we check that there's one @ symbol,
// and that the lengths are right.
    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
// Email invalid because wrong number of characters
// in one section or wrong number of @ symbols.
        return false;
    }
// Split it into sections to make life easier
    $email_array = explode("@", $email);
    $local_array = explode(".", $email_array[0]);
    for ($i = 0; $i < sizeof($local_array); $i++) {
        if
        (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&
вâ€+Ğ„'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
            return false;
        }
    }
// Check if domain is IP. If not,
// it should be valid domain name
    if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
        $domain_array = explode(".", $email_array[1]);
        if (sizeof($domain_array) < 2) {
            return false; // Not enough parts to domain
        }
        for ($i = 0; $i < sizeof($domain_array); $i++) {
            if
            (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|
вâ€+Ğ„([A-Za-z0-9]+))$", $domain_array[$i])) {
                return false;
            }
        }
    }
    return true;
}
?>
Link to comment
Share on other sites

İlginç ama benim düşüncem şu yönde eğer değişkenleri de türkçe yapıyorsan belki ondan yapıyor olabilir veya formun başka bi yerde kod çekiyor mu ? yani include 'ekdosya.php' vs gibi. Kodlarını tam gönderirsen dener nedenini söyleyebilirim.

Link to comment
Share on other sites

İlginç ama benim düşüncem şu yönde eğer değişkenleri de türkçe yapıyorsan belki ondan yapıyor olabilir veya formun başka bi yerde kod çekiyor mu ? yani include 'ekdosya.php' vs gibi. Kodlarını tam gönderirsen dener nedenini söyleyebilirim.

 

Hayır başka yerden kod çekmiyor.Ama dikkatimi çeken şu oldu.

İletişim formum 4 bölümden oluşuyor:

Adınız Soyadınız
Email Adresiniz
Mesajınız
Güvenlik Kodunu Giriniz

 

Ama php kodlarda sadece 3 değişken verilmiş:

$errors[$name] = "Please enter your " . $name . "!";
$errors[$name] = "You've entered invalid email address!";
$errors["verify"] = "The verification code you've entered is wrong!"

 

 

Bence sorun şurada:

 

//check for required and assemble message

if (!empty($data)) {
foreach ($data as $key => $value) {
$name = strtolower(trim($key));
if (in_array($name, $required_fields)) {
if (empty($value)) {
$errors[$name] = "Please enter your " . $name . "!";
}
}

if ($name == "email") {
if (!check_email_address($value)) {
$errors[$name] = "You've entered invalid email address!";
}
}
}
}

//***

 

Çünkü name ile ilgili ne yazarsam email ile ilgili kısımda da aynısı çıkıyor. 

Link to comment
Share on other sites

Kodların genelinde hata var doğru dikkat etmişsiniz eksikler vs.

 

$errors[$name] = "You've entered invalid email address!"; email adresine name değişkeni ne alaka ?

 

Onun sebebi şu sanırım:

 

if ($name == "email") {

if (!check_email_address($value)) {

$errors[$name] = "You've entered invalid email address!";

 

Bu şekilde bir = kullanılmış if ($name == "email")

Bu sebeple de $errors[$name] = "You've entered invalid email address!";  yazılmış diye düşünüyorum.

Edited by volkantr19
Link to comment
Share on other sites

Bu nasıl bir kodlama mantığını hala anlamadım gece gece :D eğer isim emaile eşitse Geçersiz e-posta adresi girdiniz :D dostum sen başka script bul dene bence

 

Normalde hiçbir sorunu yok bu formun,server da denedim mailler süper bir şekilde gönderiliyor.

Ama dedim ki,madem Türkiye'deyiz,bu uyarıları Türkçe yapayım.Keşke demez olaydım.

 

Sorunu bir türlü çözemedim,çözebileni de bulamadım...

Link to comment
Share on other sites

  • 4 hafta sonra ...

Selamun Aleyküm.

kardeşim php' nin Doğrulama Fonksiyonları var Örneğin mail için.

 

 

HTML FORM YAPIMIZ:

<form name="Form1" method="POST">
<input type="text" name="mail" size="60" />
<input type="text" name="ad" size="50" />
</form>

 Daha Sonra Php Kodumuz :

if($_POST){
$ad = $_POST['ad'];
$mail = $_POST['mail'];
$kontrol = strlen($mail);
$kontrola = strlen($ad);
if ($kontrol == 0 && $kontrola == 0){
echo "ALANLARI DOLDURUNUZ".
}else{

// SİZİN İŞLEMLERİNİZ..
}

}
Link to comment
Share on other sites

aslında HTML5 sayesinde hiç birine gerek yok. 

<input type="text" name="isim" required="required">

dediğiniz zaman submit buttonu tıklandığında otomatik olarak şöyle bir uyarı çıkacaktır:

 

9C7Y5eu.png

 

ya da şu şekilde çıkacak olan mesjaı özelleştirebilirsiniz:

<input name="kont1" pattern="[0-9]{6}" type="tel" title="Örnek: 012345" required="required">

HRqQEZB.png

 

yani dedik ki, {0-9} 0 ila 9 sayıları arasında {6} 6 haneli bir sayı girilmesi mecburidir.

 

hatta ve hatta regex ile mail kontrolü vb. de yaptırabilirsiniz.

Link to comment
Share on other sites

Kinto keşke turkiyedeki kullanıcıların çoğu yeni tareayıcıları kullansa da bizde kasmasak rahat rahat yazsak bizde kodları ama maalesef.

 

Kullandığın script ise epey eski bi script yeni bi script kullanmanı tavsiye ederim. ereg fonksiyonları falan tedavulden kalkalı çok oldu

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...