Emre Yüz


PHP mysqli ile üyelik ve email aktivasyonu

Mysql fonksiyonu v7 ile tamamen kullanımdan kaldırıldı. Şimdi hem mysqli fonksiyonunun nasıl kullanıldığını göreceğiz hemde basit bir üyelik sistemi ile email aktivasyonunu nasıl yapılır bunu göreceğiz.

PHP mysqli ile üyelik ve email aktivasyonu

By Emre YÜZ
09.02.2017 21.37



mysqli kullanimi üyelik sistemi email aktivasyon

1. Adım

İlk adımda hemen basit bir veritabanını oluşturuyoruz.

CREATE TABLE IF NOT EXISTS 'uyeler' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'email' varchar(255) NOT NULL UNIQUE,
'sifre' varchar(255) NOT NULL,
'aktivasyon' varchar(255) NOT NULL UNIQUE,
'durum' enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY ('id')
)

2. Adım

Html ile basit bir üyelik formu hazırlıyoruz.

<form action="" method="post">
<label>Email</label>
<input type="text" name="email"/>
<label>Şifre </label>
<input type="sifre" name="sifre"/><br/>
<input type="submit" class="button" value="Kayıt Ol" />
<span class='msg'><?php echo $mesaj; ?></span>
</form>

3. Adım

Bu adımda veritabanı bağlantımızı yapıyoruz. Server, Usernamei Password, Database alanlarını kendinize göre düzenleyin. $url değişkenindeki web sitenizin adresini eklemeyi unutmayın.

baglanti.php
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'kullaniciadi');
define('DB_PASSWORD', 'sifre');
define('DB_DATABASE', 'veritabani');
$baglanti = @mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
$url='http://www.example.com/email_aktivasyonu/';
?>

4. Adım

Bu adımda yeni kullanıcı kaydı ve aktivasyon emailin şablonunu oluşturuyoruz. Email adresinin formatını $regex ile kontrol ediyoruz ve şifre alanını md5 şifreliyoruz.

index.php
<?php
include "baglanti.php";
$mesaj='';
if(!empty($_POST['email']) && isset($_POST['email']) &&  !empty($_POST['sifre']) &&  isset($_POST['sifre']) )
{
    $email=mysqli_real_escape_string($baglanti,$_POST['email']);
    $sifre=mysqli_real_escape_string($baglanti,$_POST['sifre']);
    $regex = '/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$/';
    if(preg_match($regex, $email))
    { 
        $sifre=md5($sifre);
        $aktivasyon=md5($email.time()); 
        $kontrol=mysqli_query($baglanti,"SELECT id FROM uyeler WHERE email='$email'");
        if(mysqli_num_rows($kontrol) < 1)
        {
            mysqli_query($baglanti,"INSERT INTO uyeler(email,sifre,aktivasyon) VALUES('$email','$sifre','$aktivasyon')");
            include 'smtp/mail_gonder.php';
            $to=$email;
            $subject="Email Doğrulama";
            $body='Merhaba, <br/>Üyeliğinizin tamamlanması için lütfen email adresinizi aşağıdaki linke tıklayarak doğrulayınız.<br/> <a href="'.$url.'aktivasyon/'.$aktivasyon.'">'.$url.'aktivasyon/'.$aktivasyon.'</a>';
            mail_gonder($to,$subject,$body);
            $mesaj= "Kayıt başarılı, lütfen email adresinizi doğrulayınız."; 
        }
        else
        {
            $mesaj= 'Bu email adresi zaten daha önce kullanılmış.'; 
        }
    }
    else
    {
        $mesaj = 'Girmiş olduğunuz email adresi geçerli değil.'; 
    }
}
?>

5. Adım

Bu adımda mail_gonder fonskiyonu içerisindeki SMTP ayarlarını yapıyoruz. İstereniz kendi host bilgilerinizi isterseniz gmail veya outlook'tan almış olduğunuz mail adresinizin SMTP bilgilerini girebilirsiniz.

mail_gonder.php
<?php
function mail_gonder($to,$subject,$body)
{
require 'class.phpmailer.php';
$from       = "info@example.com";
$mail       = new PHPMailer();
$mail->IsSMTP(true);            
$mail->IsHTML(true);
$mail->SMTPAuth   = true;                  
$mail->Host       = "tls://smtp.example.com"; 
$mail->Port       =  465;                   
$mail->Username   = "SMTP_Username";  
$mail->Password   = "SMTP_Password";  
$mail->SetFrom($from, 'From Name');
$mail->AddReplyTo($from,'From Name');
$mail->Subject    = $subject;
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, $to);
$mail->Send(); 
}
?>

6. Adım

aktivasyon.php
<?php
include 'baglanti.php';
$mesaj='';
if(!empty($_GET['kod']) && isset($_GET['kod']))
{
    $kod=mysqli_real_escape_string($baglanti,$_GET['kod']);
    $aktivasyon_kontrol=mysqli_query($baglanti,"SELECT id FROM uyeler WHERE aktivasyon='$kod'");
    if(mysqli_num_rows($aktivasyon_kontrol) > 0)
    {
        $kontrol=mysqli_query($baglanti,"SELECT id FROM uyeler WHERE aktivasyon='$kod' and durum='0'");
        
        if(mysqli_num_rows($kontrol)==1)
        {
            mysqli_query($baglanti,"UPDATE uyeler SET durum='1' WHERE aktivasyon='$kod'");
            $mesaj="Hesabınız Aktif Edildi."; 
        }
        else
        {
            $mesaj ="Hesabınız daha önce aktif edilmiş. Tekrar işlem yapmanıza gerek yok.";
        }
    }
    else
    {
    $mesaj ="Aktivasyon kodu yanlış.";
    }

}
echo $mesaj;
?>

Son Adım

Bu adımda .htaccess dosyamızı düzenliyoruz ve email'den aktivasyon linkine tıklayan kullanıcının yönlendirmesini yapıyoruz.

.htaccess
RewriteEngine On
RewriteRule ^aktivasyon/([a-zA-Z0-9_-]+)$ aktivasyon.php?kod=$1
RewriteRule ^aktivasyon/([a-zA-Z0-9_-]+)/$ aktivasyon.php?kod=$1



Emre Yüz
Emre YÜZ
Multidisipliner Full-Stack Web Geliştirici/Tasarımcı, Veri
Mimarı ve Analist.

Multidisipliner Full-Stack Web Geliştirici/Tasarımcı, Veri Mimarı ve Analist.



HAKKIMDA

Emre YÜZ

Multidisipliner Full-Stack Web Geliştirici/Tasarımcı, Veri Mimarı ve Analist.

Son Yazılar

insta ❤️ feed


    Reklam