Jump to page: 1 24  
Page
Thread overview
Ortam Değişkenine Değer Yazdırmak?(çerez methodu için)
Feb 11, 2011
Kadir Can
Feb 11, 2011
Kadir Can
Feb 11, 2011
Kadir Can
Feb 11, 2011
Kadir Can
git hatası: Permission denied(public key) fatal:the remote end hung up unexpectedly
Feb 12, 2011
Kadir Can
Feb 12, 2011
Kadir Can
February 10, 2011

Özellikle çerez(cookie) için bunu soruyorum.

Çerezi şöyle edinebiliyoruz:

   string cookie = getenv("HTTP_COOKIE");

Bunu oluşturma biçimide vardır. Bu nasıl olabilir?

Bu sefer şu adresten akıl yürütüyorum:http://arsdnet.net/dcode/cgi.d (Bu arada direk belki bu modülü kullanabiliriz. Sizce kendimiz mi yazalım bu modülü mü kullanalım?)


hd ~= "Set-Cookie: " ~ c; c verdiğimiz parametreler olacak. hd değişkeninde biriktiriyoruz.

			foreach(h; hd) {
				if(rawDataOutput !is null)
					rawDataOutput(cast(const(ubyte)[]) (h ~ "\r\n"));
				else
					writeln(h);
			}

Biçiminde ise yazıyoruz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2011

Alıntı:

>

Çerez değerini bir şekilde bizim yaşatmamız gerekiyor. Oturumla ilgili bilgiyi dosyaya veya veri tabanına bile yazabiliriz.

Alıntı:

>

Sen nasıl istersin? :) Kendimiz yazmak daha zevkli ve öğretici olur.

Kendimiz yazarsak öğreniriz, ancak durmadan sizi rahatsız edeceğim :-)

Şimdi cookie'lerin erişen kişinin bilgisayarımızda saklanması gerçeğini göz önüne alarak kullanıcının bilgisayarında dosyalar halinde saklayabiliriz hatta saklamamız gerekiyor. Ancak kullanıcının bilgisayarına bu tür veriyi nasıl yerleştireceğiz ve belirli bir zaman sonra nasıl silinmesini sağlayacağız.

Tabi bundan sonra birde session var?

Buraları yazdıktan sonra bence asıl zevkli yerlere başlayacağız.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2011

Alıntı:

>

O işi tarayıcılar hallediyor. Biz çerez veriyoruz, karşı tarafın tarayıcısı onu bizim için kaydediyor ve kullanıcı bize her geldiğinde aynı çerez bize tekrar görünüyor.

Bizim yapmamız gereken, o çerez ile kullanıcı için saklamakta olduğumuz oturum bilgiyi eşleştirmek. Yani bizim tarafımızda bir depolama gerekiyor.

Evet biliyorum ancak biz çerezi nasıl vereceğiz, daha sonra çerezi nasıl alacağız bunu bilmiyorum.
Alıntı:

>

Not: Çerez mi cookie mi?

Farketmez ikiside bana yabancı sözcük olarak geliyor ve ikisinide anlıyoruz. Ancak projede adı cookie olacak.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2011

Şimdi cookie oluştururken şöyle bir kod yazacağız:


string h="Set-Cookie: "~"name=value";
writeln(h);

Okurkende

string[string] cookie()
{
   string[string] endCookie;
   string cookie = getenv("HTTP_COOKIE");


   endCookie=fixedString(decode(cookie));



   return endCookie;
}

Yani bu kodu(writeln(cookie())) yazdığımızda şöyle bir çıktı alacağız:
[name:value]
Ayrıca çok zorlanırsak bunu javascript kullandırtarakta yapabiliriz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2011

Biraz kopya ile yazdım.Konsoldan çalıştırdım ve doğru sonucu verdi:

module library.cookie;

import std.process; //  getenv
import std.string;
//import library.convertToUTF8;
import std.uri;
import library.fixedString;



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)
{
   string[] hd;
   string cookie = name ~ "=";
   cookie ~= data;
   if(path !is null)
       cookie ~= "; path=" ~ path;
   if(expiresIn != 0)
       cookie ~= "; expires=" ~ printDate(expiresIn);
   if(domain !is null)
       cookie ~= "; domain=" ~ domain;
   if(httpOnly == true )
       cookie ~= "; HttpOnly";

   responseCookies ~= cookie;
   if(responseCookies !is null && responseCookies.length > 0) {
       foreach(c; responseCookies)
           hd ~= "Set-Cookie: " ~ c;
   }
   std.stdio.writeln(hd);

}
// Buna gerek yok ancak
//std.datetime.ToUnixTime işlevini kullanamadım.
/*
* uniz zaman değeri veren bir işlev gerekiyor.
*/
string printDate(long date) {
	return "Sun, 06 Nov 2011 08:49:37 GMT";


}


private string[] responseCookies;

void clearCookie(string name, string path = null, string domain = null) {
   setCookie(name, "", 1, path, domain);
}

Ancak şuanki unix zamanını döndüren bir işlev bulamadım. std.datetime'da toUnixTime işlevi vardı ancak kullanınca hata veriyordu. Tanımlanmamış diyordu.Ancak datetime eklenemedi diye bir hatada yoktu. Anlamadım.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2011

Alıntı:

>

Yani Max-Age=1000 olunca 1000 saniye ömrü var.

En güzel çözüm bu.

Alıntı:

>

std.date'te

std.date deprecation olarak işaretlenmiş, datetime'ı öneriyor. O işleve bakıyorum çok geniş bir modül. Andrei kendi modülünü yapmaktan bile vazgeçirmiş, çok hoş gözüküyor kesin vardır diyorum ancak rastladığım bir hataya denk geliyorum. En çok o hatayı merak ediyorum.

Max-Age=0 için özel davranış var mı? Yada expires için.(0 o anki tarih anlamına gelir herhalde.)

Artık bu bitti session için yeni bir konu açabiliriz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2011

Alıntı (canalpay):

>
>     string cookie = getenv("HTTP_COOKIE");
> ```

>
>
> Bunu oluşturma biçimide vardır. Bu nasıl olabilir?

Ortam değişkenleri çok kısa ömürlüdürler. Onlar bizi başlatan ortam tarafından oluşturulurlar. CGI programlarının ömrü de çok kısa olduğu için biz yanıt HTML belgesini yazıp çıkınca olay biter.

Çerez değerini bir şekilde bizim yaşatmamız gerekiyor. Oturumla ilgili bilgiyi dosyaya veya veri tabanına bile yazabiliriz.

Hatta zamanından PayPal'ın bile yaptığı gibi, oturumla ilgili bütün bilgi HTML yanıtımızın içindeki gizli bir alan olarak kullanıcıya gider, ve kullanıcı her tıkladığında biz onu o bilgiden tanırız. Bu yöntem çok eski teknolojidir, işe yarar, ama bir oturum yöneticisi daha iyi olur.

Tabii web çatısının CGI programından öte bir şey olması gerek. Apache'ye hep canlı duran modüller eklenebiliyordur herhalde. Mengü, sen biliyor musun?

Alıntı:
> Sizce kendimiz mi yazalım bu modülü mü kullanalım?)

Sen nasıl istersin? :) Kendimiz yazmak daha zevkli ve öğretici olur.

Ali

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
February 10, 2011

Alıntı (acehreli):

>

Ortam değişkenleri çok kısa ömürlüdürler.

Buna rağmen değiştirilebildiklerini söylemeyi unuttum:

http://digitalmars.com/d/2.0/phobos/std_process.html#environment

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2011

Alıntı (canalpay):

>

Kendimiz yazarsak öğreniriz, ancak durmadan sizi rahatsız edeceğim :-)

Rahatsız olalım lütfen. Bu sayede kimbilir D ile ilgili de neler ortaya çıkacak. (Bu forum fazla sessiz. :))

Alıntı:

>

cookie'lerin erişen kişinin bilgisayarımızda saklanması

O işi tarayıcılar hallediyor. Biz çerez veriyoruz, karşı tarafın tarayıcısı onu bizim için kaydediyor ve kullanıcı bize her geldiğinde aynı çerez bize tekrar görünüyor.

Bizim yapmamız gereken, o çerez ile kullanıcı için saklamakta olduğumuz oturum bilgiyi eşleştirmek. Yani bizim tarafımızda bir depolama gerekiyor.

Ali

Not: Çerez mi cookie mi?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 10, 2011

Alıntı (canalpay):

>

Evet biliyorum ancak biz çerezi nasıl vereceğiz, daha sonra çerezi nasıl alacağız bunu bilmiyorum.

Kullanıcıya çerez göndermek için yanıttaki "Set-Cookie" alanı kullanılıyormuş:

http://en.wikipedia.org/wiki/HTTP_cookie#Setting_a_cookie

Aynı alan tarayıcıdan da bize geri geliyormuş.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2 3 4