// Db bağlantısı function db_baglanti() { $db_host = "localhost"; $db_kullanici = "root"; // Db kullanıcı adınız $db_sifre = ""; // Db şifreniz $db_adi = "uyelik"; // Db adınız
$baglanti = mysql_connect($db_host, $db_kullanici, $db_sifre); mysql_select_db($db_adi, $baglanti); if(mysql_errno()) { echo 'Veritabanına bağlanılamıyor ...'; exit; } }
// Rastgele sayı Oluştur. function rastgelesayi() { $salt = "abchefghjkmnpqrstuvwxyz0123456789"; srand((double)microtime()*1000000); $i = 0; while ($i <= 7) { $num = rand() % 33; $tmp = substr($salt, $num, 1); $pass = $pass . $tmp; $i++; } return $pass; }
?><html>
<head>
<title>Kayıt ol</title>
<style type="text/css">
table {
font-family: Arial;
font-size: 9pt;
}
</style>
</head>
<body>
<form action="uyepostala.php" method="post">
<table border="0">
<tr>
<td>Ad Soyad: </td>
<td><input type="text" name="ad"> *</td>
</tr>
<tr>
<td>Kullanıcı adı: </td>
<td><input type="text" name="kullanici"> *</td>
</tr>
<tr>
<td>Şifre: </td>
<td><input type="password" name="sifre"> *</td>
</tr>
<tr>
<td>Şifre tekrar: </td>
<td><input type="password" name="sifre2"> *</td>
</tr>
<tr>
<td>Email: </td>
<td><input type="text" name="email"> *</td>
</tr>
<tr>
<td>Hakkında: </td>
<td><textarea name="hakkinda" rows="10" cols="23"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" onclick="javascript:this.form.submit(); this.disabled=true; this.value='Gönderiliyor...';"> </td>
</tr>
</table>
</body>
</html>
Kullanıcı bu formu doldurup gönderdiğinde uyepostala.php sayfasına post ettireceğiz.Uyepostala.php sayfası kullanıcının girdiği bilgileri veritabanına kaydedip, kullanıcıya hesabını etkinleştirmesi için mail göndermesini sağlayacak olan sayfadır.Gerekli açıklamalar kod içinde.
<?php
include ("fonksiyonlar.php");
// Bağlantı oluştur.
db_baglanti();
// Formdan verileri alalım.
$ad = stripslashes($_POST['ad']);
$kullanici = stripslashes($_POST['kullanici']);
$sifre = stripslashes($_POST['sifre']);
$sifre2 = stripslashes($_POST['sifre2']);
$email = stripslashes($_POST['email']);
$hakkinda = stripslashes($_POST['hakkinda']);
// Form kontrolleri
if((!$ad) || (!$kullanici) || (!$sifre) || (!$sifre2) || (!$email))
{
echo '<font color="red">Gerekli bir bölümü boş bıraktınız.</font>';
if(!$ad)
{
echo '<font color="red">Ad soyadı boş bıraktınız.</font>';
}
if(!$kullanici)
{
echo '<font color="red">Kullanıcı adını boş bıraktınız.</font>';
}
if(!$sifre)
{
echo '<font color="red">Şifre alanını boş bıraktınız.</font>';
}
if(!$sifre2)
{
echo '<font color="red">Şifrenizi tekrar yazmadınız.</font>';
}
if($sifre != $sifre2)
{
echo '<font color="red">Şifreler uyuşmuyor.</font>';
}
if(!$email)
{
echo '<font color="red">Emaili alanını boş bıraktınız.</font>';
}
include("kayit.html");
exit;
}
// Yazılan kullanıcı adı veya email daha önce başkası tarafından alınmış mı?
$email_kontrol = mysql_query("select email from kullanicilar where email='$email'");
$kullanici_kontrol = mysql_query("select kullanici from kullanicilar where kullanici='$kullanici'");
// Sonucu alalım
$email_kontrol2 = mysql_num_rows($email_kontrol);
$kullanici_kontrol2= mysql_num_rows($kullanici_kontrol);
if(($email_kontrol2 > 0) || ($kullanici_kontrol2 > 0))
{
echo '<font color="red">Hata oluştu.</font>';
if($email_kontrol2 > 0)
{
echo '<font color="red">Bu email adresi zaten kullanılıyor.</font>';
unset($email);
}
if($kullanici_kontrol2 > 0)
{
echo '<font color="red">Bu kullanıcı adı zaten kullanılıyor.</font>';
unset($kullanici);
}
include("kayit.html");
exit;
}
$rastgele_sayi = rastgelesayi();
$sifre2 = sha1($sifre);
// Girilen Bilgileri Dbye yazdırıyoruz.
$sql = "insert into kullanicilar (ad_soyad, kullanici, sifre, email, hakkinda, akod, kayit_tarih)
values('$ad', '$kullanici', '$sifre2', '$email', '$hakkinda', '$rastgele_sayi', now())";
$sql2 = mysql_query($sql);
// Dbye yazdırırken bir hata oluşursa;
if(!$sql2)
{
echo 'Bir hata oluştu.Lütfen daha sonra tekrar deneyin.';
}
else
{
$kullanici_id = mysql_insert_id();
// Kullanıcıya hesabını etkinleştirmesi için mail gönderiyoruz.
$konu = "Üyelik Onayı";
$mesaj = " Sayın $ad
Üyelik işleminizi tamamlamak için aşağıdaki linke tıklayın ya da adres çubuğuna kopyalayın.
http://www.domain.com/aktifle.php?id=$kullanici_id&akod=$rastgele_sayi
Giriş Bilgileriniz;
Kullanıcı adı: $kullanici
Şifre: $sifre
Teşekkürler.";
mail($email, $konu, $mesaj, "From: Domain.com<admin@domain.com>");
echo 'Kullanıcı bilgileriniz email adresinize gönderildi.Üyeliğizi onaylamak için lütfen email adresinizdeki
bağlantıya tıklayın.Aksi halde siteye giriş yapamazsınız .<br />';
echo 'Anasayfa için <a href="index.php">tıklayın</a>';
}
?>
Kullanıcıya maili de gönderdikten sonra hesabını aktifleştirmesi için gereken sayfayı yani aktifle.php sayfasını yapalım.
<?php
include ("fonksiyonlar.php");
db_baglanti();
// Urlden verileri al.
$kullanici_id = $_REQUEST['id']; $akod = $_REQUEST['akod'];
$sql = mysql_query("update kullanicilar SET aktiflik='1' where id='$kullanici_id' AND akod='$akod'");
$sql2 = mysql_query("select * from kullanicilar where id='$kullanici_id' AND akod='$akod' AND aktiflik='1'");
$kontrol = mysql_num_rows($sql2);
if(
$kontrol == 0) { echo 'Hesabınız etkinleştirilemedi'; } elseif($kontrol > 0) { echo 'Tebrikler üye olmayı başardınız.';
include(
"index.php");
}
?>Üyeliği aktifleştirdikten sonra kullanıcının giriş yapabilmesi için gereken formu yapalım.Yani anasayfayı yapalım.
<?php
@session_start();
// Giriş yapılmamışsa
if(!isset($_SESSION['kullanici']))
{
?>
<html>
<head>
<title>Giriş</title>
<style type="text/css">
table {
font-family: Arial;
font-size: 9pt;
}
</style>
</head>
<body>
<form action="giriskontrol.php" method="post">
<table border="0">
<tr>
<td>Kullanıcı:</td>
<td><input type="text" name="kullanici"></td>
</tr>
<tr>
<td>Şifre:</td>
<td><input type="password" name="sifre"></td>
</tr>
<tr>
<td></td>
<td><input type="submit"></td>
</tr>
<tr>
<td><a href="yeni_sifre.html">Şifremi Unuttum</a></td>
<tr>
<td><a href="kayit.html">Üye ol</a></td>
</tr>
</table>
</form>
</center>
</body>
</html>
<?php
}
// Giriş yapılmışsa
else
{
echo "Hoşgeldiniz, " . $_SESSION['kullanici']."<br><br>";
echo "Kullanıcı seviyeniz, " . $_SESSION['kullanici_seviye']."<br><b>Şu bölümleri görebilirsiniz.</b><br>";
// Kullanıcı seviyesi 0 ise
if($_SESSION['kullanici_seviye'] == 0)
{
echo 'HTML,ASP,PHP';
}
// Kullanıcı seviyesi 3 ise
if($_SESSION['kullanici_seviye'] == 3)
{
echo 'Asp.net,C#, Java';
}
echo '<br><br>Çıkış yapmak için <a href="cikis.php">tıklayın</a>';
}
?>
Kullanıcı adı ve parolasını kontrol edicek olan giriskontrol.php sayfası aynı zamanda kullanıcıya sessionları atayan sayfadır.
giriskontrol.php
<?php
@session_start();
include(
"fonksiyonlar.php");
db_baglanti();
// Formdan verileri alıyoruz.
$kullanici = addslashes($_POST['kullanici']);
$sifre = addslashes($_POST['sifre']);
// Form kontrolleri
if((!$kullanici) || (!$sifre))
{
echo '<font color="red">Lütfen tüm alanları doldurun.</font>';
include("index.php");
}
else
{
//Parolayı sha1 olarak alıyoruz.
$sifre2 = sha1($sifre);
// Şimdi kullanıcı adı,şifre, aktif mi? kontrolü
$sql = mysql_query("select * from kullanicilar where kullanici='$kullanici' and sifre='$sifre2' and aktiflik=' 1' ");
$sql2 = mysql_num_rows($sql);
if (
$sql2 > 0)
{
while($yaz = mysql_fetch_array($sql))
{
$_SESSION['kullanici'] = $kullanici;
// Veritabanından kullanıcı seviyesini alıp, sessiona kaydediyoruz.
$_SESSION['kullanici_seviye'] = $yaz['kullanici_seviye'];
header("Location: index.php");
}
}
else
{
echo '<font color="red">Kullanıcı adı veya parola yanlış.Yada hesabınızı aktifleştirmediniz !</font>';
}
}
?>
Kullanıcıların yeni bir şifre istemeleri için gereken formu yapalım.
yeni_sifre.html
<html>
<head>
<title>Şifremi Unuttum</title>
</head>
<body>
<form action="sifre_unuttum.php" method="post">
Email :<input type="text" name="email"><br />
<input type="submit">
</form>
</body>
</html>
yeni_sifre.html sayfasını karşılayacak olan sifre_unuttum.php sayfasını yapalım.
sifre_unuttum.php
<?php
include("fonksiyonlar.php");
db_baglanti();
$email = $_POST['email'];
if(!$email)
{
echo "Lütfen kayıt olurken girdiğiniz mail adresini giriniz.";
include ("yeni_sifre.html");
exit();
}
// Email adresini kontrol et.
$email_kontrol = mysql_query("select * from kullanicilar where email='$email'");
$email_kontrol2 = mysql_num_rows($email_kontrol);
if($email_kontrol2 == 0)
{
echo '<font color="red">Girdiğiniz email adresi kayıtlı değil.</font>';
unset($email);
include ("yeni_sifre.html");
exit();
}
// Rastgele sayı üret
$rastgele_sayi = rastgelesayi();
// Rastgele üretilen sayıyı sha1 yap.
$yeni_sifre = sha1($rastgele_sayi);
// Sha1 olan şifreyi dbye kaydet, normal şifreyi maille kullanıcıya gönder.
$sql = mysql_query("update kullanicilar set sifre='$yeni_sifre' where email='$email'");
$konu = "Şifre hatırlatma";
$mesaj = " Merhaba, bizden yeni şifre istemişsiniz.Buyrun
Yeni şifreniz: $rastgele_sayi
http://www.domain.com/
Teşekkürler."
;
mail($email, $konu, $mesaj, "From: Domain.com<admin@domain.com>");
echo
'Yeni şifreniz arzu ettiğiniz adrese gönderilmiştir.';
?>
Okuduğunuz için teşekkürler.Kalın sağlıcakla.
Dökümanı Yazan: Sinan Açıkal (treedy) ~ treedyx@hotmail.com