Merhaba arkadaşlar account sistemini öğrenmek kolaydır fakat kimse kimseye öğretmez:)

Bu Account Sistemini Az Buçuk Kurcaladım Kullanılır Hale Soktum :)
Bilenler Vardır ama ben hiçbişey bilmiyormuşsunuz gibi davranıcam k.bakmayınız

56b İçindir

ve Başlıyalım

Öncelikle Local'de Kurulumu Anlatıcam Host PC'nizdede Aynısını Yaparsınız

Local'de php mysql phpymadmin tarzı programların çalışması için bazı programlar yüklemeniz gerekmektedir.Ben size appserv 2.5.7'de anlatacağım

Buyrun Link : Tıklayın

Kurulumda dikkat edilmesi gereken yer root password soracak ordaki şifreyi sallamayın sakın :) işimize yarayacak

Şimdi programımız indi kuruldu tarayıcımıza https://localhost yazıyoruz önümüze bi sayfa geliyor ve phpMyAdmin Database Manager Version 2.9.0.2 yazan linki tıklıyoruz
giriş yapıyoruz Sağ tarafta Language var isterseniz ordan değiştirebilirsiniz
sol tarafta create new database var oraya uoacc yazıyoruz ve create butonuna basıyoruz ve uoacc adlı database'imiz acılıyor
açıldıktan sonra sağ taraftaki mor arka planlı yerden uoacc(0) yazanı seçiyoruz
önümüze bi sayfa geliyor uoacc hakkında ordan yukarıda import var oraya geliyoruz ve aşağıda verdiğim sql dosyasını kaydettikten sonra ordan importlayacağız



CREATE TABLE `accounts` (
  `id` int(11) NOT NULL auto_increment,
  `login` varchar(26) default NULL,
  `password` decimal(26,0) default NULL,
  `email` varchar(60) default NULL,
  `plevel` varchar(26) default 'player',
  `status` int(11) default '0',
  PRIMARY KEY  (`id`)
);


Arkadaşlar yukarıdaki kodu kopyalayın bir metin belgesine yapıştırın sonra o metin belgesinin uzantısını .sql yapın uoacc.sql örneğin

yaptıktan sonra import sayfasına geri bakalım
orda Location of the text file gözat ( Browse ) diyoruz ve uoacc.sql dosyasını seçiyoruz.Veritabanı üzerindeki tablomuz oluştu
şimdi aşağıda verdiğim index.php üzerinde ayarlar yapmalıyızki çalışsın


<html>
<head>
<title>Sunucunuzun Adı</title>
<style>
body {
    color: #003300;
    font-family: Verdana, Arial, Serif;
    font-size: 10pt;
}
input {
    border: 1px solid #003300;
    color: #003300;
    background: #DDDDDD; 
    font-family: Verdana, Arial, Serif;
    font-size: 10pt;
}
tr {
    font-size: 10pt;
}
a:link {
    text-decoration: none;
    color: #003300;
}
a:visited {
    text-decoration: none;
    color: #003300;
}
a:active {
    text-decoration: none;
    color: #003300;
}
a:hover {
    text-decoration: none;
    color: #FF6600;
}
</style>
</head>
<body>
<div align="center">
<?php
$mysql_user = "root";
$mysql_pass = "kurulumda girdiğniz şifre";
$mysql_database = "uoacc";
$mysql_host = "localhost";;
?>
<FORM METHOD=POST ACTION="<?php echo $_SERVER['PHP_SELF']; ?>?act=register">
<table cellspacing=0 border=0>
<tr>
<td colspan=2 style="border: 1px solid #003300; background: #DDDDDD;"><CENTER><A HREF="index.php">XXXX Ultima Online Shard</A></CENTER></td>
</tr>
<tr>
<td style="border-left: 1px solid #003300">&nbsp;Account Adi</td>
<td style="border-right: 1px solid #003300"><INPUT TYPE="text" NAME="login"&nbsp;></td>
</tr>
<tr>
<td style="border-left: 1px solid #003300">&nbsp;Sifre:</td>
<td style="border-right: 1px solid #003300"><INPUT TYPE="password" NAME="senha1">&nbsp;</td>
</tr>
<tr>
<td style="border-left: 1px solid #003300">&nbsp;Sifre Tekrar:&nbsp;</td>
<td style="border-right: 1px solid #003300"><INPUT TYPE="password" NAME="senha2">&nbsp;</td>
</tr>
<tr>
<td style="border-left: 1px solid #003300">&nbsp;Email Adresi:</td>
<td style="border-right: 1px solid #003300"><INPUT TYPE="text" NAME="email">&nbsp;</td>
</tr>
<tr>
<td style="border: 1px solid #003300; border-top: 0px;" colspan=2><CENTER><INPUT NAME="Kayit Ol" VALUE="Kayit Ol" TYPE="submit"></CENTER></td>
</tr>
</table>
</FORM>
<?php

if ($_GET['act'] == 'register')
{
    $conn = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
    mysql_select_db($mysql_database);
    $user = injection_koruma($_POST['login']);
    $pass1 = injection_koruma($_POST['senha1']);
    $pass2 = injection_koruma($_POST['senha2']);
    $email = injection_koruma($_POST['email']);
    if (araulan(Array($user,$pass1,$pass2,$email)) == true)
    {
        if ($pass1 == $pass2)
        {
            if (ereg("([0-9,a-z,A-Z])", $user))
            {
                if (ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email))
                {
                    $query = mysql_query("SELECT * FROM accounts WHERE login='$user'");
                    $num_rows = mysql_num_rows($query);
                    if ($num_rows == 0)
                    {
                        $query = mysql_query("SELECT * FROM accounts WHERE email='$email'");
                        $num_rows = mysql_num_rows($query);
                        if ($num_rows == 0)
                        {
                            $query = mysql_query("INSERT INTO accounts (login, password, email, status) VALUES ('$user','$pass1','$email','0')");
                            if (!$query)
                            {
                                echo ":: Sistemde Olusan Bir Ariza Nedeniyle Suanda Hesap Alimi Yapilamiyor ::";
                            }
                            else
                            {
                                echo ":: Accountunuz Basariyla Olusturuldu.Ilk Save'den Sonra Basariyla Giris Yapabilirsiniz ::";
                            }
                        }
                        else
                        {
                            echo ":: Bu Email Adresi Zaten Veritabaninda Kayitli ::";
                        }
                    }
                    else
                    {
                        echo ":: Bu Account Adresi Zaten Veritabaninda Kayitli ::";
                    }
                }
                else
                {
                    echo ":: Tanimlanamayan Mail Adresi ::";
                }
            }
            else
            {
                echo ":: Sadece Rakam (0-9) ve Harf Giriniz(a-z) ::";
            }
        }
        else
        {
            echo ":: Sifreniz Geçerli Degil::";
        }
    }
}

// Injection Harfleri Yasak
function injection_koruma($sql)
{
$sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
$sql = trim($sql);
$sql = strip_tags($sql);
$sql = addslashes($sql);
return $sql;
}

// Her Tarafi Doldurmusmu

function araulan($campos){
  foreach($campos as $c){
      if(empty($c)){
        echo ":: Tüm Bosluklari Doldurunuz ::<br>";
        return false;
      }else{
        return true;
      }
  }
}
?>
</div>
</body>
</html>


Verdiğim Kodu index.php şeklinde kaydediyoruz ve appserv'in klasorune Giriyoruz
C:/Appserv/www
bu klasor içinde kayit diye bi tane klasor acıyoruz ve kaydettiğimiz ve AYARLARI YAPTIĞIMIZ index.php adlı dosyayı kayit klasorunun içine yapıştırıyoruz
Test Etmek için
https://localhost/kayit
bunu tarayıcınıza yazıp kontrol edebilirsiniz

şimdi mysql ile çalıştığından biraz mysqllarıda kurcalamak lazım :)

sphere.ini'yi açıyoruz
ordaki mysql ayarlarını buluyoruz


//	MySql configuration.
MYSQL=1
MySqlHost=Localhost
MySqlUser=root
MySqlPassword=kurulumda girdiğiniz şifre
MySqlDatabase=uoacc
orayı yukarıdaki gibi değiştiriyoruz
Sonra
sphere_serv_triggers.scp'yi açıyoruz



[FUNCTION f_onserver_start]     // Server acildigi zaman devreye giren fonksiyon
DB.CONNECT
if (<DB.CONNECTED>)
serv.log MYSQL Baglantisi : Basarili
else
serv.log MYSQL Baglantisi : Basarisiz
endif

[FUNCTION f_onserver_save]      // Save geldigi zaman devreye giren fonksiyon
serv.f_acc_update

Yukarıdaki Alanları Değiştiriyoruz

son olarak sunucumuza f_acc_update function'unu eklemek kaldı


[function f_acc_update]
if ( <DB.connected> )
    DB.QUERY "SELECT * FROM accounts WHERE status='0'"
    if (<DB.ROW.NUMROWS> > 0)
        for R 0 <eval <DB.ROW.NUMROWS>-1>
            serv.account add <DB.ROW.<eval <LOCAL.R>>.login> <eval <DB.ROW.<eval <LOCAL.R>>.password>>
            DB.EXECUTE "UPDATE accounts SET status='1' WHERE login='<DB.ROW.<eval <LOCAL.R>>.login>'"
            serv.log Account Kayitlari : <eval <LOCAL.R>> <DB.ROW.<eval <LOCAL.R>>.login> Adli Account Olusturuldu
        end
    endif
endif


Herkese İyi Çalışmalar
Eline sağlık..
Teşekkür Ederim
-Quardrux : Merhaba arkadaşlar account sistemini öğrenmek kolaydır fakat kimse kimseye öğretmez:)

Bu Account Sistemini Az Buçuk Kurcaladım Kullanılır Hale Soktum :)
Bilenler Vardır ama ben hiçbişey bilmiyormuşsunuz gibi davranıcam k.bakmayınız

56b İçindir

ve Başlıyalım

Öncelikle Local'de Kurulumu Anlatıcam Host PC'nizdede Aynısını Yaparsınız

Local'de php mysql phpymadmin tarzı programların çalışması için bazı programlar yüklemeniz gerekmektedir.Ben size appserv 2.5.7'de anlatacağım

Buyrun Link : Tıklayın

Kurulumda dikkat edilmesi gereken yer root password soracak ordaki şifreyi sallamayın sakın :) işimize yarayacak

Şimdi programımız indi kuruldu tarayıcımıza https://localhost yazıyoruz önümüze bi sayfa geliyor ve phpMyAdmin Database Manager Version 2.9.0.2 yazan linki tıklıyoruz
giriş yapıyoruz Sağ tarafta Language var isterseniz ordan değiştirebilirsiniz
sol tarafta create new database var oraya uoacc yazıyoruz ve create butonuna basıyoruz ve uoacc adlı database'imiz acılıyor
açıldıktan sonra sağ taraftaki mor arka planlı yerden uoacc(0) yazanı seçiyoruz
önümüze bi sayfa geliyor uoacc hakkında ordan yukarıda import var oraya geliyoruz ve aşağıda verdiğim sql dosyasını kaydettikten sonra ordan importlayacağız



CREATE TABLE `accounts` (
  `id` int(11) NOT NULL auto_increment,
  `login` varchar(26) default NULL,
  `password` decimal(26,0) default NULL,
  `email` varchar(60) default NULL,
  `plevel` varchar(26) default 'player',
  `status` int(11) default '0',
  PRIMARY KEY  (`id`)
);


Arkadaşlar yukarıdaki kodu kopyalayın bir metin belgesine yapıştırın sonra o metin belgesinin uzantısını .sql yapın uoacc.sql örneğin

yaptıktan sonra import sayfasına geri bakalım
orda Location of the text file gözat ( Browse ) diyoruz ve uoacc.sql dosyasını seçiyoruz.Veritabanı üzerindeki tablomuz oluştu
şimdi aşağıda verdiğim index.php üzerinde ayarlar yapmalıyızki çalışsın


<html>
<head>
<title>Sunucunuzun Adı</title>
<style>
body {
    color: #003300;
    font-family: Verdana, Arial, Serif;
    font-size: 10pt;
}
input {
    border: 1px solid #003300;
    color: #003300;
    background: #DDDDDD; 
    font-family: Verdana, Arial, Serif;
    font-size: 10pt;
}
tr {
    font-size: 10pt;
}
a:link {
    text-decoration: none;
    color: #003300;
}
a:visited {
    text-decoration: none;
    color: #003300;
}
a:active {
    text-decoration: none;
    color: #003300;
}
a:hover {
    text-decoration: none;
    color: #FF6600;
}
</style>
</head>
<body>
<div align="center">
<?php
$mysql_user = "root";
$mysql_pass = "kurulumda girdiğniz şifre";
$mysql_database = "uoacc";
$mysql_host = "localhost";;
?>
<FORM METHOD=POST ACTION="<?php echo $_SERVER['PHP_SELF']; ?>?act=register">
<table cellspacing=0 border=0>
<tr>
<td colspan=2 style="border: 1px solid #003300; background: #DDDDDD;"><CENTER><A HREF="index.php">XXXX Ultima Online Shard</A></CENTER></td>
</tr>
<tr>
<td style="border-left: 1px solid #003300">&nbsp;Account Adi</td>
<td style="border-right: 1px solid #003300"><INPUT TYPE="text" NAME="login"&nbsp;></td>
</tr>
<tr>
<td style="border-left: 1px solid #003300">&nbsp;Sifre:</td>
<td style="border-right: 1px solid #003300"><INPUT TYPE="password" NAME="senha1">&nbsp;</td>
</tr>
<tr>
<td style="border-left: 1px solid #003300">&nbsp;Sifre Tekrar:&nbsp;</td>
<td style="border-right: 1px solid #003300"><INPUT TYPE="password" NAME="senha2">&nbsp;</td>
</tr>
<tr>
<td style="border-left: 1px solid #003300">&nbsp;Email Adresi:</td>
<td style="border-right: 1px solid #003300"><INPUT TYPE="text" NAME="email">&nbsp;</td>
</tr>
<tr>
<td style="border: 1px solid #003300; border-top: 0px;" colspan=2><CENTER><INPUT NAME="Kayit Ol" VALUE="Kayit Ol" TYPE="submit"></CENTER></td>
</tr>
</table>
</FORM>
<?php

if ($_GET['act'] == 'register')
{
    $conn = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
    mysql_select_db($mysql_database);
    $user = injection_koruma($_POST['login']);
    $pass1 = injection_koruma($_POST['senha1']);
    $pass2 = injection_koruma($_POST['senha2']);
    $email = injection_koruma($_POST['email']);
    if (araulan(Array($user,$pass1,$pass2,$email)) == true)
    {
        if ($pass1 == $pass2)
        {
            if (ereg("([0-9,a-z,A-Z])", $user))
            {
                if (ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email))
                {
                    $query = mysql_query("SELECT * FROM accounts WHERE login='$user'");
                    $num_rows = mysql_num_rows($query);
                    if ($num_rows == 0)
                    {
                        $query = mysql_query("SELECT * FROM accounts WHERE email='$email'");
                        $num_rows = mysql_num_rows($query);
                        if ($num_rows == 0)
                        {
                            $query = mysql_query("INSERT INTO accounts (login, password, email, status) VALUES ('$user','$pass1','$email','0')");
                            if (!$query)
                            {
                                echo ":: Sistemde Olusan Bir Ariza Nedeniyle Suanda Hesap Alimi Yapilamiyor ::";
                            }
                            else
                            {
                                echo ":: Accountunuz Basariyla Olusturuldu.Ilk Save'den Sonra Basariyla Giris Yapabilirsiniz ::";
                            }
                        }
                        else
                        {
                            echo ":: Bu Email Adresi Zaten Veritabaninda Kayitli ::";
                        }
                    }
                    else
                    {
                        echo ":: Bu Account Adresi Zaten Veritabaninda Kayitli ::";
                    }
                }
                else
                {
                    echo ":: Tanimlanamayan Mail Adresi ::";
                }
            }
            else
            {
                echo ":: Sadece Rakam (0-9) ve Harf Giriniz(a-z) ::";
            }
        }
        else
        {
            echo ":: Sifreniz Geçerli Degil::";
        }
    }
}

// Injection Harfleri Yasak
function injection_koruma($sql)
{
$sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
$sql = trim($sql);
$sql = strip_tags($sql);
$sql = addslashes($sql);
return $sql;
}

// Her Tarafi Doldurmusmu

function araulan($campos){
  foreach($campos as $c){
      if(empty($c)){
        echo ":: Tüm Bosluklari Doldurunuz ::<br>";
        return false;
      }else{
        return true;
      }
  }
}
?>
</div>
</body>
</html>


Verdiğim Kodu index.php şeklinde kaydediyoruz ve appserv'in klasorune Giriyoruz
C:/Appserv/www
bu klasor içinde kayit diye bi tane klasor acıyoruz ve kaydettiğimiz ve AYARLARI YAPTIĞIMIZ index.php adlı dosyayı kayit klasorunun içine yapıştırıyoruz
Test Etmek için
https://localhost/kayit
bunu tarayıcınıza yazıp kontrol edebilirsiniz

şimdi mysql ile çalıştığından biraz mysqllarıda kurcalamak lazım :)

sphere.ini'yi açıyoruz
ordaki mysql ayarlarını buluyoruz


//	MySql configuration.
MYSQL=1
MySqlHost=Localhost
MySqlUser=root
MySqlPassword=kurulumda girdiğiniz şifre
MySqlDatabase=uoacc
orayı yukarıdaki gibi değiştiriyoruz
Sonra
sphere_serv_triggers.scp'yi açıyoruz



[FUNCTION f_onserver_start]     // Server acildigi zaman devreye giren fonksiyon
DB.CONNECT
if (<DB.CONNECTED>)
serv.log MYSQL Baglantisi : Basarili
else
serv.log MYSQL Baglantisi : Basarisiz
endif

[FUNCTION f_onserver_save]      // Save geldigi zaman devreye giren fonksiyon
serv.f_acc_update

Yukarıdaki Alanları Değiştiriyoruz

son olarak sunucumuza f_acc_update function'unu eklemek kaldı


[function f_acc_update]
if ( <DB.connected> )
    DB.QUERY "SELECT * FROM accounts WHERE status='0'"
    if (<DB.ROW.NUMROWS> > 0)
        for R 0 <eval <DB.ROW.NUMROWS>-1>
            serv.account add <DB.ROW.<eval <LOCAL.R>>.login> <eval <DB.ROW.<eval <LOCAL.R>>.password>>
            DB.EXECUTE "UPDATE accounts SET status='1' WHERE login='<DB.ROW.<eval <LOCAL.R>>.login>'"
            serv.log Account Kayitlari : <eval <LOCAL.R>> <DB.ROW.<eval <LOCAL.R>>.login> Adli Account Olusturuldu
        end
    endif
endif


Herkese İyi Çalışmalar
Merhaba arkadaşım hereşeyi işyi güzel anlatmışsın teşekkür ederiz fakat benim burda göremediğim bir eksiklik var gibi sanki bu kullanıcıyı yaratıyor fakat player acc şi,fresini değiştirmek istediğinde bunu nasıl yapacanı anlatmamışsın bu büyük bir eksiklik gibi geldi benim açımdan ama diğer türlü anlatımın iyi.....
Hımm Haklısın :)
bak orası eksik işte
geliştirilebilir bi sistem bende geliştirdikçe yayınlamayı planlıyorum zaten
:)
Programi Kuruyorum Dedigin Yere giriyorum Kullanici adini ve şifremi yazıyorum Olmuyor :S Hata Diyor
Hatayı Yazarsan Yardımcı Olabilirim Nur-1
eline sağlık.
teşekkürler Nexima
şimdi birde pin eklemeyi düşünüyorum ve tabiki şifre değiştir :)
https://localhost böyle yapınca girmiyor :S
Appserv Sayfası mı Açılmıyor? Anlamadım ne demek istediği Zolly
Kardeş iyi anlatmışsın sağol şimdi tarayıcıma yazınca hiçbirşey açılmıyor
Kullanici Adi ve şifresi hata Diyor login olamiyorum :(
Peki bu account sisteminde açık bulunurmu ?
Öyle bir ihtimal varmıdır ?



Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.