Forum: Projeler turna RSS
session(oturum) modülü
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: session(oturum) modülü
session(oturum) sistemi nasıl çalışıyor? Bunu d ile nasıl yazabiliriz...

Ben D ile yazılmış şöyle bir kod gördüm:
 
import std.file;
struct Session {
    this(Cgi cgi) {
        sid = "test.sid";
 
        cgi.setCookie("arsd_sid", sid);
    }
 
    void loadFromFile() {
        if(exists("/tmp/arsd-cgi-session-" ~ sid)) {
 
        }
    }
 
    void saveToFile() {
        std.file.write("/tmp/arsd-cgi-session-" ~ sid,
 
        );
    }
 
    ~this() {
        saveToFile();
    }
 
    @disable this(this) { }
 
    string sid;
    string[string] session;
}

Bizde onun gibi mi yapacağız? Yani normal bir dosyada cookie'yi tutacağız. tmp olursa tabiki pek normal bir dosya olmamış oluyor sanırım.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4396 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bildiğinizi biliyorum; yine bütünlük amacıyla yazıyorum.

Benim anladığım amaç, tıklamakta olan kişiyi tanımak ve bu oturum sırasında gelişmekte olan durumu korumak. (Hatta kullanıcıyla ilgili hiç kaybolmayacak bilgiler de saklanabilir. Örneğin belirli bir liste sayfasında kaç satır görmek istediği gibi bir ayar...)

CGI programları çok kısa ömürlü: kullanıcıdan tek tık alıyoruz, sayfayı oluşturuyoruz, ve sonlanıyoruz. Amacımız bu sırada gelişmekte olan kullanıcı durumunu saklamak.

Örneğin bir sitede iki önceki sayfada adresini almışsak biz bunu bu oturum sırasında unutmamalıyız. Daha sonraki bir sayfadaki adres bilgisini otomatik olarak doldurabilmeliyiz.

Daha önce tarayıcıya verdiğimiz ve bize geri gelen çerez, kişiyi tanımaya yetiyor (sid - "session id"). Geri kalan bilgiyi sunucu tarafında bulmamız gerek. Yani oturumun durumunu saklamalıyız:

- Bir dosyaya yazmak

- Veri tabanına yazmak

- Sürekli olarak çalışan (daemon) bir programda saklamak

- Bir Apache modülünde saklamak

- Aklıma gelmeyen başka bir şekillerde saklamak

(Daha önce de konuştuğumuz gibi, başka bir yöntem de sayfa içindeki gizli bir alanda saklamaktır.)

Ali

Not: Bu olaya girince sunucuyu çeşitli saldırılara da açmış oluyoruz. En basitinden, bizden çıkan belge içindeki çerezi gören birisi sunucuya o çerezle gelebilir ve asıl kullanıcının yerine geçebilir. Ama o ayrı konu... :)
Mengu (Moderatör) #3
Kullanıcı başlığı: NONSERVIAM
Üye Tem 2009 tarihinden beri · 347 mesaj · Konum: Dersaadet
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
bunu ben yaparim.
http://www.mengu.net - some kind of monster
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4396 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yihhuuu! Terkedilmemişiz! Havai fişekler! vs. :-p

Ali
canalpay (Moderatör) #5
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Campai :-p

Geriye bir şey kaldımı cgi için. Yoksa ben yavaştan veritabanı binding(iliştirici - bağlayıcı)leri yükleyeyim?
canalpay (Moderatör) #6
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Geriye bir şey kaldımı cgi için. Yoksa ben yavaştan veritabanı binding(iliştirici - bağlayıcı)leri yükleyeyim?
Sanırım header modülü yazılacaktı ve ona göre cookie modülü ayrıca yazılacaktı değil mi? Hatta bunu Ali Bey yazacaktı değil mi :-D

Bunla ilgili tartışıyorduk sanırım. Yeni bir başlık altında mı tartışalım?
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4396 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yeni başlıklar çok iyidir. Cookie'lerin oturumlarla yakın ilgileri var. Mengü'nün ne düşündüğünü öğrenmemiz gerek.

Ali
Mengu (Moderatör) #8
Kullanıcı başlığı: NONSERVIAM
Üye Tem 2009 tarihinden beri · 347 mesaj · Konum: Dersaadet
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
selamlar

bu oturum modulunu yazacagim ben, ancak suan gece gunduz doluyum, o yuzden baslamadim bile. :)

oturumlar ikiye ayriliyor, birincisi disk uzerinde tutulan oturum, ikincisi veritabaninda tutulan oturum. bizde her ikisi de olacak ancak evvela disk uzerinde tutulan oturumu halledecegiz nitekim suan herhangi bir veritabani baglayicisi yazmis degiliz.

oturumlar nasil calisir? her oturuma essiz bir id verilir ve bu id cookie'de tutulur. oturum idsine gore kontrol edilir ve nerede tutuluyorsa bilgiler alinir, uzerinde tepinilir.
http://www.mengu.net - some kind of monster
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4396 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Peki güvenlikle ilgili bilgisi olan var mı? Trafiği izleyen birisi bizim çerezi kullanarak araya girebilir. Yoksa https mi yeterli oluyor?

Ali
canalpay (Moderatör) #10
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Mengu:
suan herhangi bir veritabani baglayicisi yazmis degiliz.

Sanırım githubta mysql ve sqlite için bağlayıcı vardı.
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Projeler turna RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-05-27, 12:22:21 (UTC -07:00)