Forum: Projeler turna RSS
Ortam Değişkenine Değer Yazdırmak?(çerez methodu için)
Sayfa:  önceki  1  2  3  4  sonraki 
canalpay (Moderatör) #16
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ı
Yanıtlanan mesaj ID 3354
HTML etiketlerinden önce veriyorum onu.

Örneğin cookie,session tarzı işlemleri PHP altyapısıyla sunalım.
javascript ile sunabiliriz ancak öyle bir şeye gerek yoktur. Teoride cgi programında html etiketlerinden önce çıkış akımna Set-Cookie yazıp özelliklerini yazdığımızda tarayıcı bizim için cookie oluşturacaktır. Unutmayalım php de bir çeşit c framework'u olarak yazılıp daha sonra dil haline geldi.
Kadir Can #17
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Anladım canalpay;
Yarın Pardus kurmayı deneyeceğim.

Ben de katılırım İnşallah gruba.Yalnız framewok işinden anlamıyorum.Ben ne yapabilirim proje için?
canalpay (Moderatör) #18
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ı
html helper denilen şeyi ben senin yazmanı bekliyorum.

Bütün mesajlarımı okuduysan ne olduğunu anlamışsındır.
Kadir Can #19
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Tamam helper'a bakarım.

Yalnız kurulum sırasında bir hata olur sistem çöker diye çok korkuyorum.Sence bir şey olur mu?
canalpay (Moderatör) #20
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ı
Yalnız kurulum sırasında bir hata olur sistem çöker diye çok korkuyorum.Sence bir şey olur mu?

Bunu diğer konularda hangi dağıtım başlığında yaz orada konuşalım.

Ben hiçbir şey anlamadım. :(

Hiç bir şey anlamamanızın nedenini ben anladım. Yanlış kodu kopyalamışım.
İlgisiz olarak, yukarıdaki kodlarda bir şey farkettim: Şu koddaki responseCookies.length > 0 denetimine gerek yok:

    if(responseCookies !is null && responseCookies.length > 0) {
        foreach(c; responseCookies)


Çünkü 0 olduğunda foreach döngüsüne hiç girilmez zaten.

O adam'ın kodu. Aynen kopyaladım. Adam oradabaşka iflerde koymuştu ancak tek cookie'yi çıkarınca gerek kalmadı tabi.

Burada cookie modülünü yazdığımı söylemiştim.
http://ddili.org/forum/post/3323

Ancak doğru çalışmıyor. Bende hata nerede diye bakarken şunu farkettim. writeln ile string dizisi yazdırdığım için çıkış akımına "[" ve "]" karakteride koyuyordu. Tarayıcıda bunu ayırt edemiyor herhalde dedim ve düzelttim.
Ancak yinede tarayıcıya cookie oluşturtamadım. Bende belki başka yerde hata yapmışımdır diye bu sefer elle kodu girip denedim. Denediğim kod şu:
    dout.writef("Content-type: text/html; charset=utf-8\n\n");      
    dout.writefln("Set-Cookie: name=value");

Ancak yine cookie oluşmadı. Benim aklımada artık cookie oluşturmak için başka fikir gelmiyor.
Kadir Can #21
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bunu araştıracağım.
acehreli (Moderatör) #22
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
HTML belgesinin başlık bölümünde Set-Cookie bulunması yetmeli. Benim oluşturduğum çıktının başında şu var:

Content-type: text/html; charset=utf-8
Set-Cookie: falan=filan

<html>
  <body>


Sayfayı localhost'taki Apache'ye gönderdiğimde ortam değişkenleri arasında da şunu görüyorum:

      <dt>HTTP_COOKIE</dt>
      <dd>falan=filan</dd>


Bunun için daha önceden gösterdiğim xml_nesnesi.d dosyasındaki HtmlBelgesi sınıfını şu şekilde değiştirdim:

class HtmlBelgesi
{
    TekEleman belge;
    string[string] başlık;
 
    this(XmlElemanı içerik)
    {
        belge = (new TekEleman("html")).ekle(içerik);
    }
 
    void başlıkDeğişkeniEkle(const(char)[] isim, const(char)[] değer)
    {
        başlık[isim] = değer.idup;
    }
 
    override string toString() const
    {
        string sonuç = "Content-type: text/html; charset=utf-8\n";
 
        foreach (isim, değer; başlık) {
            sonuç ~= isim ~ ": " ~ değer ~ '\n';
        }
 
        sonuç ~= '\n' ~ to!string(belge);
 
        return sonuç;
    }
}

Yani artık başlıkDeğişkeniEkle() işlevi ile istediğim başlığı ekleyebiliyorum. Sonra cgi_deneme.d dosyasındaki ortam değişkenlerine HTTP_COOKIE'yi de ekledim:

string[] ortamDeğişkenleri =
    [
/* ... */
        "HTTP_USER_AGENT",
        "HTTP_COOKIE",
     ];

cgi_deneme.d'deki main'in en sonunu da şöyle değiştirdim:

    auto belge = new HtmlBelgesi(içerik);
    belge.başlıkDeğişkeniEkle("Set-Cookie", "falan=filan");
    writeln(belge);

Benim anladığım bu. Yapılması gereken basit:

- Belgenin başlık bölümüne Set-Cookie satırını ekliyoruz

- Tarayıcı, onunla olan iletişimimiz sırasında Apache'ye o değişkeni veriyor

- Apache de onu HTTP_COOKIE ortam değişkeni olarak bizim kodumuza sunuyor

Ali
canalpay (Moderatör) #23
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ı
Ben şuan yapamadım. Teoride şunun çalışması gerekmiyor mu?


module library.cookie;
 
import std.process; //  getenv
import std.string;
import std.uri;
import library.fixedString;
import std.conv;
import std.cstream;
 
string[string] cookie()
{
    string[string] endCookie;
    string cookie = getenv("HTTP_COOKIE");
  
    
    endCookie=fixedString(decode(cookie));
 
    
    
    return endCookie;
}
void setCookie(string name, string data, long expiresIn = 0, string path = null, string domain = null, bool httpOnly = false)
{
    std.stdio.writeln("Set-Cookie: deneme=veriler");
}
 
void main(){
    
    dout.writef("Content-type: text/html; charset=utf-8\n\n");               
    
    setCookie("deneme", "veriler" );
    dout.writef("<html>\n  <body>\n");
 
    dout.writef("\n<hr>\n<b>Ortam değişkenleri:</b><br><br>\n");
     std.stdio.writeln(cookie());
 
    dout.writef("\n<hr><br>\n<a href=\"http://ddili.org/ornek_kod/deneme.d\">"
                "(Bu çıktıyı oluşturan program)</a><br>\n");
 
    dout.writef("\n  </body>\n</html>\n");
}
acehreli (Moderatör) #24
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Hatan çok ilgisiz bir yerde. (Bu da örneklerin tam olması gerektiğinin güzel bir kanıtı.)

canalpay:
    dout.writef("Content-type: text/html; charset=utf-8\n\n");              
   
    setCookie("deneme", "veriler" );
    dout.writef("<html>\n  <body>\n");

Boş satırın ("\n" karakterinin) başlık bölümünden sonra gelmesi gerekiyor. Benim ürettiğim başlıktaki gibi:

Content-type: text/html; charset=utf-8
Set-Cookie: falan=filan
                                <--- Boş satır
<html>
  <body>


Ali
canalpay (Moderatör) #25
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ı
Teşekkürler en sonunda oldu.

Boş satırın ("\n" karakterinin) başlık bölümünden sonra gelmesi gerekiyor. Benim ürettiğim başlıktaki gibi:

Bende öne gelecek sanıyordum. Olmadı sonrada boşlukla ne ilgisi var dedim safça :-(
acehreli (Moderatör) #26
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #19
Kadir Can:
Tamam helper'a bakarım.

Bunu söylemeye gerek olmayabilir ama kendi anladığımı özetleyeyim: şu düzende XML elemanları oluşturmak gerekiyor:

<eleman-ismi bir_nitelik="bir değer" başka_nitelik="başka değer" değersiz_nitelik>Elemanın değeri buraya geliyor</eleman-ismi>

Her yerde karşımıza çıkan HTML bağlantıları bu tür oluyor. Örnek:

<a href="/ders/d/derleyici.html">Derleyici</a>

O elemanın ismi "a"; tek niteliğinin ismi href ve değeri işte o bağlantı; ve elemanın değeri "Derleyici".

Bazı elemanların kendi değerleri olmuyor. O zaman kapama bölümüne gerek olmuyor; onun yerine açma bölümünün sonu /> ile bitiyor:

<eleman-ismi bir_nitelik="bir değer" başka_nitelik="başka değer" değersiz_nitelik/>

Bazı elemanların nitelikleri olmuyor:

<eleman-ismi>Elemanın değeri buraya geliyor</eleman-ismi>

Bazı elemanların ne değeri ne de niteliği oluyor:

<eleman-ismi/>

Çoğu elemanın değeri başka elemanlar oluyor. Örneğin şuradaki "li" elemanının değeri tek "a" elemanı:

<li><a href="/ders/d/derleyici.html">Derleyici</a></li>

Sanırım amacımız bu çıktıları oluşturmada yardımı olacak sınıflar yazmak. O yapıyı oluşturmayı başardıktan sonra her tür XML elemanı oluşturulabilir. HTML elemanları da XML düzeninde olduğu için web sayfaları oluştururken de çok işe yarayacak.

Ali
canalpay (Moderatör) #27
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ı
Helper'ın türkçe anlamı yardımcı.

Bize kod yazarken yardımcı olacak, daha az daha nitelikli her türlü şey helper kapsamının içine girer. Javascript, html yada sadece D'ye özel olması bir şey değiştirmiyor.
acehreli (Moderatör) #28
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
kod yazarken yardımcı olacak, daha az daha nitelikli her türlü şey

Anlamı o kadar geniş olduğu için de kullanışsız bir isim oluyor. Her sınıf isminin sonuna "yardımcı" ekleyebiliriz yani. :)

Burada sana karşı bir şey söylemiyorum. Çok sevdiğim Kevlin Henney'nin çok konuşmasına katıldım. İsim konusuna çok önem verir ve örneğin "utility"yi de yerer. (Onun kökü "kullanmak" olan "use"dan gelir. Herşeyi de kullanmak için yazıyoruz zaten.)

HTML sayfasını oluşturma işini gören zavallı kodlara yazık değil mi? Onlar neden yaptıkları işi yücelten ve açıklayan isimler kazanmıyorlar? :)

İsimler önemli. Bu kadar söze rağmen, eğer "helper" ismi yayılmışsa kullanmaya o kadar da karşı olmam.

Ali
canalpay (Moderatör) #29
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ı
Anlamı o kadar geniş olduğu için de kullanışsız bir isim oluyor. Her sınıf isminin sonuna "yardımcı" ekleyebiliriz yani. :)

Bende yazarken aynı şeyi düşündüm. Daha sonra benim tanımlamamın yanlış olduğunu anladım.

mvc tasarımlı web frameworkta uygulamalarda controllers ve views yazarken bize kod angaryasından kurtaracak modüllerdir.

Yine tanımlamam yanlış ise bu sefer mengü uyaracak ve doğrusunu yazacaktır.
Anahtar sözcükler uygulamarda views ve controllers için demem.
İsimler önemli. Bu kadar söze rağmen, eğer "helper" ismi yayılmışsa kullanmaya o kadar da karşı olmam.
Helper sözcüğü şimdiye kadar gördüğüm her yerde aynı anlamda kullanıldı. Sanırım ad çok yyılmış olmalı :-)

Bu arada başkalarıda ufak ufak şu projeye başlasa fena olmaz hani :-p
canalpay (Moderatör) #30
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ı
Yanıtlanan mesaj ID 3385
Daha başka yolunu bilmiyorum. Ancak bir daha dene.

ssh eklenmeden github kullanılıyor mu bilmiyorum?
Giti bilen biri yanıt yazar.


Konuya dönersek.

setCookie ayarlamak için iki tane  "\n" yazdırıyorduk ya. Bu nedenle bende iki kere \n basmak yerine tek kere basıyorum. setCookie işlemlerini bitirdikten sonra registerCookie() işlevini yazdırmasını istiyorum. Sizce nasıl tasarım? Birde clearCookie işlevini sildim. Gerek yok.
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:
Sayfa:  önceki  1  2  3  4  sonraki 
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-06-22, 09:34:39 (UTC -07:00)