|
|||||||
| Web Geliştirme Dilleri İnternet sitesi geliştirme için kullanılan araçlar ve programlama dilleri... ASP & ASP.NET & PHP & CSS & HTML & SQL & Java Script |
![]() |
|
|
Konu Araçları |
|
|
#1 (permalink) |
|
I'm REAL ?>
Katılma Tarihi: Şub 2006
Nereden: Bursa/es-es
Yaş: 23
Mesajlar: 1,780
|
Bu yazıda phorum için zaman sorununun nasıl cözüldüğü anlatılmıştır. Cevaba geçmeden önce biraz koddan ve sorunda bahsetmek istiyorum.
PROGRAM HAKKINDA: Phorum, bizim sayfamızda, php.org.tr' da ve birçok sayfada kullanılan bu koda Phorum: PHP Message Board sayfasından erişebilirsiniz. SORUNUN NEDENİ: Sorun forumu host ettiğimiz (yayınladığımız) yerin yurt dışında olmasından kaynaklanıyor. Sisteme yeni bir mesaj eklendiği zaman, kod sistem saatine bakıp onu not ediyor. Bu yüzden Türkiye deki bir kullanıcının saat kaçta haber eklediğini doğru olarak göremiyoruz. Yani sorun ülkeler arası saat farkından kaynaklanıyor. SORUNUN ÇÖZÜM TEKNİĞİ: Bunun için öncelikle "date" komutundan bahsetmek istiyorum. Bu komut sayesinde sistemden tarih bilgilerini istediğimiz bir formatta alabiliyoruz. Örnek: $datestamp = date("Y-m-d H:i:s"); Bu kod bize şu anın tarihini verir : 2001-06-09 17:30:22 Burada date fonksiyonun yaptığı iş time() komutundan gelen sayıyı bizim anlayabileceğimiz bir forma ta çevirmesidir. Mesela şu anda time komutu bize "992097022" sayısını verir. Biz date komutuna istediğimiz bir sayıyı verip. O sayının hangi tarihe rast geldiğine bakabilirsiniz. Örnek: print(date("Y-m-d H:i:s",0)); Bize, bu saat sisteminin 0 olarak kabul edildiği anı verir. Yani "1970-01-01 02:00:00" buradaki 0 ı 1 saparsanız 1 saniye sonrasına ulaşmış olursunuz! Yani aslında bugünün saati print(date("Y-m-d H:i:s",time() )); ile alınmaktadır. GENEL OLARAK SORUNUN CÖZÜMÜ: Sorunu çözmek için yapılması gereken şey "time()" komutuyla bugünün saatinden gerideysek saat farkını çıkarmak, ilerideysek toplamak. Bunu yapmak için farkı saniye olarak çıkarmak gerekir. Yani 1 saatlik fark 60*60=3600 sn yapar. 9 saatlik fark 9*3600 sn yapar. Sonra bunu date komutunda kullanmak. $saatfarki=-9; $datestamp = date("Y-m-d H:i:s",(time()+3600*$saatfarki)); Bu sayede saati ayarlamış oluruz. *Buradaki örnekte 9 saat geride olunması durumu için yapılmıştır. PHORUM İÇİN SORUNUN ÇÖZÜMÜ: Bunu yapmak için programda haber eklenme sayfasında yani post.php değişiklik yapmak yeterli olacaktır. Post.php bir edit programıyla açıp 113 satırdaki date komutunu aşadaki ile değiştirin. $datestamp = date("Y-m-d H:i:s",(time()+3600*$saatfarki)); Burada zaman farkı değişkenini ister hemen üstüne koyun veya benim yaptığım gibi common.php ye ekleyin. Bu sayede istediğiniz zaman değişiklik yapmanız daha kolay olur. DENEME: Ben bu kodu Welcome to Freedom2surf dan aldığım bedava serverda çalıştırıyorum. Ve oradaki serverdan 9 saat geride olduğumu fark ettim. Bu şekilde yaptığım düzeltme sayesinde formum düzgün bir şekilde çalışıyor. |
|
|
|
![]() |
| Şu Anda Konuyu İnceleyen Aktif Kullanıcılar: 1 (0 üye ve 1 misafir) | |
| Konu Araçları | |
|
|
Benzer Konular
|
||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| Spa Test Programında İlk Gün Hamilton Önde | Duygusuz | Formula 1 | 0 | 11.07.2007 16:11 |
| SQL sorgulamada belli Tarih veya tarih aralığını listelemek... | staticiation | Programlama & Geliştiriciler için | 0 | 19.06.2007 01:20 |
| PHP'de Tarih ve Zaman Kavramlarını Anlamak, Türkçe Tarih Çıktısı Yaratmak... | staticiation | Web Geliştirme Dilleri | 0 | 08.06.2007 16:53 |
| Phorum Kurulumu... | staticiation | Web Geliştirme Dilleri | 0 | 08.06.2007 16:40 |