Geri Dön   Forum Ti > Programlama Dilleri ve İnternet > Web Geliştirme Dilleri
Üye Ol Üye Listesi Takvim Forumları Okundu İşaretle

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

Cevap
 
Konu Araçları
Eski 08.06.2007   #1 (permalink)
 
Katılma Tarihi: Şub 2006
Nereden: Bursa/es-es
Yaş: 23
Mesajlar: 1,780
Varsayılan Phorum Programında Tarih Ayarlarının Yapılması...

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.
staticiation Şuanda Forumda Değil   Alıntı yaparak cevapla
Cevap


Ş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


Şu anki forum saati: 23:05.


cnt hizmet sağlayan firma
ForumTi.com'un yapımı ve yayınlanması CNT'ye aittir.
Sitedeki içerikleri foruma ücretsiz şekilde üye olabilen ziyaretçiler oluşturur. Bu içeriklerin sorumluluğu yazana aittir.
Eğer yasak ve aykırı içerik tespit edilirse site yöneticilerine bu konular bildirilir ve kaldırılır. Site yönetimi haberdar edildiğinde sonuç alınamaz ise servis sağlayıcı CNT'ye bildiride bulunabilirsiniz.
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Search Engine Friendly URLs by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265