Asp.Net Üyelik Sistemi Ders 3 – Üye Profil Sayfası ve Profil Güncelleme

Asp.Net ile üyelik sistemi derslerimizin sonuncusuna geldik, önceki derslerimizde Üye Giriş ve Üye Olma, Şifremi Unuttum Sayfası konularını anlatmaya çalışmıştım. Şimdi üyelik sistemi son dersi Üye Profil Sayfası ve Profil Güncelleme konusuna başlayalım.
İlk olarak üye giriş sayfasından kullanıcı adı ve şifresini doğru giren kullanıcının bilgilerini görebileceği ve isterse düzenleyebileceği profil sayfasını hazırlayalım
aspnetuyeliksistemi7
gibi bir form oluşturmamız gerekli bunun için kodlarımız..:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Asp.Net Örnekleri, Asp.Net Dersleri, Asp.Net Uygulamları, www.AspNetOrnekleri.com </title>
</head>
<body>
    <form id="form1" runat="server">

        <asp:Label ID="lblbaslik" runat="server" Font-Size="X-Large" 
            Text="Üye Sayfasına Hoşgeldiniz...:"></asp:Label>
            <br />

            <table border="1" cellpadding="2" cellspacing="2" width="449">
                     <tr>
                         <td width="140">
                             <asp:Label ID="lbltuyeadi" runat="server" Text="Üye Adı"></asp:Label>
                         </td>
                         <td width="269">
                         <asp:Label ID="lbluyeadi" runat="server"></asp:Label>
                         </td>
                     </tr>
                     <tr>
                         <td>
                             <asp:Label ID="lbltsifre" runat="server" Text="Şifre"></asp:Label>
                         </td>
                         <td>
                            <asp:Label ID="lblsifre" runat="server"></asp:Label>
                         </td>
                     </tr>
                     <tr>
                         <td>
                             <asp:Label ID="lbltad" runat="server" Text="Ad"></asp:Label>
                         </td>
                         <td>
                              <asp:Label ID="lblad" runat="server"></asp:Label>
                         </td>
                     </tr>
                     <tr>
                         <td>
                             <asp:Label ID="lbltEmail" runat="server" Text="Email : "></asp:Label>
                         </td>
                         <td>
                            <asp:Label ID="lblEmail" runat="server"></asp:Label>
                         </td>
                     </tr>
                     <tr>
                         <td>
                             <asp:Label ID="lbltbilgi" runat="server" Text="Kısa Bilgi"></asp:Label>
                         </td>
                         <td>
                             <asp:Label ID="lblbilgi" runat="server"></asp:Label>
                         </td>
                     </tr>
                </table>
                 <br />
            <asp:HyperLink ID="hplprflduzenle" runat="server" 
                NavigateUrl="uyeduzenle.aspx">Profilini Düzenle</asp:HyperLink>
        &nbsp;<asp:LinkButton ID="lnkcikis" runat="server" onclick="lnkcikis_Click" >Çıkış</asp:LinkButton>
        </form>
</body>
</html>
<!-- Asp.Net Örnekleri, Asp.Net Dersleri, Asp.Net Uygulamları http://www.AspNetOrnekleri.com -->

Kullanıcı doğru üye adı ve şifre girerse sayfamızda kontrol edilecek uyan kayıt var ise yukarıdaki form içerisindeki alanlarda üye bilgileri görüntülenecek, formun altında bir bağlantı birde linkbutton var bunlardan birincisi üye profil bilgilerini düzenlemek için uyeduzenle.aspx sayfasına link için, diğeride çıkış işlemi için gerekli..
using System.Data;
using System.Data.OleDb;
namespace eklemelerinden sonra aşağıdaki kodları yazıyoruz..

protected void Page_Load(object sender, EventArgs e)
        {
            //*** www.aspnetornekleri.com ***//
            if (Convert.ToString(Session["uyeadi"]) == "")
            {
                Response.Redirect("uyegiris.aspx");
                Response.End();
            }
          bilgilerigetir();
        }
        protected void bilgilerigetir()
        {
            DataTable dt = null;
            DataSet ds = new DataSet();
            OleDbConnection db_baglanti;
            OleDbCommand db_komut;
            OleDbDataAdapter db_adapter = null;
            db_baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/uye.accdb"));
            db_baglanti.Open();
            string sorgu = "SELECT * FROM bilgiler WHERE uyeadi=@uyeadi";
            db_komut = new OleDbCommand(sorgu, db_baglanti);
            db_komut.Parameters.Add("@uyeadi", OleDbType.VarChar).Value = Session["uyeadi"];
//*** www.aspnetornekleri.com ***//
            db_adapter = new OleDbDataAdapter();
            db_adapter.SelectCommand = db_komut;
            db_adapter.Fill(ds);
            dt = ds.Tables[0];
            db_adapter = null;
            db_baglanti.Close();
            db_baglanti = null;
            if (dt.Rows.Count > 0)
            {
                this.lbluyeadi.Text = dt.Rows[0]["uyeadi"].ToString();
                this.lblsifre.Text = dt.Rows[0]["sifre"].ToString();
                this.lblad.Text = dt.Rows[0]["ad"].ToString();
                this.lblEmail.Text = dt.Rows[0]["mail"].ToString();
                this.lblbilgi.Text = dt.Rows[0]["bilgi"].ToString();
           }
        }
        protected void lnkcikis_Click(object sender, EventArgs e)
        {
            Session.Abandon();
            Response.Redirect("uyegiris.aspx");
        }

aspnetuyeliksistemi8
Üye giriş yaptı bilgilerini görüntüledi ama şifresini yada diğer bilgilerini değiştirmek istiyor ne yapmamız lazım , sayfanın altında yer lana biraz önce bahsettiğim uyeduzenle.aspx sayfasını hazırlayacağız..
aspnetuyeliksistemi9
form görüntümüz yukarıdaki gibi olacak bunun için gerekli olan kodlarımız..

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Asp.Net Örnekleri, Asp.Net Dersleri, Asp.Net Uygulamları, www.AspNetOrnekleri.com
    </title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Label ID="lblbaslik" runat="server" Font-Size="X-Large" Text="Bilgilerini Düzenle"></asp:Label>
    <br />
    <asp:Panel ID="pnlbilgiler" runat="server">
        <asp:Label ID="lbldurum" runat="server"></asp:Label>
        <table border="1" cellpadding="2" cellspacing="2" width="449">
            <tr>
                <td width="140">
                    <asp:Label ID="lblTitleUsername" runat="server" Text="Üye Adı"></asp:Label>
                </td>
                <td width="269">
                    <asp:Label ID="lbluyeadi" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="lblTitlePassword" runat="server" Text="Şifre:"></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="txtsifre" runat="server" TextMode="Password" Width="112px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="Reqsifre" runat="server" ControlToValidate="txtsifre"
                        ErrorMessage="* Gerekli"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="lblTitleConPassword" runat="server" Text="Şifre Tekrar:"></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="txtsifretekrar" runat="server" TextMode="Password" Width="112px"></asp:TextBox>
                    &nbsp;<asp:CompareValidator ID="regsifretekrar" runat="server" ControlToCompare="txtsifre"
                        ControlToValidate="txtsifretekrar" ErrorMessage="* Şifreler Uyuşmuyor"></asp:CompareValidator>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="lblTitleName" runat="server" Text="Adınız:"></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="txtad" runat="server" Width="191px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="Reqad" runat="server" ControlToValidate="txtad" Display="Dynamic"
                        ErrorMessage="* Gerekli"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="lblTitleEmail" runat="server" Text="Email : "></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="ReqEmail" runat="server" ControlToValidate="txtEmail"
                        Display="Dynamic" ErrorMessage="* Gerekli"></asp:RequiredFieldValidator>
                    &nbsp;<asp:RegularExpressionValidator ID="RegEmail" runat="server" ErrorMessage="* Geçersiz Email"
                        ControlToValidate="txtEmail" Display="Dynamic" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="lblCountry" runat="server" Text="Kısa Bilgi"></asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="txtbilgi" runat="server" Width="190px" Height="63px" TextMode="MultiLine"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="Reqbilgi" runat="server" ControlToValidate="txtbilgi"
                        ErrorMessage="* Gerekli"></asp:RequiredFieldValidator>
                </td>
            </tr>
        </table>
        <br />
        <asp:Button ID="btnguncelle" runat="server" Text="Güncelle" 
            Style="height: 26px" onclick="btnguncelle_Click" />
        &nbsp;
    </asp:Panel>
    <asp:Panel ID="pnlsonuc" runat="server">
        <asp:Label ID="lblFinish" runat="server" Text="Bilgileriniz Güncellendi"></asp:Label>
        <br />
        <br />
        <asp:HyperLink ID="hplLogin" runat="server" NavigateUrl="~/uye.aspx">Üye Ana Sayfa</asp:HyperLink>
    </asp:Panel>
    </form>
</body>
</html>
<!-- Asp.Net Örnekleri, Asp.Net Dersleri, Asp.Net Uygulamları http://www.AspNetOrnekleri.com -->

aspnetuyeliksistemi10
Üye istediği bilgileri düzenledi Güncelle butona bastı şimdi kod sayfamızı yazıyoruz, yine
using System.Data;
using System.Data.OleDb;
namespace lerini eklemeyi unutmuyoruz..

  protected void Page_Load(object sender, EventArgs e)
        {
           //'*** www.aspnetornekleri.com ***//
            if (Convert.ToString(Session["uyeadi"]) == "")
            {
                Response.Redirect("uyegiris.aspx");
                Response.End();
            }

            this.pnlbilgiler.Visible = true;
            this.pnlsonuc.Visible = false;

            if (!Page.IsPostBack)
            {
                bilgilerigoster();
            }
        }
        protected void bilgilerigoster()
        {
            DataTable dt = null;
            DataSet ds = new DataSet();
           //'*** www.aspnetornekleri.com ***//
            OleDbConnection db_baglanti;
            OleDbCommand db_komut;
            OleDbDataAdapter db_adapter = null;
            OleDbDataReader db_reader = null;
            db_baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/uye.accdb"));
            db_baglanti.Open();
            string sorgu = "SELECT * FROM bilgiler WHERE uyeadi=@uyeadi";
            db_komut = new OleDbCommand(sorgu, db_baglanti);
            db_komut.Parameters.Add("@uyeadi", OleDbType.VarChar).Value = Session["uyeadi"];
            db_reader =db_komut.ExecuteReader();
            if (db_reader.HasRows)
            {
                db_reader.Read();
                this.lbluyeadi.Text =db_reader["uyeadi"].ToString();
                this.txtad.Text = db_reader["ad"].ToString();
                this.txtEmail.Text = db_reader["mail"].ToString();
                this.txtbilgi.Text = db_reader["bilgi"].ToString();
            }
            db_reader.Close();
            db_baglanti.Close();
            db_baglanti = null;
        }

        protected void btnguncelle_Click(object sender, EventArgs e)
        {
            OleDbConnection db_baglanti = null;
            OleDbCommand db_komut = null;
            OleDbDataReader dtReader = null;
            string deneme = Session["uyeadi"].ToString();
            db_baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/uye.accdb"));
            db_baglanti.Open();
            string sorgu = "SELECT * FROM bilgiler WHERE mail=@mail and uyeadi<>@uyeadi";
            db_komut = new OleDbCommand(sorgu, db_baglanti);
            db_komut.Parameters.Add("@mail", OleDbType.VarChar).Value = this.txtEmail.Text;
            db_komut.Parameters.Add("@uyeadi", OleDbType.VarChar).Value = Session["uyeadi"].ToString();
            dtReader = db_komut.ExecuteReader();
            if (dtReader.HasRows)
            {
                this.lbldurum.ForeColor = System.Drawing.Color.Red;
                this.lbldurum.Text = "Mail Adresi zaten var!!!";
            }
            //'*** www.aspnetornekleri.com ***//
            string sorgu1 = "Update bilgiler set sifre=@sifre,ad=@ad,mail=@mail,bilgi=@bilgi where uyeadi=@uyeadi";
           db_komut = new OleDbCommand(sorgu1, db_baglanti);
            db_komut.Parameters.Add("@sifre", OleDbType.VarChar).Value = this.txtsifre.Text;
            db_komut.Parameters.Add("@ad", OleDbType.VarChar).Value = this.txtad.Text;
            db_komut.Parameters.Add("@mail", OleDbType.VarChar).Value = this.txtEmail.Text;
            db_komut.Parameters.Add("@bilgi", OleDbType.VarChar).Value = this.txtbilgi.Text;
            db_komut.Parameters.Add("@uyeadi", OleDbType.VarChar).Value = Session["uyeadi"];
            db_komut.ExecuteNonQuery();
            db_baglanti.Close();
            db_baglanti = null;
            this.pnlbilgiler.Visible = false;
            this.pnlsonuc.Visible = true;
        }

Asp.Net ile üyelik sistemini bitirmiş oluyoruz. Projenin çalışan halini buradanindirebilirsiniz…
Asp.Net Üyelik Sistemi Ders 1 – Üye Giriş ve Üye Olma
Asp.Net Üyelik Sistemi Ders 2 – Şifremi Unuttum Sayfası
Asp.Net Üyelik Sistemi Ders 3 – Üye Profil Sayfası ve Profil Güncelleme

You may also like...

Subscribe
Bildir
guest
39 Yorum
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
ekrem yiğiter

hocam çalıştırdığımda oledbexception hatası alıyorum. veri tabanını mdb şeklinde 4.0 ile değiştirdim ondan olabilir mi?

ekrem yiğiter

hocam çalıştırdığımda oledbexception hatası alıyorum. veri tabanını mdb şeklinde 4.0 ile değiştirdim ondan olabilir mi?

BilisimOgretmeni

bende değiştirdim ama sorun yok başka bir yerde değişiklik yaptınız mı acaba?

uyegiris sayfasında
Session[“uyeadi”] = this.txtuyeadi.Text;
Response.Redirect(“uye.aspx”); olan satırı KullaniciAdi olarak değiştirdiniz mi

hasandanacı

varsayılan parametre değeri yok
db_adapter.Fill(ds) hata yeri

BilisimOgretmeni

konu sonundaki uygulamayı indirip test ettiniz mi? bir problem olmaması lazım

hasan

ha pardon yeni farketim. hocam accees veri tabanı ile profil resmi oluşturma yolu anlatılan konularda varmı?

BilisimOgretmeni

🙂 yok ama ekleyebiliriz…

hasandanacı

hocam benimfinalödevim var mekatronik mühendisi2 sınıf karabük danışmam gereken bir kaç şey daha var numaramı versem size ulaşabilmekiçin doğrudan(gene sıkıntı yarattı.

BilisimOgretmeni

http://www.aspnetornekleri.com/iletisim adresinden sorunu yazabilirsiniz…

Alkan

sql server veritabanının kullanıldığı örnekleri de eklerseniz çok memnun oluruz

hasanusta

Paylaşımınız için çok teşekkürler, esen kalın.

BilisimOgretmeni

ben teşekkür ederim iyi çalışmalar

alican

Abi biz OledbConnection , OleDbCommand , OleDbDataReader kullanıyoruz sen çok farklı şeyler kullanmışsın onları nasıl düzenleyebilirim? Böyle olması bana karşı anlaşılmaz kılıyor ..

BilisimOgretmeni

bu projede de o komutlar var zaten başka bir şey yok, hangi komutu anlamadığınızı yazarsanız açıklamaya çalışırım

Pilikli

İndirdim, çalıştırdığımda böyle bir hata alıyorum. Nedeni nedir hocam?

BilisimOgretmeni

projede herhangi bir değişiklik yaptınız mı? ismin de vs.. şimdi indirdim bi sorun yok

zeynel

Merhabalar. Dostum bunun indirme linklerinide eklermisin?

BilisimOgretmeni

merhaba konu sonunda indirme linki mevcut

Musa

Pilikli arkadasın aldıgı hatanın aynısını alıyorum ve hic bir dosya ismiyle oynamadım hocam ?

kadir ince

merhaba hocam sizce hatam ne olabilir? yardımcı olursanız sevinirim teşekkürler.

atilla

Üye girişi yaptıktan sonra o üyenin diğer sayfalara gecis yapıldığında üyenin ismini nasıl tasiyabiliriz

murat ALTUNOK

hatasını nasıl çözebilirim

Aykut

Merhaba; bu şekilde bir düzenleme yaptım, fakat benim projemde üye resmi’de mevcut, düzenle dediğimde üye fotoğrafını yeniden seçmezse eski fotoğrafı siliniyor, bunu nasıl engelleyebilirim ? yani üye fotoğrafını fileupload’tan seçmediği sürece veri tabanında eski fotoğraf kaydı kalsın istiyorum

örnek kodlarım:

string resimadi = “”;

string uzanti = “”;

if (fuResim.HasFile)

{

uzanti = Path.GetExtension(fuResim.PostedFile.FileName);

resimadi = Ayarlar.UrlSeo(TbBaslik.Text) + DateTime.Now.Day + uzanti;

fuResim.SaveAs(Server.MapPath(“../BlogResim/sahte” + uzanti));

int Donusturme = 1000;

SqlCommand cmd = new SqlCommand(“Update Blog set BlogBaslik=@BlogBaslik, BlogYazi=@BlogYazi, BlogResmi=@BlogResmi, Tarih=@Tarih Where BlogId=” + BlogId, baglanti);

cmd.Parameters.AddWithValue(“BlogBaslik”, TbBaslik.Text);

cmd.Parameters.AddWithValue(“BlogYazi”, EdtBlog.Content);

cmd.Parameters.AddWithValue(“BlogResmi”, resimadi);

cmd.Parameters.AddWithValue(“Tarih”, TbTarih.Text);

cmd.ExecuteNonQuery();

Response.Redirect(“Sayfalar_Blog.aspx”);

teşekkürler

BilisimOgretmeni

if bölümünden sonra else diyip

SqlCommand cmd = new SqlCommand("Update Blog set BlogBaslik=@BlogBaslik, BlogYazi=@BlogYazi, Tarih=@Tarih Where BlogId=" + BlogId, baglanti);
cmd.Parameters.AddWithValue("BlogBaslik", TbBaslik.Text);
cmd.Parameters.AddWithValue("BlogYazi", EdtBlog.Content);
cmd.Parameters.AddWithValue("Tarih", TbTarih.Text);
cmd.ExecuteNonQuery();
Response.Redirect("Sayfalar_Blog.aspx");


şeklinde deneyebilirsiniz

Aykut

Ama bu kez resim eklenmemiş olmuyormu ?

BilisimOgretmeni

evet aynen öyle ilk olarak if (fuResim.HasFile) ile resim varsa bölümü çalışacak ona göre update yapacak else yani resim yoksa alt taraftaki resimsiz update çalışacak eskiden kayıtlı resim varsa herhangi bir değişiklik yapılmaacak

Aykut

Teşkkür ederim

BilisimOgretmeni

rica ederim iyi çalışmlar

Hüseyin Sonel

Hocam yardımcı olur musunuz hata ıcın

BilisimOgretmeni

hata ne acaba

Hüseyin Sonel

BU HOCAM

NAZIM

c# taki programı aynen vb ye çevirdim sorunsuz düzenledim fakat sessionları hiçbir şekilde taşımıyor. kullanıcı girişi yapılmamış olsa dahi uyeduzenleme sayfasına giriş yapmaması gerekirken giriş yapıyor.

Çeşme Mekan

Prpjeyi vb ye göre düzenledim ve çalıştırdım bir sıkıntı yok fakat giriş yaptıktan sonra session ı tanımıyor. hatta kullanıcı girişi yapmadan uye ve uye duzenleeme sayfalarına girilmesine izin veriyor nasıl yardımc olabilirsiniz. Farklı sayfa açıp sessionları gönderdiğimde ise işlem yapıyor bir sıkıntı yok. kodlarda bir eksiklik ve yanlış bulamadım.

BilisimOgretmeni

kodları görmeden bir şey söylemem zor 🙁 ama eksik bırakılan bir bölüm muhakkak vardır.

Çeşme Mekan

üye giriş kodları: Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Data Imports System.Data.OleDb Public Class uyegiris Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Protected Sub btngiris_Click(sender As Object, e As EventArgs) Dim baglanti As OleDbConnection Dim komut As OleDbCommand baglanti = New OleDbConnection(“provider= microsoft.jet.oledb.4.0;data source=” & Server.MapPath(“~/app_databurak.mdb”)) baglanti.Open() Dim sorgu As String = “SELECT COUNT(*) FROM uyeler WHERE uye_adi=@uyeadi and uye_sifre=@sifre” komut = New OleDbCommand(sorgu, baglanti) komut.Parameters.Add(“@uyeadi”, OleDbType.VarChar).Value = txtuyeadi.Text komut.Parameters.Add(“@sifre”, OleDbType.VarChar).Value = txtsifre.Text Dim kayitsayisi As Integer = CType(komut.ExecuteScalar(), Integer) baglanti.Close() baglanti = Nothing… Read more »

Çeşme Mekan

uyeduzenleme sayfasındaki sorunu çözdüm bir sıkıntı kalmadı uye.aspx sayfasına session tarafından veriler aktarılmasa bile profil görüntüle ve bilgi güncelle bölümleri eksiksiz çalışıyor. Ama uye.aspx sayfası hala aynı.

Çeşme Mekan

uye.aspx ve uyegiris sayfalarımı yeniden derledim. kodlarda bir sıkıntı yok fakat her iki sayfayıda farklı isimlerde yeniden oluşturup kodları tekrar yazdım ve kendi olması gereken sayfalara yapıştırdım sorunsuz bir şekilde çalışıyor. (Araba Çalışmıyorsa Yapılabilecek En İyi Şey Biraz Bekledikten Sonra Kontağı Tekrar Çevirmektir. 😀 ) Kodlarınız için Teşekkürler

BilisimOgretmeni

verileri taşımıyor derken veri tabanından mı okumuyor? eğer öyleyse sql sorgusunda bir hata olabilir

Çeşme Mekan

CType(DataList1.Controls(0).FindControl(“label1”), Label).Text = CType(DataList1.Controls(0).FindControl(“DropDownList1”), DropDownList).SelectedValue

bu kodla datalist içindeki dropdownlist içinde seçilmiş bir değeri label a atmaya çalışıyorum fakat butona bastığımda sayfa postback oluyor ve dropdawn daki varsayılan değeri atıyor nasıl düzenleme yapabilirim if döngüsüyle sayfanın postback olmasını önlediğimde bile çözüm yok;

If Not Page.IsPostBack Then
CType(DataList1.Controls(0).FindControl(“label1”), Label).Text = CType(DataList1.Controls(0).FindControl(“DropDownList1”), DropDownList).SelectedValue
End If

buna benzer farklı bir konuyla ilgili makaleniz varmı

39
0
Yazı hakkındaki yorum, görüş ve önerilerinizi yazınx
()
x