Sözlükte mevcut olmayan bir konu başlığını açarken diğer gelişmiş sözlüklerde olmayan bir ara panel gelir. Bu panelde istenen başlığın olmadığını belirten bir yazı ve E Madem Yok Ben Açayım mevcuttur. Bu aslında kullanıcılar için çok da hoş olmayan bir sunuş. Bu gereksiz paneli ortadan kaldırıp direkt olarak entry giriş panelini getirmek ve mümkünse başlık açarken benzerleri daha önce açılmış mı diye kontrol etmek gerekir. Burada bununla ilgili bir örnek anlatacağım.
9 - Yazarların Şifre Değiştirmesi
/ Category: hata, passwd, script, sözlük, şifre, terimler, zekimisinizScriptte bir yazarın şifresini değiştirebilmesi ilk başta mümkün olmuyor. Şifresini değiştirmek isteyen bir yazar "Zekimisin yani ? :)" cevabını alıyor. Bunun için şifre değiştirme işlemini adım adım incelemek lazım.
Kontrol paneli (Tebdil-i Mekan butonu) inc/cp.php üzerinden çalışıyor. Burada şifre değiştirme formunu görürsünüz. Eski şifrenizi ve 2 defa yeni şifrenizi girmenizi istiyor. Ondan sonra da bu formdaki bilgileri inc/passwd.php 'ye gönderiyor.
inc/passwd.php dosyasında gelen verilerin kontrolleri yapılıyor. İşte burada $_SERVER["HTTP_REFERER"]; kodu ile o anki sayfaya hangi sayfadan gelindiğine bakılıyor. Bu aslında inc/passwd.php dosyasının adresini direkt olarak yazıp da siteye girilmesin diye düşünülmüş bir güvenlik. Buradaki kodların tamamı şu şekilde:
$site = $_SERVER["HTTP_REFERER"];
$site = explode("/", $site);
$site = $site[2];
if ($site != "www.terimler.net" and $site != "Terimler.net") {
echo "Zekimisin yani ? :)";
die;
}
Burada bir önceki refere sayfanın terimler.net 'e ait olması istenmiş. Yani gelinen adres değeri http://www.terimler.net/sozluk.php?process=cp gibi bir adres ise buradaki bilgileri "/" ile parçalayıp oluşan parçaların ikincisinin terimler.net ifadesini içerip içermediğine bakılmış. Burada tamamen PHP fonksiyonlarını bilmeniz gerekmekte. PHP biliyorsanız zaten demek istediğim şeyi anlamışsınızdır. Bilmiyorsanız kodları hiç bozmadan kendi web site adınızı terimler.net olacak yere yazın. Yani kendi site adınızın doğruluğunu kontrol etmiş olun.
Kontrol paneli (Tebdil-i Mekan butonu) inc/cp.php üzerinden çalışıyor. Burada şifre değiştirme formunu görürsünüz. Eski şifrenizi ve 2 defa yeni şifrenizi girmenizi istiyor. Ondan sonra da bu formdaki bilgileri inc/passwd.php 'ye gönderiyor.
inc/passwd.php dosyasında gelen verilerin kontrolleri yapılıyor. İşte burada $_SERVER["HTTP_REFERER"]; kodu ile o anki sayfaya hangi sayfadan gelindiğine bakılıyor. Bu aslında inc/passwd.php dosyasının adresini direkt olarak yazıp da siteye girilmesin diye düşünülmüş bir güvenlik. Buradaki kodların tamamı şu şekilde:
$site = $_SERVER["HTTP_REFERER"];
$site = explode("/", $site);
$site = $site[2];
if ($site != "www.terimler.net" and $site != "Terimler.net") {
echo "Zekimisin yani ? :)";
die;
}
Burada bir önceki refere sayfanın terimler.net 'e ait olması istenmiş. Yani gelinen adres değeri http://www.terimler.net/sozluk.php?process=cp gibi bir adres ise buradaki bilgileri "/" ile parçalayıp oluşan parçaların ikincisinin terimler.net ifadesini içerip içermediğine bakılmış. Burada tamamen PHP fonksiyonlarını bilmeniz gerekmekte. PHP biliyorsanız zaten demek istediğim şeyi anlamışsınızdır. Bilmiyorsanız kodları hiç bozmadan kendi web site adınızı terimler.net olacak yere yazın. Yani kendi site adınızın doğruluğunu kontrol etmiş olun.
Normalde sözlüklerde başlık karakterleri harf ve rakamlar olmalıdır. Nokta, virgül, soru işareti.. vb işaretler başlıkta yer almaz. Bu sebeple de başlıklar ve boş bkz 'lar her zaman özel karakter taramasından geçirilir. (bkz: sözlüklerde başlık formatı)
Bkz içerisinde varolan bir nokta karakteri, başlığa dönüşüm sırasında yok edilir ve yeri kapatılır. Bu da bazı durumlarda kötü bir başlık yönlendirmesi olarak gözükebilir. Örneğin (bkz: lafmacun.org) başlığına tıkladığınızda lafmacunorg başlığına gitmek isteyecek. Oysaki 1 boşluk bıraksaydı daha iyi bir sonuç elde edilirdi. Bunun için inc/word.php dosyasına girip dosyanın hemen başındaki kodlardan hangi karakterde ne yaptırmak istiyorsanız düzenleyebilirsiniz. Mesela nokta karakteri için bir boşluk oluşmasını sağlayalım.
$q = ereg_replace("\."," ",$q);
Bkz içerisinde varolan bir nokta karakteri, başlığa dönüşüm sırasında yok edilir ve yeri kapatılır. Bu da bazı durumlarda kötü bir başlık yönlendirmesi olarak gözükebilir. Örneğin (bkz: lafmacun.org) başlığına tıkladığınızda lafmacunorg başlığına gitmek isteyecek. Oysaki 1 boşluk bıraksaydı daha iyi bir sonuç elde edilirdi. Bunun için inc/word.php dosyasına girip dosyanın hemen başındaki kodlardan hangi karakterde ne yaptırmak istiyorsanız düzenleyebilirsiniz. Mesela nokta karakteri için bir boşluk oluşmasını sağlayalım.
$q = ereg_replace("\."," ",$q);
Boş durumdaki sözlüğe giriş yapıldığında ilk ortaya çıkan mesaj "sozluk yazim kurallari diye bir konu yok ki?" mesajıdır ve aslında çok da hoşlanılmayan, hata sayılabilecek bir mesajdır. Diyelim ki, siz kendi sözlüğünüzde bu başlığı açmak istemiyorsunuz. Bunun yerine halihazırda varolan bir konu başlığına yönlendirme istiyorsunuz. Bunu yapmak için inc/rand.php dosyasını açın. Aşağıdaki kodu bulun.
header ("Location: sozluk.php?process=word&q=sozluk+yazim+kurallari");
Buradaki otomatik yönlendirme linkini düzenleyerek istediğiniz bir başlığı sözlük girişinde gösterebilirsiniz.
Sözlük içerisinde üstteki arama kutucuğuna bir şey yazmadan arama butonlarına basarsanız "Müneccim miyim ben" mesajı ortaya çıkar. Bu mesajı düzeltmek için inc klasörüne girip aşağıdaki dosyalara bakmalısınız. 3 buton için 3 farklı dosyadan farklı değer döner.
[Getir] : word.php
[Ara] : search.php
[#id] : eid.php
[Getir] : word.php
[Ara] : search.php
[#id] : eid.php
Bu konu anlatımından önceki işlemleri başarıyla geçtiyseniz sözlüğün tam olarak çalıştığını söyleyebiliriz. O halde yapılacak ilk işlemlerden birisi sözlüğünüze özgü temalar yaratmak olacaktır. Hazır Sözlük scripti ile birlikte 6 tane hazır tema gelir. Bunlar default, simsiyah, çok pis, absolute, simpsons, toa, kata adındaki temalardır.
Her bir temaya ait logo resmi ana dizindeki logo klasöründe bulunur. İmaj ve CSS dosyaları da images klasöründe bulunur.
yenitema isimli bir tema yapmak isteyelim. Bunun için önce logo klasörü içerisine 150 x 64 ebatlarda bir logo resmi yapalım ve jpg olarak kaydedelim. Bu dosyanın adı logo_yenitema olsun. Sonra veritabanına giderek temalar tablosunu açalım ve yeni kayıt olarak yenitema değerini kaydedelim. Göreceğiniz gibi diğer temaların isimleri de burada kayıtlı olarak durmaktadır. Buradaki işimiz bitti.
Sonra inc/onlines.php dosyasını açın. Dosya içerisinde hızlı tema değiştirme linklerini göreceksiniz. Burada düzenleme yaparak göstermek/gizlemek istediğiniz temaların linklerini ayarlayın. Mesela buraya yenitema isimli temamızın linkini vermemiz lazım.
<a href="sozluk.php?process=cp&tema=yenitema">
Yeni Tema</a>
Böylece sözlük içerisinde kullanıcıların yeni temamıza ulaşmasını sağlamış olduk. Buradaki işimiz de bitti ve şimdi images klasörüne gidelim. Burada cokpis.css dosyasını yenitema.css olarak kopyalayalım. Bundan sonraki şeyler sizin CSS yaratıcılığına kalmıştır.
Her bir temaya ait logo resmi ana dizindeki logo klasöründe bulunur. İmaj ve CSS dosyaları da images klasöründe bulunur.
yenitema isimli bir tema yapmak isteyelim. Bunun için önce logo klasörü içerisine 150 x 64 ebatlarda bir logo resmi yapalım ve jpg olarak kaydedelim. Bu dosyanın adı logo_yenitema olsun. Sonra veritabanına giderek temalar tablosunu açalım ve yeni kayıt olarak yenitema değerini kaydedelim. Göreceğiniz gibi diğer temaların isimleri de burada kayıtlı olarak durmaktadır. Buradaki işimiz bitti.
Sonra inc/onlines.php dosyasını açın. Dosya içerisinde hızlı tema değiştirme linklerini göreceksiniz. Burada düzenleme yaparak göstermek/gizlemek istediğiniz temaların linklerini ayarlayın. Mesela buraya yenitema isimli temamızın linkini vermemiz lazım.
<a href="sozluk.php?process=cp&tema=yenitema">
Yeni Tema</a>
Böylece sözlük içerisinde kullanıcıların yeni temamıza ulaşmasını sağlamış olduk. Buradaki işimiz de bitti ve şimdi images klasörüne gidelim. Burada cokpis.css dosyasını yenitema.css olarak kopyalayalım. Bundan sonraki şeyler sizin CSS yaratıcılığına kalmıştır.
Hazır Sözlük üzerinden kullanıcıların e-posta adreslerine otomatik e-posta atmak için aşağıdaki dosyalarda e-posta ayarlarının yapılmış olması lazımdır. Bu dosyalara girip "@" karakterini aratırsanız değiştirmeniz gereken kodlara daha kolay ulaşırsınız.
1) inc/regok.php
2) inc/passwd.php
3) inc/forgetpass.php
4) adm/duyuru.php
Hazır Sözlük ilk kurulduğunda bir çok yerde yapımcısının web sitesi olan terimler.net 'in yazısını görebilirsiniz. Bu yazıyı kendi sözlük adınızla değiştirmek için ana klasördeki sozluk.php ve index.php dosyalarına girip "terimler" kelimesini aratın. Bulduğunuz yerlerdeki bu kelimeleri yeni sözlük adınızla değiştirin.
Ayrıca aşağıdaki dosyalarda da terimler.net isimleri geçmektedir. Bunları da düzeltmelisiniz. Yoksa birçok kullanıcı mesajında site isminiz farklı gözükür.
1) inc/regok.php
2) inc/passwd.php
Hazır sözlük scriptini ilk olarak kurduğunuzda veritabanı üzerinde tek bir hesap vardır. Bu da admin hesabıdır. Eğer scripti bu blogda verilen linkten indirmişseniz kullanıcı adı admin, şifresi deneme 'dir. Şayet scripti başka bir yerden bulduysanız ve bir türlü siteye giriş yapamıyorsanız PhpMyAdmin panel üzerinden veritabanına girip, user tablosundaki bilgileri değiştirebilirsiniz. Tüm üyelerin şifreleri SHA1 ile şifrelenmiş bir şekilde saklanır. Eğer siteye giriş yapamıyorsanız user tablosundaki nick ve sifre sütunlarındaki bilgileri değiştirebilirsiniz. Mesela sifreyi "deneme" yapmak için sifre sütununa
d88ea461adab9a5d6d2d760f82bbd6b1ba81452e yazmalısınız.
20.03.2009 tarihli ekleme:
Kayıtlı bir yazar siteye girmek istediğinde inc/master.php dosyası çalışır ve yazar giriş paneli ekrana gelir. Buradaki bilgiler form aracılığıyla checklogin.php dosyasına gönderilir. İşte bir yazarın giriş kontrolleri burada yapılır. Göreceksiniz ki burada SHA1 şifrelemesi ile şifre kontrolü yapılıyor.
Yeni bir yazar adayı kayıt yapmak istediğinde inc/reg1.php dosyası çağırılır. Bu sayfada giriş kurallarının onaylanması istenir. Buradan inc/reg2.php dosyasına geçilir. Burada yazarın bilgileri alınır (nick, şifre, email, şehir, yaş). Bu bilgiler yine form aracılığıyla inc/regok.php 'ye gönderilir. Eğer e-mail ayarlarınızı doğru yapmadıysanız bu dosyada kullanıcıya email yollanması sırasında hata meydana gelebilir. Şifre hatırlatma ekranı inc/forgetpass.php dosyası üzerinden çalışır. Bu iki dosyadaki e-posta ayarlarınızı düzeltmelisiniz.
d88ea461adab9a5d6d2d760f82bbd6b1ba81452e yazmalısınız.
20.03.2009 tarihli ekleme:
Kayıtlı bir yazar siteye girmek istediğinde inc/master.php dosyası çalışır ve yazar giriş paneli ekrana gelir. Buradaki bilgiler form aracılığıyla checklogin.php dosyasına gönderilir. İşte bir yazarın giriş kontrolleri burada yapılır. Göreceksiniz ki burada SHA1 şifrelemesi ile şifre kontrolü yapılıyor.
Yeni bir yazar adayı kayıt yapmak istediğinde inc/reg1.php dosyası çağırılır. Bu sayfada giriş kurallarının onaylanması istenir. Buradan inc/reg2.php dosyasına geçilir. Burada yazarın bilgileri alınır (nick, şifre, email, şehir, yaş). Bu bilgiler yine form aracılığıyla inc/regok.php 'ye gönderilir. Eğer e-mail ayarlarınızı doğru yapmadıysanız bu dosyada kullanıcıya email yollanması sırasında hata meydana gelebilir. Şifre hatırlatma ekranı inc/forgetpass.php dosyası üzerinden çalışır. Bu iki dosyadaki e-posta ayarlarınızı düzeltmelisiniz.
2 - Veritabanı Kurulumu ve Ayarları
/ Category: database, db, ekşi, hazır, script, sourtimes, sözlük, veritabanıHazır sözlük scripti için boş bir veritabanı yapısı kurmak için buradaki dosyayı indirin. PhpMyAdmin paneline girip bir veritabanı oluşturun. Bu esnada MySQL bağlantı karşılaştırması ayarının utf8_unicode_ci olmasına dikkat edin.
Oluşturduğunuz veritabanı içerisindeki SQL penceresini çağırın ve dosyada belirtilen tüm kodları seçip oraya yapıştırın. Ardından da Git butonuna basarak sorguyu çalıştırın. Bu işlem sonucunda belirttiğiniz veritabanı içerisine sözlüğün tablo yapısı kurulacaktır. Şimdi sıra geldi veritabanı ile scriptimizi ilişkilendirmeye.
Hazır sözlük scriptinin bulunduğu klasördeki inc klasörüne girip baglan.php dosyasını bulun. Bu dosya veritabanı ayarlarını tutan dosyadır. Dosyadaki ayarları kendi hosting/localhost ayarlarınıza uygun olarak değiştirin.
$host = "localhost";
(genellikle bu şekliyle kalır veya hosting firmanızın verdiği bilgiyi kullanın)
$user = "kullanici_isim";
(hosting/localhost veritabanı kullanıcı adınız)
$password = "sifre";
(hosting/localhost veritabanı kullanıcı şifreniz)
$name = "veritabani_adi";
(phpmysql üzerindeki veritabanı adı)
Eğer veritabanı bağlantısı doğru yapıldıysa sözlük açılacaktır ve "sözlük yazım kuralları diye bir konu yok ki" yazısı ekranda belirecektir. Sözlükte henüz başlık ve entry olmadığı için sol frame gözükmez.
Bu işlemleri doğru olarak yaptıysanız ekran görüntüsü şu şekilde oluşacak.
Resmi Büyük Gör
Hazır Sözlük, Ekşi Sözlük benzeri bir php scriptidir. Kurulumu kolay olup dileyen herkes kendi sözlüğünü kurabilir. İlk olarak caesar tarafından yazılmış ve piyasada bir çok sözlük sitesinin açılmasına sebep olmuştur.
Hazır sözlük scriptini buradan indirebilirsiniz. Hazır sözlük hakkında yazılmış yazıları buradan okuyabilirsiniz.