• 23-10-2016, 02:34:59
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba. Yapmış olduğum scriptte sürekli aşılan bir durum var. Yardımlarınızı esirgemezseniz sevinirim. Şimdi;

    input ile kişinin mailini alıyorum aşağıda javascript ile kontrolü var eğer doğru yazmışsa hata vermiyor burda sıkıntı yok çalışıyor. php satırlarında ise bu maili ve mail domainin ayrıştırıp mysql ile sorguluyorum içerde yasaklı mail ve mail domainleri listesi var çünkü. Eğer maili veya mail domaini mysqlde yoksa devam ediyor varsa javascript ile alert verdirip window.location ile tekrar ana sayfaya attırıyorum.

    Sorun burda başlıyor nasıl yapıyorlarsa yasaklanmış mail domaini ile devam edebiliyorlar. Hatta içeri trigger da koydum trigger ilede (before insert) kontrol ediyor mail domainini. Adamlar nasıl yapıyorsa triggeride geçiyorlar malesef .. Şimdi hem php hemde trigger kodlarını veriyorum.

    PHP kodları:
    $MailDomain=end(explode('@',$EMail));
        $sql="SELECT MAILADRES FROM YASAKLIMAILLER WHERE (MAILADRES='$EMail' or MAILADRES='$MailDomain')";
        $rs=mysql_query($sql);
    if(mysql_num_rows($rs)>0){   
          echo "<script>alert('Your e-mail address is prohibited. Please try another e-mail address.'); window.location='index.php';</script>";
        }else{
       .......
    Trigger kodları:
    BEGIN
    
      DECLARE MAILKONTROL TINYINT(1);
    
      SET MAILKONTROL=(SELECT COUNT(*) FROM YASAKLIMAILLER WHERE MAILADRES=SUBSTR(NEW.EMAIL,(INSTR(NEW.EMAIL,'@')+1),200));
    
      IF MAILKONTROL>'0' AND NEW.ADMINGONDERDI='0' THEN
        CALL Your_email_address_is_prohibited();
      END IF;
    END
    Bu kişiler bu önlemleri nasıl geçebilir yardımlarınızı bekliyorum arkadaşlar.
  • 23-10-2016, 06:25:25
    #2
    Üyeliği durduruldu
    MySQL tablosunda mail adresi ve domaini sanırım ayrı tutmuyorsunuz, fakat mysql sorgusunda;

    MAILADRES='$MailDomain'
    Bu şekilde kullanmışsınız dolayısıyla mail domainin pas geçmesi gayet normal bir durum gibi görünüyor, bunun yerine ilgili mail domainini LIKE komutu ile yaparsanız sanırım sorununuzu çözebilirsiniz.

    $MailDomain=end(explode('@',$EMail)); 
        $sql="SELECT MAILADRES FROM YASAKLIMAILLER WHERE (MAILADRES='$EMail' or MAILADRES LIKE '%".$MailDomain."%')"; 
        $rs=mysql_query($sql); 
    if(mysql_num_rows($rs)>0){    
          echo "<script>alert('Your e-mail address is prohibited. Please try another e-mail address.'); window.location='index.php';</script>"; 
        }else{ 
       .......
  • 23-10-2016, 17:49:46
    #3
    Rise adlı üyeden alıntı: mesajı görüntüle
    MySQL tablosunda mail adresi ve domaini sanırım ayrı tutmuyorsunuz, fakat mysql sorgusunda;

    MAILADRES='$MailDomain'
    Bu şekilde kullanmışsınız dolayısıyla mail domainin pas geçmesi gayet normal bir durum gibi görünüyor, bunun yerine ilgili mail domainini LIKE komutu ile yaparsanız sanırım sorununuzu çözebilirsiniz.

    $MailDomain=end(explode('@',$EMail)); 
        $sql="SELECT MAILADRES FROM YASAKLIMAILLER WHERE (MAILADRES='$EMail' or MAILADRES LIKE '%".$MailDomain."%')"; 
        $rs=mysql_query($sql); 
    if(mysql_num_rows($rs)>0){    
          echo "<script>alert('Your e-mail address is prohibited. Please try another e-mail address.'); window.location='index.php';</script>"; 
        }else{ 
       .......
    $MailDomain=end(explode('@',$EMail)); bu kodla $EMail değişkenindeki domaini ayrıştırıyorum ve mail domainini $MailDomain değişkenine atıyorum.

    Dün akşam bi araştırma yapıp mail kontrolünü javascripte ek olarak php kodu ile yaptırdım bakalım işe yaradı gibi dünden beri yasaklı mail gelmedi.

    function isValidEmail($email){
      if(filter_var($email, FILTER_VALIDATE_EMAIL)){
        return true;
      }else{
        return false;
      }
    }
    if(isValidEmail($EMail)){
      ...
    }else{
      echo "yanlış mail girdiniz.";
    }
    Uyguladığım komut bu umarım işe yaramıştır. Bu gün ve yarında yasaklı mail gelmezse işe yaramış demektir