Bu kodlarla E-Posta ile kayıt olunuyor. Fakat...?

yusufdemirkoparan
18-02-2009, 12:54   |  #1  
OP Üye
Teşekkür Sayısı: 0
79 mesaj
Kayıt Tarihi:Kayıt: Şub 2007

Aşağıda olan kodu çalıştığım kitaptan aldım.
1-localhost'da denedim. Çalışıyor.
2-E-Postaların dışında Ad ve Soyad girildiğinde de kaydediyor. Bu büyük bir sorun.

Soru-1: E_Postalara özgü "@" karekteri olmadan veya eposta sonundaki ".com" eki olmadan girilen bilgileri kabul etmeyen bir ekleme yapabilirmiyiz. Yapabilirsek yeri-konumu neresi olmalıdır ?
Soru-2: Geçersiz E-Posta sorunu aşıldığında, Bu kodların yeni hali ile ziyaretçinin oturum açabilmesi için ek dosya mı oluşturmak gerekir veya bu kodlara ekleme mi gerekir ?

Vereceğiniz bilgi için şimdiden teşekkür ederim.

<?php
//birkac fonksiyon hazirla
function doDB () {
        global $conn;
        //sunucuya baglan ve veritabanini sec; ihtiyaciniz olabilir
        $conn = mysql_connect("localhost" , "root" , "")
                or die(mysql_error());
        mysql_select_db("bilgiDB" ,$conn) or die(mysql_error());
}

function emailChecker ($email) {
        global $conn, $check_result;
        //e-postanin listede zaten olup olmadigini kontrol et
        $check = "select id from epostakaydi where email = '$email'";
        $check_result = mysql_query ($check,$conn) or die(mysql_error());
}

//kullanicilarin formu gormeleri gerekip gerekmedigini belirle
if ($_POST[op] != "ds") {
        //gerekiyor, oyleyse form blogunu olustur
        $display_block = "
        <form method=POST action=\"$_SERVER[PHP_SELF]\">
       
        <p><strong>E-Posta Adresiniz:</strong><br />
        <input type=text name=\"email\" size=40 maxlength=150>

        <p><strong>Action:</strong><br />
        <input type=radio name=\"action\" value=\"sub\" checked>kayıt ol
        <input type=radio name=\"action\" value=\"unsub\"> kayıttan çık
       
        <input type=\"hidden\" name=\"op\" value=\"ds\">
       
        <p><input type=submit name=\"submit\" value=\"Gönder\"></p>
        </form>";

} else if (($_POST[op] == "ds") && ($_POST[action] == "sub")) {
        //abone olmaya calisiliyor, e-posta adresinin gecerliligini kontrol et
        if ($_POST[email] == "") {
                header("Location: emailyonet.php");
                exit;
        }
        //veritabanina baglan
        doDB();
        //e-postanin listede olup olmadigini kontrol et
        emailChecker($_POST[email]);
        //         if (!eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $mail))
//die ("<center><font size=2 face=verdana color=306090>Gecersiz Eposta Adresi Girdiniz</font></center>");
        //sonuc sayisini al ve eyleme basla
        if (mysql_num_rows($check_result) < 1) {
                //kayit ekle
                $sql = "insert into epostakaydi values('', '$_POST[email]')";
                $result = mysql_query($sql,$conn) or die(mysql_error());
                $display_block = "<p>Kayıt olduğunuz için teşekkürler !</p>";
        } else {
          //basarisizlik mesajini yazdir
          $display_block = "<p>Zaten kayıtlısınız !</p>";
        }
        } else if (($_POST[op] == "ds") && ($_POST[action] == "unsub")) {
                //abone iptaline calisiliyor; e-posta adresinin gecerliliginikontrol et
                if ($_POST[email] =="") {
                        header("Location: emailyonet.php");
                        exit;
                }
                //veritabanina baglan
                doDB();
                //e-posta adresinin listede olup olmadigini kontrol et
                emailChecker($_POST[email]);
               
                //sonuc sayisini al ve eyleme gec
                if (mysql_num_rows($check_result) < 1) {
                        //basarisizlik mesajini yazdirin
                        $display_block = "<p>Couldn't find your adress !</p>
                        <p>No action was taken.</p>";
                } else {
                        //adresin aboneligini iptal et
                        $id = mysql_result($check_result, 0, "id");
                        $sql = "delete from epostakaydi where id = '$id'";
                        $result = mysql_query($sql,$conn) or die(mysql_error());
                        $display_block = "<p>You're unsubscribed !</p>";
                }
}
?>
<html>
<head>
<title>Kayıt olma/Kayıttan çıkma</title>
</head>
<body>
<h1>Kayıt olma/Kayıttan çıkma</h1>
<?php echo "$display_block"; ?>
</body>
</html>
               

saslove1984
10-07-2010, 19:23   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
463 mesaj
Kayıt Tarihi:Kayıt: May 2010

if(eregi("^.+@.+\\..+$", $adres, $email)) {
            }
            else{  
            $hata ="Elektronik posta adresinizde bir hata var!<br>";
                                  echo $hata;
                                  include("kd_hata_halinde.htm");
                                  exit;
            }

Program, bu örnekte $adresdeğişkeninde kayıtlı değerin içinde aradığı sıralamayı bulursa, eşleşen değeri $emailadlı yeni bir değişkene yazacak ve if sınavının sonucu doğru olacaktır.Bu sıralamaya uygun bir değer bulunamazsa, if sınavı else deyimine atlayacak ve bir hata mesajı üretilerek, bu program durdurulacaktır. yalnız nasıl entegre edersin bilmem :D