30.07.2012

Yeni Free Ftp Hosting

Selamün Aleyküm Arkadaşlar 000webhost - Free Web Hosting With PHP, MySQL and cPanel, No Ads Servisi Kullanıldıktan Bir Süre Sonra Ücretsiz Sunduğu Hizmeti Çekilmez Hale Getirdi. Yavaş Çalışması ve Reklamları İle İlgiyi Kaybetti.
Negatif Davranışları : 
- 404 Sayfası Yok.
- Ftp Upload Yavaş
- Pop-up Reklam
 [ÖNİZLEME]

Bu Gibi Sorunlar Çıkınca Aldım Elime Klavye , Faremi Yeni Ftp Hostlar Aramaya Başladım ve sonunda  Sağlam Bir Site Buldum. Denedim Güzel Çalışıyor ve Reklam Sorunuda Yok. Sitemiz http://www.0adz.com/
Rahatlıkla Kullanabileceğimiz Bir Site Arkadaşlar Admin Panelinden Sizlere Bir Önizleme Aktarayım.

Evet Arkadaşlar Sitemizi Tanıktıktan Sonra Üyelik Almayı Göstereyim Sizlere İle Olarak www.0adz.com Sitesine Giriyoruz. Siteye Girdiğimizde Karşımıza
Şeklinde Bir Sayfa Çıkacaktır. Buradan Signup For Free Hosting With No Ads Linkine Tıklayıp Kayıt Olma Sayfamızı Açıyoruz. Sayfada Kutucuklarımızı Nasıl Dolduracağımızı Aşağıdaki Resimde İnce Ayrıntısıyla Anlattım.
Bu Kutu Bilgilerini Anlatımdaki Gibi Uygun Şekilde Yaptıntan Sonra Register Butonuna Basınız. Kayıtımızı Tamamladığımızda Karşımıza Aşağıdaki Gibi  Sayfa Açılacaktır.


Bu Sayfa Açıldığında Mail Adresimize Bir Onay Maili Gönderiliyor. Bu Sayfanın Türkçesini Buradan Okuyabilirsiniz.
E-posta Adresinize Giriş Yaptığınızda "0adz.com activation" Konulu Bir Mail Geldiğini Göreceksiniz. (Eğer Mail Gelen Kutusunda Yoksa Spam[Gereksiz] Kutusuna Bakınız.) Mail İçeriğine Girdiğimizde Aşağıdaki Gibi Bir Link Göreceğiz.
Siyah İçine Aldığımız Onay Mailine Tıkladığımızda Karşımıza Mail Onayı Adresi Çıkacaktır. Karşımıza Çıkan Pencere -> Bu Pencerenin Türkçesini Buradan Okuyabilirsiniz.
Burada Mailmizin Onaylandığı Bildiriyor. Ayrıyeten Olarak Kurduğumuz Siteye "Sunucu Tarafından Servis Kurulsun mu ? " Sorusu Bizlere Soruluyor. Bu Servis Kurma İşlemi Aslında Bizler Ftp Alanımıza SMF Forum Dosyalarını Attığımız Gibi (Eğer Burada Smf Forum Seçeneği Olsaydı) Buradan Smf Forum'u Seçip Bu Adımı Geçtikten Sonra Ftp Alanımızda Direk Olarak Smf Forum Dosyalarını Görecektik. Bu Adım Sadece Kullanıcılara Kolaylık Sağlamak İçindir. Eğer Sizler Smf'den Başka Forum Sistemi veya Blog Sistemi Kurmak İstiyorsanız Buradan Seçebilirsiniz. Ama Bizim İşim Smf Olduğu İçin Ben Bu Konu Üzerinden anlatacağım. Sizlere Yardımcı Olma Amaçlı Buradaki Bir İki Kategoriyi Anlatacağım.

Do not install script     -> Script (Hazır Sistem) Yüklenmesin.
1 :WordPress Blog     -> WordPress ( Tanımını Buradan Bakabiliriniz.) Scripti Yüklensin.
2 :Joomla! Cms           -> Joomla ( Tanımını  Buradan Bakabilirsiniz.) Scripti Yüklensin.
3 :PHPbb  Forum        -> PHPbb ( Tanımını  Buradan Bakabilirsiniz.) Scripti Yüklensin.
4 :MyBB Forum           -> MyBB ( Tanımını  Buradan Bakabilirsiniz.) Scripti Yüklensin.

Diğer Sistemler Araştırıp Öğrenebilirsiniz. Ben Anlatmayacağım Konu Değişmesin.




"Do not install script" Kategorisini Seçerek "Click Me To Contine" Butonuna Basarak Bu Adımıda Tamamlıyoruz.
  Click Me To Contine Butonuna Bastıktan Sonra Karşımıza Admin Paneli Direkt Olarak Çıkacaktır.
Burada Bizlere Ftp Giriş ve MYSQL Server Gereklidir.
---------------------------------------------------------------------------------------------
FTP Username                      :              FTP Giriş Adımız
FTP Password                      :              FTP Şifremiz
FTP Host Name                    :              FTP Giriş Serverimiz
MYSQL Username               :             MYSQL Giriş Adımız
MYSQL Password               :             MYSQL Şifremiz
MYSQL Host Name             :            MYSQL  Giriş Serverimiz
---------------------------------------------------------------------------------------------
Bize Gerekli Olan Alanlar Buralardır. Bu Bilgileri Alıp. Ftp Programımıza Dönelim. Filezilla Programını Daha Önceki Anlatımımızda Öğrenmiştik. Şimdi Giriş Yapmayı Görelim.
Girişimizi Yaptıktan Sonra Önceki Dersimizin Aynısı Gibi Smf Dosyalarımızı İndirip FTP Alanımıza Upload Ediyoruz. Burada Dikkat Edilmesi Gereken Bir Konu var. FTP Dosyalarımızı Serverimiz İçerisinde htdocs Adlı Klasöre Yüklüyoruz. Direkt Olarak Atmıyoruz.




11.07.2012

İndex Nasıl Yapılır?

Arkadaşlar Forumdaki Bir Çok Kardeşimiz İndex Nasıl Yapılır Konulu Sorular Yöneltmişlerdir. Ben İnternetten Sizlere Bir İki Video Araştırdım ve Yardımcı Olacağını Düşündüğüm Videoları Sizlerle Paylaşacağım.


http://www.webustalari.com/web-siteniz-icin-index-ucretsiz-b25.0/ Buradanda Ücretsiz İndex İndirebilirsiniz.

10.05.2012

img Kodu

<img>
Sayfamıza resim yerleştirmek için kullanılan etikettir. Etiketin kullanımına geçmeden önce Internet üzerinde kullanılan resim dosyası biçemleri üzerinde durmak istiyorum. Internet üzerinde en çok kullanılan resim dosyası biçemleri GIF, JPG ve PNG’dir. Bu biçemlerin seçilmesindeki amaç sayfanın yüklenmesini kolaylaştırmaktır. Windows ortamında en çok kullanılan resim formatı olan BMP'lerin web üzerinde kullanılmamasının en büyük sebebi, iyi resim kalitelerine karşın bunun bir bedeli olarak boyutlarının çok büyük olmasıdır. Kullanılan üç biçemin kendine has bazı özellikleri vardır.
GIF biçemi 256 renk kullanarak ve JPG biçemi de resmin kalitesinden biraz kısarak boyut sorununu halleder.
Bunun yanı sıra sayfamızda, mecbur kalmadıkça, büyük boyutlarda (hem ebat hem de kb olarak) resimler kullanmaktan kaçınmak sayfamızın yüklenmesini kolaylaştıracaktır. Yine bu etikette de sonlandırıcı yoktur. Yani bir yorum aralığı belirtmez.
Bu etiket altında kullanacağımız resmin bazı özelliklerini belirtmek için tanımlayıcı bazı kodlar kullanırız. Bu kodları aşağıdaki tabloda belirttim.
Tablo 1.8. Resim kullanımı için yardımcı kodlar
Girilecek KodGörevi
src = "resim_dosyası"Kullanacağımız resim dosyasının tam yolunu yazarak, hangi resmin kullanılacağını belirtiriz.
width = "genişlik"Resmin genişliği burada tanımlanır. Büyük bir resminiz varsa genişlik değerini "100%" vererek resmin web istemci genişliğine dinamik uydurulmasını sağlayabilirsiniz.
height = "yükseklik"Resmin yüksekliği burada tanımlanır.
vspace = "düşey_aralık"Resmimizi eğer metin içinde kullanıyorsak metne olan dikey uzaklığı.
hspace = "yatay_aralık"Resmimizi eğer metin içinde kullanıyorsak metne olan yatay uzaklığı.
alt = "metin"Resmin üzerinde fare ile bir süre beklendiğinde çıkan açıklayıcı bilgi burada tanımlanır.
border = "değer"Resmin dışında çerçeve çizgisi olacaksa "1", olmayacaksa "0" değeri kullanılır..
<img src=”./resimler/banner.jpg” width=”250” height=”85” alt=”Bilgisayar Topluluğu”>
Yukarıdaki satır bulunduğumuz dizinin bir üstünde bulunan “resimler” dizinindeki “banner.jpg” dosyasını belirtilen ölçüler doğrultusunda ekrana basar. (Resmin boyutlarını belirtmek zorunlu değildir!). “Alt” kodu ile tanımlı kısım da resmin üzerinde belli bir süre beklendiğinde “Bilgisayar Topluluğu” yazısının belirmesini sağlar.

Meta Kodları

<meta> </meta>
HTML dosyasındaki head etiketinin yorum aralığında tanımlanan bu etiket web istemcisine ve arama motorlarına sayfamız hakkında bilgi verir. Bu etiketi ile birlikte kullanılan yardımcı kodların açıklaması ilk bakışta size biraz karmaşık gelebilir. Her kodun kendisi ile birlikte tanımlanan yardımcı kodları da olduğu için bu etiket ile birlikte kullanılan kodların listesini öncekilerden daha farklı bir şekilde vermeyi uygun gördüm.
Tablo 1.11. Meta etiketi ana kodları
Girilecek KodGörevi
name = "veritürü" Bu bölümde author, description ve keywords özellikleri tanımlanır.
http-equiv = "veritürü" Bu bölümde refresh, expires, content ve content-style-type özellikleri tanımlanır.
size = "boyut"Yazımızın boyu belirlenir.
Yukarıdaki tabloda verdiğim kodlar ile birlikte tanımlanan yardımcı kodları tablo şeklinde vermek yerine örnek şeklinde vermenin daha faydalı olacağını düşündüm.
<meta name=”author” content=”Linux Belgelendirme Çalışma Grubu”>

<meta name=”description” content=”Linux Belgelendirme Çalışma Grubu Web Sayfası”>

<meta name=”keywords” content=”linux unix bsd openbsd freebsd programlama ozguryazılım özgüryazılım sunucu internet”>
Yukarıdaki birinci satır (author), sayfayı hazırlayanların kim olduğu hakkında kısa bilgiler verir.
İkinci satır (description), sitenin ne hakkında olduğuna dair kısa bir bilgi verir.
Sonuncu satır ise (keywords), arama motorlarına bilgi sağlamak için kullanılır. Yani siz bir arama motoruna girip arama kısmına linux, unix, bsd, openbsd, freebsd, programlama, özgüryazılım, sunucu, internet sözcüklerinden birisini yazarsanız bu site adresi de görüntülenecek adresler arasında olacaktır.
<meta http-equiv=”refresh” content=”5; URL=http://www.belgeler.org/”>

<meta http-equiv=”expires” content=”Wed, 25 Feb 2002 12:00:00 GMT”>

<meta http-equiv=”content” content-type=”text/html; charset=iso-8859-9”>

<meta http-equiv=”content-style-type” content=”text/css”>
Yukarıdaki birinci kod satırı (refresh) sayfamız açıldıktan 5 saniye sonra belirtilen adresi otomatik olarak açacaktır.
İkinci kod satırı (expires) GMT saat sistemine göre belirtilen saat ve tarihte sayfanın dosyası silinecektir.
Üçüncü kod satırı (content) tarayıcıya html dosyamızda kullandığımız karakter kodlamasının ISO-8859-9 olduğunu belirtir.
Dördüncü ve son satır (content-type-style) belgemizde kullanılan CSS dosyamızın bir metin dosyası olduğunu belirtir.
Daha öncede belirttiğim gibi meta etiketi ile tanımlanan bilgiler kullanıcıya görüntülenmez. Bu bilgiler genellikle tarayıcıya ve arama motorlarına bilgi sağlamak için kullanılır.

PHP ile MySQL Kullanmak

PHP ile MySQL kullanmak
Buraya kadar PHP ve MySQL’e giriş yaptım. Buradan sonra artık web üzerinde akrobasi yapmaya başlayabiliriz ;).
Aslında veritabanlarının çok çeşitli kullanımları olsa da ben genelde çerez yollama, sayaç, ziyaretçi defteri, parolalı giriş ve kullanıcı kaydı gibi konular üzerinde duracağım. Buradan sonra artık yeni işlev kullansam bile çok nadir olarak kullandığım yeni işlevin kullanım şeklini açıklayacağım (Bu belgeyi buraya kadar okumuş ve kendi çabaları ile bir şeyler yapmış birisi için buna ihtiyaç olacağını da sanmıyorum zaten ;)). Bu bölüm genelde yazacağım örnekler ve bu örneklerin açıklamaları halinde olacaktır.
İlk önce MySQL bölümünde kullandığım “kullanicilar” adlı tablodan PHP ile veri alma, veri silme ve veri yükleme işlemlerini gerçekleştirelim. Aşağıda “kullanicilar” tablosunu bir hatırlatma olsun diye tekrar verdim.
+----+--------------+---------+------------------------+-------+
| no | Ad           | Soyad   |  eposta                | bolum |
+----+--------------+---------+------------------------+-------+
|  1 | Fehmi Noyan  | ISI     | fni18444@gantep.edu.tr | eee   |
|  2 | Mehmet       | Korkmaz | kormkaz@linux.org.tr   | pe    |
|  3 | Adem         | Sarnici | a_sarnici@yahoo.com    | pe    |
|  4 | Seckin Fatih | Solgun  | sf_solgun@freebsd.org  | me    |
+----+--------------+---------+------------------------+-------+
Önce PHP ile veritabanına bağlanma ve veri alma işlemlerini ele alalım. PHP ile MySQL’e bağlanmak için mysql_connect() işlevi kullanılır.
<?
#################
#   mysql.php   #
#################

/* mysql’e bağlanma islemi */
@mysql_connect(“localhost”, ”kullanici”, ”parola”)
  or die (“Veritabanına bağlanırken bir hata oluştu!”);

/* mysql’de kendi veritabanimizi secim islemi */
@mysql_select_db(“base”)
  or die(“Veritanında bir hata oluştu!”);

$sira = 0;
while ($sira < 4)
{
  /* mysql’e sorgu gönderiliyor ve bu sorgudan gelen degerler bir degiskene atanıyor.
  $sorgu = mysql_query(“select * from kullanicilar”);
  $ad = mysql_result($sorgu, $sira, ’Ad’);
  echo “$ad <br>”;
  $sira++;
}
?>
Yukarıdaki PHP dosyası bizim kendi sunucumuz üzerindeki MySQL sunucusuna kullanici kullanıcı adı ve parola parolası ile bağlanıyor. Komutların başındaki @ işareti komutun işletilmesinde bir hata oluşursa ekrana hata mesajının basılmaması içindir. Onun yerine kendi belirlediğimiz hata mesajını or die kalıbı ile verebiliyoruz. Bağlanma işleminden sonra mysql_select_db (mysql’deki use base gibi) işlevi ile kendi veritabanımıza geçiyoruz.
Buradan sonra sira bir adlı bir değişkene 0(sıfır) değerini atadım. Bunun amacı MySQL’de işlem yapılan satırların sıfırdan itibaren bir satır sayısı almalarıdır. (Ben örneğimde while döngüsünde koşulu $sira < 4 şeklinde tanımladım ama normalde bir tabloda kaç satır olduğunu bilmeniz mümkün olmayabilir. Ben satır sayısını bildiğim için böyle bir yol seçtim.)
Döngü içerisinde $sorgu adlı değişkene mysql_query() işlevi ile SQL’den alınan bilgiler atanıyor. Daha sonra mysql_result() işlevi ile bu bilgilerden istek doğrultusundan ayıklama yapılıyor. mysql_result() işlevinin işleyiş tarzını bir düzleme benzetirsek:
  1. $sorgu adındaki bilgilerin olduğu düzleme git.
  2. $sira ile belirtilen satırdan
  3. Ad sütunundaki bilgiyi al.
şeklinde bir yorum yapılabilir. mysql_query() sorgusu ile alnan sonuçlar mysql_result() ile ayıklanır. $ad değişkenine atanan değerler alt alta ekrana basılıyor. Daha sonra $sira değişkeni bir arttırılıyor (aksi taktirde sonsuz bir döngü içine girilir!) ve döngüden çıkılıyor.
Şimdi de kafamızda hayali bir senaryo oluşturup bu senaryoya göre bir HTML dosyası ve bu dosyadan veri alan bir PHP dosyası yapalım. Kullanıcı kaydı tutan bir web formu ve bu formdan bilgi alacak PHP dosyasını oluşturalım. Ama daha önce bu bilgilerin kaydedileceği SQL tablosunu oluşturalım.
$ mysql –h localhost –u kullanici –p
Enter Password:

mysql> use base;

Database changed
mysql> create table kayit
    -> (no int auto_increment, kullaniciadi varchar(15),
    -> sifre(25), eposta(25), primary key(no));

mysql> quit
Yukarıda komut satırından mysql’e bağlanıp kayit isimli bir tablo oluşturdum. Şimdi sıra HTML form dosyamızda.
<!-- kayit.html -->
<html>
<body bgcolor="#FFFFFF" text="#000000">
<form action="kayit.php" method="post">
<b>Kullanıcı Adınız:</b><input type="text" name="u_name" size="20"><br>
<b>Parolanız:</b><input type="password" name="pass" size="20"><br>
<b>e-posta adresiniz:</b><input type="text" name="mail" size="20"><br>
<input type="submit" value="  Kayıt  ">
</form>
</body>
</html>
<?
/*  kayit.php */

@mysql_connect("localhost", "kullanici", "parola")
    or die("Veritabani ile baglanti kurulamadi!");
@mysql_select_db("base")
    or die("Veritabaninda bir hata olustu!");

@mysql_query("insert into kayit values(‘’,’$u_name’,’$pass’,’$mail’)");
echo "<center><b>Bilgileriniz varitabanina kaydedildi.</b></center>";
require("./kayit.html");
?>
Yukarıdaki PHP dosyası form ile gelen bilgileri veritabanındaki kayit adlı tabloya kaydediyor.
Kayıt işleminden sonra ekrana işlemin başarı ile gerçekleştirildiğine dair bir mesaj geliyor ve formu içeren HTML dosyası tekrar ekrana basılıyor.
MySQL’de tablo yenileme (update) ve veri silme (delete) komutları da mysql_query() işlevi ile kullanılır. Yani normal olarak SQL sorgusu gönderiliyor.
Burada sonra artık örnek uygulamalara geçiyorum.
Yeni bölüme başlamadan önce size phpinfo() işlevinden biraz söz etmek istiyorum. Yapmanız gereken tek şey bir PHP dosyası için <? phpinfo(); ?> yazıp kaydetmek. Üzerinde çalıştığınız sunucunun birçok özelliğini ve PHP ile birlikte kullanabileceğiniz birçok faydalı değişkeni bu işlev altında bulabilirsiniz.
Ziyaretçi Defteri Örneği
Çoğu web sitesinde gördüğümüz ziyaretçi defterlerini PHP yardımı ile kendi sitenizde de kullanabilirsiniz. Gerçi internet üzerinde bu işi yapan hazır betikler bulmak pek zor değil fakat bu basit uygulamaları daha ileri teknikler için bir ön adım olarak kullanmanız açısından faydalı olacaktır.
Bu iş için önce bir HTML dosyası ile kullanıcıdan bilgi alınmalı. Daha sonra bu bilgi bir PHP dosyası ile bir metin dosyasına yazılarak isteyen kullanıcılara görüntülenmeli.
<!-- Bu dosya defter.html adı ile kaydedilecek -->
<html>
<head>
<title>Ziyaretçi Defteri</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<center>
<br>
<table bgcolor="#000000" border="0" cellpadding="1" cellspacing="0" width="450">
  <tr><td>
    <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" width="450">
      <tr><td bgcolor="#006486">
        <b><center>Defteri Doldurun</b>
      </td></tr>
      <td>
        <form action="defter.php" method="post"><br>
           <b>Kimden :</b><input type="text" name="kimden" size=30><br><br>
          <center><textarea rows="15" cols="50" name="metin"></textarea>
      </td></tr>
      <tr><td>
        <center><br>
        <input type="submit" value="  Deftere ekle  "> 
        <input type="reset" value="  Yazdıklarımı sil  "><br><br>
      </td></tr>
    </table>
  </td></tr>
</table>
</body>
</html>
<?
/* Bu dosya defter.php adi ile kaydedilecek */

if ($dosya_ac = (fopen(“./defter.txt”,”a”)))
{
  $tarih = date("d.m.Y");
  $yeni_metin = "<br><table border='0' cellpadding='0' cellspacing='0' bgcolor='#eaeaea' width='600'>
  <tr><td><b>$kimden</b> tarafından <b>$tarih</b> tarihinde yazılmış.<br><br></td></tr>\n
  <tr><td>$metin</td></tr></table><br>”;
  fwrite($dosya_ac, $yeni_metin);
  fclose($dosya_ac);
  echo “Sayın $kimden defterimizi doldurduğunuz için teşekkürler.<br>”;
  require(“./defter.txt”);
}
 else
{
 echo “<center><br><b>Dosya açmada bir hata oluştu!</b></center>”;
}
?>
Yukarıdaki iki dosyayı yazdıktan sonra belirtilen isimler ile kaydedin. Tabii bu dosyalar basitten hazırlanmış haldeler. Görünümü güzelleştirmek ve geliştirmek size kalmış.
Sanırım ilk HTML dosyasında ne yaptığımı anlatmaya gerek yok. Bir form ile kimden ve metin adlı iki tane değişkeni belirtilen PHP dosyasına post yöntemi ile yolluyorum. Belki PHP dosyasında biraz karışıklık yaşamışsınızdır. Burada yabancı olduğunuz sadece date() işlevi var. PHP’de tarih almak için kullanılan date() işlevi, istenen bilgi türü küçük harf olursa (benim dosyamdaki d ve m gibi ) bilgi rakamla, büyük harf olursa (benim dosyamdaki Y gibi) bilgi tam olarak yazılır (tabi ki İngilizce).
Ziyaretçiden gelen bilgiler defter.txt adlı bir dosyada tutuluyor (dosyaya herkes için yazma yetkisi verilmelidir!) ve benim PHP koşulumun sonunda bu dosya ekrana yazdırılıyor (require ile). $metin değişkenini bir tablo içinde yazmamın tek sebebi ziyaretçiye görünecek dosyanın daha hoş olması içindir. require() işlevi ile ekrana yazdrdığımız dosya bir txt dosyası olsa bile içindeki HTML kodları istemci tarafından yorumlanacaktır. Eğer sayfanızdan ayrı bir bağ verip önceden yazılanların görüntülenmesini istiyorsanız, o zaman bir metin değil de HTML dosyası kullanmanız gerekecektir.
Sayaç Örneği
Sayaç yapmanın birçok yolu vardır. Ben en basitinden bir uyguluma olarak, dosyalara değer yazıp bu değerler üzerinde işlem yapan bir sayaç uygulaması örneği verdim.
<?
/* Bu dosya sayac.php adi ile kaydedilecek */

# $REMOTE_ADDR degiskeni sunucu hafizasinda tutulan gecici degiskenlerdendir.
$r_ip = $REMOTE_ADDR;

$ip_dosya_ac = fopen(“./ip.txt”, ”r”);
$dosyadaki_ip = fgets($ip_dosya_ac,1024);
if ($r_ip != $dosyadaki_ip)
{
  $sayac_dosyasi_ac = fopen(“./sayac.txt”, ”r”);
  $eski_deger = fgets($sayac_dosyasi_ac,1024);
  fclose($sayac_dosyasi_ac);

  $sayac_dosyasi_yaz = fopen(“./sayac.txt”,”w”);
  $yeni_deger = ++$eski_deger;
  fwrite($sayac_dosyasi_yaz, $yeni_deger);
  fclose($sayac_dosyasi_yaz);

  $ip_dosyasi_ac = fopen(“./ip.txt”,”w”);
  fwrite($ip_dosyasi_ac, $r_ip);
  fclose($ip_dosyasi_ac);

  echo “Sitemiz bugüne kadar <b>$yeni_deger</b> kere ziyaret edilmiştir.”;
} else {
  $sayac_dosyasi_ac = fopen(“./sayac.txt”, ”r”);
  $eski_deger = fgets($sayac_dosyasi_ac,1024);
  fclose($sayac_dosyasi_ac);
  echo “Sitemiz bugüne kadar <b>$eski_deger</b> kere ziyaret edilmiştir.”;
}
?>
Yukarıdaki dosyayı oluşturduktan sonra aynı dizine sayac.txt ve ip.txt diye iki dosya oluşturun. Yalnız sayac.txt dosyasının içine başlangıç değeri olarak 0(sıfır) yazmalısınız.
Yukarıdaki PHP programı önce ip.txt dosyasını açıp içindeki IP numarası ile ziyaretçinin IP numarasını karşılaştırıyor. Eğer iki numara aynı değilse sayaç dosyası açılıyor ve dosyada eski ziyaretçi sayısı ($eski_deger) okunuyor. Daha sonra bu okunan eski değer bir arttırılıp yani bir değişkene ($yeni_değer) atanıyor. Daha sonra IP değerinin tutulduğu dosya açılıp ziyaretçinin IP numarası bu dosyaya yazılıyor. En son olarak da ziyaretçiye sitenin bugüne kadar kaç defa ziyaret edildiğini gösteren bir mesaj ekrana yazılıyor.
Çerez Örneği
Çerezler HTTP ile kullanıcının bilgisayarına gönderdiğimiz bilgi paketleridir. Bu bilgiler düz yazı dosyası halinde kullanıcıya ulaşır ve kullanılan istemcinin tipine göre herhangi bir dizinde belirlenen süre kadar saklı tutulur. Çerezlere gönderen bilgisayar dışında başka bir bilgisayar tarafından ulaşılamaz. Windows sistemlerde MS-Internet Explorer, sunucu tarafında yollanan çerezleri C:\WINDOWS\Cookies dizini altında saklar. Linux altında, kullanılan istemci tarafından kullanıcının kendi ev dizininde oluşturulun gizli bir dizinde saklanır.
Örneğimde bir web sitesine parola ile giriş yapmış bir kullanıcının bilgisayarına yollanan çerezin kullanımı var. Tabii bu örnek için kullandığım veritabanı bilgilerinin varolduğunu varsayıyorum.
<!-- Bu dosya index.html adı ile kaydedilecek -->
<html>
<head>
<title>Şifrenizi girin</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<br><br>
<center>
<form action="login.php" method="post">
  <b>Kullanıcı adınız</b><input type="text" name="uid" size="20"><br>
  <b>Parolanız</b><input type="password" name="passwd" size="20"><br><br>
  <input type="submit" value="  Giriş  ">
</form>
</body>
</html>
<?
/* bu dosya login.php adi ile kaydedilecek */

if (isset($uid) && isset($passwd)) {
  # Veritabanina baglaniliyor
  @mysql_connect(“localhost”, ”kullanici”, ”parola”)
      or die(“Veritabani ile baglanti kurulamadi!”);
  @mysql_select_db(“base”)
      or die(“Veritabaninda bir hata olustu!”);

  $sorgu = mysql_query(“select  * from kayit”);
  $db_passwd = mysql_result($sorgu, $uid, ’parola’);
  if ($db_passwd == $passwd) {
    setcookie(“identify”,”OK”, time() + 3600);
    echo “Cerez yollandi.”;
  } else {
    echo “<center><b>Kullanici adi ve sifrenizi kontrol edin!</b></center>”;
    require(“./index.html”);
  }
} else {
  echo “<center><b>Bir kullanici adi ve sifre girmelisiniz!</b></center>”;
  require(“./index.html”);
}
?>
Bu PHP dosyası eğer formdan $passwd ve $uid değişkenleri gelirse if döngüsüne giriyor. Döngü içerisinde MySQL’e bağlanılıp kayit adlı tablodan kullanıcı adı $uid olan satırdaki parola alınıp bir değişkene ($db_passwd) atanıyor. Eğer iki şifre aynı ise setcookie() işlevi ile kullanıcıya çerez yollanıyor. Yollanan çerezin adı identify ve bu çerezin değeri OK. Karşı tarafın bilgisayarında kalma süresi ise 1 saat (3600 saniye). Çerez yollandıktan sonra ekrana “Cerez yollandi.” diye bir mesaj yazılıyor.
Çerez ile yollanan bir değişkenin değerini $deger adlı bir değişkene atmak için
   $deger = $HTTP_COOKIE_VARS["cerez_adi"];
satırı kullanılır. Ancak çerezleri kullanırken dikkat etmeniz gereken önemli bir nokta var! Çerezi yolladığınız PHP dosyası ile aynı çerezin değerini çağıramıyorsunuz. Bu işlemi başka bir dosya üzerinde yapmak zorundasınız.
Renk Tablosu Örneği
Bu örneğimde HTML ile kullanabileceğiniz renklerin onaltılık tabandaki karşılıklarını veren bir PHP betiği var. Betik 512 tane rengin onaltılık kod karşılığını vermektedir. Aynı betik üzerinde sadece bir küçük değişiklik yaparak tam olarak 4096 tane rengin onaltılık karşılığını almak mümkündür. Bunu için, kodun başında yorum işareti ile verilen $d dizisini (16 elemanlı) yorum olmaktan çıkarıp normal (8 elemanlı) olan diziyi yorum satırı haline getirmek yeterlidir.
Fakat 4096 renk arasından kullanacağınız rengi seçmek gerçekten çok güçtür ve renk tonlamalarındaki geçişler çok yumuşak olduğu için çoğu renk birbirinin aynı gibi görünecektir.
<!-- Bu dosyayı renk.php adı ile kaydedin -->
<html><head><title>HTML Renk Kodları</title></head>
<body bgcolor="#e8e8e8" text="#000000">
<center>
<h1>HTML Renk Kodları</h1>
<table border="0" width="540" cellpadding="0" cellspacing="2">

<?
//$d = array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
$d = array("0","2","4","6","8","a","c","e");
$d_c = count($d);
// Kırmızı
$r_i = 0;
while($r_i < $d_c) {
  $r = $d[$r_i] . $d[$r_i];
  // Yeşil
  $g_i = 0;
  while($g_i < $d_c) {
    $g = $d[$g_i] . $d[$g_i];
    // Mavi
    $b_i = 0;
    echo "<tr>";
    while($b_i < $d_c) {
      $b = $d[$b_i] . $d[$b_i];

      // HTML Kodu ile tablonun satirlari olusturuluyor
      $renk = "#" . $r . $g . $b;
      echo "\n<td style='background:$renk; color:white'><b>$renk</b></td>";
      $b_i++;
    }
    echo "\n</tr>";
    $g_i++;
  }
  $r_i++;
}
?>
</table></center></body></html>

MySQL Nedir?

MySQL Bir (ilişkisel) veritabanı yönetim sistemidir.

Tüm verileri tek bir ambara yığmak yerine farklı tablolarda ve veritabanlarında düzenli bir biçimde saklar.

SQL adı verilen, veritabanlarına erişmek için kullanılan en yaygın ve standart dil ile işlemler yapıyor.

Çifte lisanslı bir yazılımdır. Hem Genel Kamu Lisansı'na (GPL) sahip özgür bir yazılım, hem de GPL'in kısıtladığı alanlarda kullanmak isteyenler için ayrı bir lisansa sahiptir.

MySQL AB isimli (eski ismi TCX) bir İsveç firması tarafından geliştiriliyor.

MySQL'in son kararlı sürümü 4.1.7, yeni geliştirilen henüz alfa olan sürümü 5.0.2

Çok hızlı, güvenilir ve kullanımı kolay.

MySQL'e Python'dan Java'ya kadar birçok programlama dili ile erişilebilir.

Apache ve PHP ile beraber web-veritabanı uygulamalarında çok yaygın olarak kullanılır. Apache-PHP-MySQL üçlüsü için hazırlanmış çok geniş bir yazılım yelpazesi bulunuyor.

Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahip.

MySQL'in Bazı Özellikleri

Unix türevlerinden Amiga'ya kadar birçok farklı platformda çalışabiliyor.

Birden fazla CPU ile kolaylıkla çalışabiliyor.

60000'in üzerinde tablo, 5 milyarın üzerinde satır ile çalıştığı söylenen MySQL sistemler bulunuyor.

Transaction ve/ya atomik işlem kullanan çeşitli tablo tiplerini destekliyor.

Tabloların kontrolü, optimizasyonu ve tamiri hızlı bir biçimde yapılabiliyor.

Windows için ODBC desteği var, ODBC 2.5 komutları tamamen destekleniyor.

Farklı karakter setlerini (iso8859-9, ...) ve onlara göre sıralama yapılmasını destekliyor, farklı dillerde hata mesajları verebiliyor.

Özellikle internet ortamında önem kazanan, çok esnek ve güçlü bir kullanıcı erişim kısıtlama/yetkilendirme sistemine sahip.

MySQL'in Eksikleri

Oracle SQL'de kullanılan SELECT ... INTO table ... komutunu desteklemiyor. Ancak Ansi SQL'de hemen hemen aynı işi gören INSERT INTO ... SELECT ... mevcut.

Stored procedure / trigger desteği bulunmuyor.

Kullanıcı kısıtlamak için kullanılan "view" özelliği yok. Ancak MySQL'in gelişmiş bir erişim kısıtlama sistemi olduğu için ihtiyaç duyulmuyor.

MySQL Tablo Tipleri

MySQL, iki farklı tür tablo yapısını destekler :
Transaction Tabloları :
- InnoDB
- Berkeley DB

Atomik İşlem Tabloları :
- MyISAM
- HEAP
- MERGE
- ISAM

30.04.2012

Database Kayıtta Hata ve Çözümü

Arkadaşlar Son Zamanlarda 000webhost - Free Web Hosting With PHP, MySQL and cPanel, No Ads Servisi Free Olarak Vermiş Olduğu MySQL Databaseleri Hata Vermektedir.

Bayağıdır Bu Sorunu Nasıl Gidereceğimle Uğraştım. Diğer MySQL Database VEren Siteleri Denedim ve Hiç Birinden Olumlu Sonuç Alamadım. Bu Kez Databasemiz MySQL Değilde SQLite Database Kuracağız. Hiç Bir Servis Gerektirmeyen Bu Sistem Databasemizi Bu Kez FTP Alanı İçinde Oluşturacaktır.
Öncelikle SQLite Nedir? Bunu Öğrenelim.
SQLite:kullanımı oldukça basit, boyutları sayesinde mobile uygulamalardada rahatlıkla kullanabileceginiz veribatani kütüphanesidir.
Artıları
-Hiçbir kurulama gerek yoktur örneklemek gerekirse txt gibidir uzantısı .sqlite dır.
-Küçük boyutları sayesinde mobile uygulamalarda (symbian,android,ios platformları ornek olabilir) rahatlıkla kullanabilirsiniz bende suan android uygulamamda sıkça haşır neşir içerisindeyim (Default boyutu 225KB)
-Bağımsızdır,
-32 ve 64 Bit destekler.
-Son olarak SQL dilini kullandıgından SQL ugrasanlar çokçok kısa sürede alışabilir.
Eksileri
Aslında bu eksiklik biraz goreceli mesela benim için o kadarda eksik bir yon degil.
-Veritabanin Access gibi arayüzü yoktur (3.Parti uygulamalar hariç).
Sqlite hangi veritabani kütüphanesine alternatif gelmiştir sorusuna ise,bakınca MySQL,Access,Oracle gibi görünüyor fakat kendi sitesindede sıkca bahsedildigi gibi fopen a alternatif getirilmiştir.
Aslında Access e alternatif olabilir nedenlerini karsılastırmalı bir şekilde bir dahaki konuda deginicem gerçekten bazı konularda çok iyi.
Aşağıdaki Videomuzdan Sorunu Nasıl Çözeceğimize  Dair İpuçları Alacağız.

Tüm Hakları Gizlidir. İzinsiz Kopya Olunmaz. Blogger tarafından desteklenmektedir.