• 13-10-2012, 16:30:30
    #1
    kayit olduktan, sonra kullanıcıyı yönlendirdiğim bir sayfa var, burada üyeye kayıt başarıyla olundu yazıp e-mail atıyor, ama sayfayı yenileyince aynı e-maili tekrar atıyor ben sayfa yenilendiginde mail göndermesini istemiyorum, post ile gönderdiğim veriler sayfa yenilendiginde kaybolsun istiyorum, bunu nasıl yapabilirim?
  • 13-10-2012, 17:44:35
    #2
    mail gönderip gönderilmediğini veritabanında kayıt altında tutarak eğer gönderildiyse tekrar göndermeyi engelleyebilirsiniz. Sayfa yenilensede mail gönderildiği için tekrar gönderilmeyecektir.
  • 13-10-2012, 18:17:39
    #3
    -form sayfası (kayit.php)
    -işlem sayfası (kayit.php?islem=form)
    -sonuç sayfası (kayit.php?islem=taamReis ya da kayit.php?islem=hataVarBeya)

    olmak üzere üç farklı ekran düşünün. Form sayfasından veriyi post edin, işlem sayfasında gerekli işlemleri yapın, işlemin sonucuna göre göndereceğiniz parametreleri kullanarak sonuç sayfasında kullanıcıya mesaj gönderin. Bu sayede, postun gittiği sayfa ile sonuç sayfası aynı yerde olmadığından f5 ile işlemler tekrar gitmemiş olur.
  • 13-10-2012, 18:20:58
    #4
    Belki session kullanılabilir:

    <?php
    session_start();
    echo '<meta http-equiv="Content-Language" content="tr"/>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>';
    if(@$_SESSION['mail_gonderildi']!=1)
    {
    	echo 'Mail Gönderiliyor...<br/>';
    	sleep(1); // Mail göndermek için kodları ekleyin.
    	echo 'Mail Gönderildi.';
    	$_SESSION['mail_gonderildi']=1;
    }
    else
    {
    	echo 'Mail Zaten Gönderilmişti!!!<br/>';
    }
    ?>
  • 13-10-2012, 19:04:43
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Böyle birşey yapmak yerine sayfayı javascript ile yönlendirin problem kalmaz.
  • 13-10-2012, 20:15:08
    #6
    $varmiii=mysql_query("SELECT * FROM `uyelik` WHERE `telefon` LIKE '$telefon'");
        while($yazzz = mysql_fetch_array($varmiii)){
        $tlf = $yazzz['telefon'];
        echo $tlf;
    }
    //verileri kontrol et
    if( empty($ad) || empty($dizi) || empty($eposta) || empty($telefon) and !eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $eposta) and $tlf==$telefon )
    { echo "Girdiginiz bilgilerde yanlislik var";}
    böyle bir şey denedim, echo $tfl; çalışıyor sayfaya yazdırıyor, ama $tlf==$telefon komudu çalışmıyor neden çalışmıyor?
  • 14-10-2012, 01:07:06
    #7
    güncel
  • 14-10-2012, 20:26:27
    #8
    <?php
    @include "baglan.php";
    if(isset($_POST['git'])){
    //postları çek
    $ad=strip_tags($_POST['ad']);
    $dizi=strip_tags($_POST['dizi']);
    $eposta=strip_tags($_POST['eposta']);
    $telefon=strip_tags($_POST['telefon']);
    }
    //postları çek
    $varmiii=mysql_query("SELECT * FROM `uyelik` WHERE `telefon` LIKE '$telefon'");
        while($yazzz = mysql_fetch_array($varmiii)){
        $tlf = $yazzz['telefon'];
        echo $tlf;
    }
    //verileri kontrol et 
    if( empty($ad) || empty($dizi) || empty($eposta) || empty($telefon) and !eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $eposta) and $tlf==$telefon )
    { echo "Girdiginiz bilgilerde yanlislik var";}
    //verileri kontrol et 
    else {
    $onay=0;  //Aktivasyon olduğunda bunu 1 yapıcan
    $kullanim= rand(10000,99999);
    
    //verileri db'ye ekle
    $tablo = "INSERT INTO uyelik VALUES ('','$ad', '$dizi', '$eposta', '$telefon', '$onay', '$kullanim')";
    if ( @mysql_query($tablo)) {
        echo "üyeliginiz basariyla olusturuldu, aktif etmek icin emailinizdeki aktivasyon linkine tiklayin!";
    //verileri db'ye ekle 
        }
    }
    ?>
    kullandıgım kod bu, email yerini çıkardım. eğer sistemde böyle bir telefon kayıtlıysa tekrar işlemi yapmaması için if in içine $tlf==$telefon ekledim ama çalısmıyor
  • 14-10-2012, 20:48:37
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    odizibudizi adlı üyeden alıntı: mesajı görüntüle
    <?php
    @include "baglan.php";
    if(isset($_POST['git'])){
    //postları çek
    $ad=strip_tags($_POST['ad']);
    $dizi=strip_tags($_POST['dizi']);
    $eposta=strip_tags($_POST['eposta']);
    $telefon=strip_tags($_POST['telefon']);
    }
    //postları çek
    $varmiii=mysql_query("SELECT * FROM `uyelik` WHERE `telefon` LIKE '$telefon'");
        while($yazzz = mysql_fetch_array($varmiii)){
        $tlf = $yazzz['telefon'];
        echo $tlf;
    }
    //verileri kontrol et 
    if( empty($ad) || empty($dizi) || empty($eposta) || empty($telefon) and !eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$", $eposta) and $tlf==$telefon )
    { echo "Girdiginiz bilgilerde yanlislik var";}
    //verileri kontrol et 
    else {
    $onay=0;  //Aktivasyon olduğunda bunu 1 yapıcan
    $kullanim= rand(10000,99999);
    
    //verileri db'ye ekle
    $tablo = "INSERT INTO uyelik VALUES ('','$ad', '$dizi', '$eposta', '$telefon', '$onay', '$kullanim')";
    if ( @mysql_query($tablo)) {
        echo "üyeliginiz basariyla olusturuldu, aktif etmek icin emailinizdeki aktivasyon linkine tiklayin!";
    //verileri db'ye ekle 
        }
    }
    ?>
    kullandıgım kod bu, email yerini çıkardım. eğer sistemde böyle bir telefon kayıtlıysa tekrar işlemi yapmaması için if in içine $tlf==$telefon ekledim ama çalısmıyor

    Arkadaşım mantiken yanlış yapmışsın. Önce post var mı diye kontrol edip sonra veritabanından bakacaksın o numara var mı diye.
    Şu şekilde değiştirip dene kodlarını:

    if(isset($_POST['git'])){
    //postları çek
    $ad=strip_tags($_POST['ad']);
    $dizi=strip_tags($_POST['dizi']);
    $eposta=strip_tags($_POST['eposta']);
    $telefon=strip_tags($_POST['telefon']);
    }
    if( empty($ad) || empty($dizi) || empty($eposta) || empty($telefon)){
    	echo 'Bilgileri Tam giriniz';
    	exit; 
    }
    //kontrol et
    $varmi = mysql_query('SELECT count(*) as say FROM uyelik WHERE telefon LIKE "%'.$telefon.'%"');
    $yaz = mysql_fetch_array($varmi);
    if($yaz['say'] > 0){
    	echo 'Bu numara zaten kayıtlı';
    	exit; 
    }else{
    	$onay=0;//Aktivasyon olduğunda bunu 1 yapıcan
    	$kullanim= rand(10000,99999);
    	//verileri db'ye ekle
    	$tablo = "INSERT INTO uyelik VALUES ('','$ad', '$dizi', '$eposta', '$telefon', '$onay', '$kullanim')";
    	if(@mysql_query($tablo)) {
    		echo "üyeliginiz basariyla olusturuldu, aktif etmek icin emailinizdeki aktivasyon linkine tiklayin!";
    	}
    }
    Tabi burada sadece strip_tags yetmez kontrol için, gelen verileri escape yapman telefon için numara mı diye kontrol etmen vs. gerekli. Ayrıca telefon alanı için 10 haneli bir alan açıp 10 hane olarak yazdırırsan like yerine direk = ile kontrol edersin, ki o şekilde yapman daha iyidir.