pillinetwork hesabınızla giriş yapın.

Etiket:

ziyaretçi defteri hakkındaki yazılar:

Drupal ile Ücretsiz Arkadaşlık Sitesi

Drupal ile oluÅŸturulmuÅŸ Facebook benzeri site.
Drupal ile oluÅŸturulmuÅŸ Facebook benzeri site.

Kodaman'da ki ilk yazım. Onun için kusurlarımı hoş görmenizi istiyorum arkadaşlar. Öncelikle kod kullanarak anlatmayacağımı da bilmenizi isterim. Zira sitede kodlama anlatılmadan yazılan bir çok yazı var.

Drupal, çoğumuzun da bildiği gibi bir içerik yönetim sistemi. Drupal'ın kurulumu, eklenti yüklemesi v.b. ile ilgili kısımları xiackok bizlere burada ayrıntılı bir şekilde anlatmış. Onun için ben bu kısımları bildiğinizi varsayıyorum.

DrupalDersleri.org 'tan da drupal ile ilgili ayrıntılı bilgilere ulaşabilirsiniz.

*Statusbook
Öncelikle sizin yerinize her şeyi ayarlayan bir elinizin yağda bir elinizin balda olduğu hazır mı hazırcıların eklentisi Statusbook'tan biraz bahsedeyim. Bu eklentiyi pek önerdiğimi söyleyemem. Ama gerçekten hiçbir şey bilmeyenlerin çok beğeneceği bir eklenti. Yukarıda resmini gördüğünüz Facebook benzeri arkadaşlık sitesini bu eklenti ve beraberindeki temayı kullanarak elde edebilirsiniz. İnanmayanlar eklentinin demosunu inceleyebilirler. Statusbook 1.4 sürümünü buradan indirebilirsiniz. Yeni sürümler için bu adresi kontrol etmeyi unutmayın. Eklentinin ayrıntılı tanıtım yazısı burada yer almakta.

*Privatemsg

İşte size drupal ile kurulacak olan arkadaşlık sitesinin olmazsa olmaz, vazgeçilmez özel mesajlaşma eklentisi Privatemsg. Bu eklenti ile bütün üyeler kendi aralarında mesajlaşabilirler. Ayrıca bu eklenti, üyeler yeni mesaj aldıklarında onlara eposta ile, otomatik olarak bildirim yollayabilir. Yine eklenti ile ilgili Türkçe ayrıntılı bilgiye buradan ulaşabilirsiniz.

Spacer
Spacer
/* mehmetmertbarok yazdı. 13 Temmuz 2010 11:55. 0 yorum var */

CakePHP ile basit bir ziyaretçi defteri - 2

Bir önceki yazımda oluşturduğumuz ziyaretçi defterine herkes yazı yazabiliyordu. Şimdi de bu ziyaretçi defterine yazı yazmak için üye girişi yapma zorunluluğu ekleyeceğiz.
Ziyaretçi defterinde yazdığımız yazıların saklanacağı bir tablo oluşturmuştuk. Şimdi de kullanıcı bilgilerinin saklanacağı bir tablo oluşturacağız. Fakat bu tabloyu oluşturmadan önce diğer tablomuzda bir değişiklik yapmamız lazım. Ziyaretçi defterinde oluşturduğumuz tablo şu şekildeydi:

1
2
3
4
5
6
7
CREATE TABLE `defter`.`posts` (
`id` INT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`created` DATETIME NOT NULL ,
`title` VARCHAR( 128 ) NOT NULL ,
`body` TEXT NOT NULL ,
`user` VARCHAR( 32 ) NOT NULL
) ENGINE = MYISAM

Buradaki user alanını user_id olarak değiştirip VARCHAR( 32 ) yerine de INT( 8 ) yazıyoruz. Değişiklik yaptıktan sonraki hali:
1
2
3
4
5
6
7
CREATE TABLE `defter`.`posts` (
`id` INT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`created` DATETIME NOT NULL ,
`title` VARCHAR( 128 ) NOT NULL ,
`body` TEXT NOT NULL ,
`user_id` INT( 8 ) NOT NULL
) ENGINE = MYISAM

Bunu yapmadan önce user bir string değere karşılık geliyordu ve ziyaretçi defterine yazı eklerken kullanıcı tarafından giriliyordu. Şimdi ise user_id oldu ve bir sayıya karşılık geliyor. Yani birazdan oluşturacağımız users tablosunda yer alan kullanıcıların id değeri.
Ali isminde bir kullanıcımız olsun. Ali'nin id'si 17 olsun ve Ali ziyaretçi defterine bir yazı eklemek için giriş yapsın. Ali, ziyaretçi defterine bir yazı yazdığında bu yazının user_id değeri 17 olur. Yazıyı ekrana yazdırırken de id'si o yazının user_id değeri olan kullanıcın adı yani name değeri veritabanından okunur. Şimdi ziyaretçi defterimizi geliştirmeye başlayalım. Ziyaretçi defterini oluşturmadıysanız buradan oluşturduktan sonra yazının geri kalan kısmını okumaya devam edin.
Oluşturduğumuz veritabanında (defter) users isminde bir tablo oluşturalım.
1
2
3
4
5
6
7
CREATE TABLE `defter`.`users` (
`id` INT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 32 ) NOT NULL ,
`password` VARCHAR( 64 ) NOT NULL ,
`email` VARCHAR( 128 ) NOT NULL ,
`created` DATETIME NOT NULL
) ENGINE = MYISAM

Model OluÅŸturma
Şimdi cakeyol/app/models/ dizini içine user.php ismiyle user modelimizi oluşturup içine şunları yazalım:
1
2
3
4
5
6
7
<?php
class User extends AppModel
{
var $name = 'User';
var $hasMany = 'Post';
}
?>

Spacer
Spacer
/* ceyranci yazdı. 20 Nisan 2009 15:10. 7 yorum var */

CakePHP ile basit bir ziyaretçi defteri

CakePHP kurulumu daha önceden yazılmıştı. Şimdi de basit bir ziyaretçi defteri yapacağız. Öncelikle verilen saklanacağı bir veritabanı oluşturmak için phpmyadmin sayfasına girip defter isminde bir veritabanı oluşturuyoruz. CakePHP'nin dosyalarının bulunduğu dizine cakeyol diyelim. Burası localhost içinde defter isminde bir dizin olsun. Şimdi de cakeyol/app/config/database.php.default dosyasının adını database.php olarak değiştirdikten sonra dosyayı açıp default ayarlar bölümüne mysql kullanıcı adımızı (herhangi bir kullanıcı adı belirtmediyseniz kullanıcı adımız root olacaktor), parolamızı (parola belirtmediyseniz boş bırakın) ve kullanacağımız veritabanı ismini (defter) yazıyoruz.
1
2
3
4
5
6
7
8
9
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'defter',
'prefix' => '',
);

Şimdi http://localhost/defter yazdığımızda karşımıza CakePHP varsayılan sayfası gelecek. Bizden güvenlik için cakeyol/app/config/core.php dosyasındaki Security.salt değerini değiştirmemizi isteyen bir uyarı çıkacak. Bu değeri değiştirdikten sonra bu uyarı kaybolur. Bu sayfada bunun haricinde dört bilgilendirme daha vardır. Bunlar:
  • Your tmp directory is writable.
  • The FileEngine is being used for caching. To change the config edit APP/config/core.php
  • Your database configuration file is present.
  • Cake is able to connect to the database.
    Bu dört uyarı herşey herşey yolunda demektir.
    Tablo OluÅŸturma
    Veritabanını oluşturduktan sonra defter ismindeki veritabanının içine posts isminde bir tablo oluşturalım. Bunun için şu sorguyu çalıştıralım:
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `defter`.`posts` (
    `id` INT( 8 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `created` DATETIME NOT NULL ,
    `title` VARCHAR( 128 ) NOT NULL ,
    `body` TEXT NOT NULL ,
    `user` VARCHAR( 32 ) NOT NULL
    ) ENGINE = MYISAM

    Tablomuzu oluşturduk. Tablomuzda 5 eleman var. Bunlardan id her yazının kimlik numarasıdır, created oluşturulma tarihi, title başlığı, body yazını içeriği, user ise yazıyı yazanın adıdır. Bunları istediğimiz kadar arttırabiliriz. Tablodaki bu isimleri ingilizce seçmemizin nedeni ise CakePHP'nin bazı ilişkilendirmelerinde ingilizce gramer kullanmasıdır. Mesel tablo ismi model isminin çoğuludur. Yani tablo ismi posts ise model ismi post olmalıdır ya da tablo ismi children ise model ismi child olmalıdır. Buna benzer bir kaç kural daha var onları da gerektiğinde kullanacağız.
    Model oluÅŸturma
    cakeyol/app/models dizini içine post.php isminde bir dosya oluşturuyoruz -tablomuz verdiğimiz ismin tekil hali- ve içeriğini de şöyle yapıyoruz:
    1
    2
    3
    class Post extends AppModel {
    var $name='Post'
    }

    Şu an içinde modelimizde isimden başka belirteceğimiz birşey yok. $name değişkenine atadığımız 'Post' değerinin başharfinin büyük olmasına dikkat edin.
    Controller OluÅŸturma
    cakeyol/app/controllers dizinin içine yazilar_controller.php isminde bir dosya oluşturuyoruz ve içeriğini de şöyle yapıyoruz:
    1
    2
    3
    4
    5
    6
    class YazilarController extends AppController{
    var $name='Posts';
    function index(){
    $this->set('tum_yazilar',$this->Post->findAll());
    }
    }

    Burada tanımladığımız sınıfın ismi ile controller dosyasının ismiyle aynı olup başharfi büyük olmalı, _ karakterleri kaldırılmalı ve _ karakterinden sonra gelen ilk harf büyük olmalı. (yazilar_controller.php -> YazilarController, kullanicilar_controller.php -> KullaniciController ). Sayfa isimleride controller adı/fonksiyon adı şeklinde oluyor. Yani yazilar_controller.php dosyasının içine yazdığımız bir fonksiyon - index() fonksiyonu - www.sitem.com/yazilar/index adresindeki olaydır.
    View OluÅŸturma
    Controller dosyasında yazdığımız her fonksiyon için bir view dosyası tanımlamamız lazım. cakeyol/app/views dizini içine posts isminde bir dizin oluşturup içine fonksiyonun adi+*.ctp şeklinde bir dosya oluşturuyoruz. index fonksiyonunun viewini yazdığımız için index.ctp isminde bir dosya oluşturuyoruz ve içine şunları yazıyoruz:
    1
    2
    3
    4
    5
    6
    <?php foreach($tum_yazilar as $p):
    echo "<h2>".$p['Post']['title']."</h2>";
    echo "yazan: <b>".$p['Post']['user']."</b>";
    echo "<p>".$p['Post']['body']."</p>";
    endforeach;
    ?>

    Controller dosyasında $this->set('tum_yazilar',$this->Post->findAll()); satırıyla /yazilar/index sayfasına tum_yazilar isminde bir dizi gönderiyoruz. Bu dizini içeriğinde ise veritabanından çektiği Post modelimize ait tüm veriler bulunmaktadır. View sayfasında da bir foreach döngüsüyle $p değişkenine sırayla veritabanından çektiği tablo değerlerini atıyoruz ve sayfaya yazdırıyoruz. Artık verileri veritabanından okuyabiliyoruz. Şimdi de veritabanına bilgi girişi yapalım. Bunun için control dosyamıza bir fonksiyon daha ekleyelim.
    1
    2
    3
    4
    5
    6
    7
    function ekle(){
    if (!empty($this->data)){
    if ($this->Post->save($this->data)){
    $this->flash('Yazınız Eklendi','/yazilar/index');
    }
    }
    }

    İlk fonksiyonda ziyaretçi defterindeki yazıları okuyorduk. Burada ise ziyaretçi defterine yazı ekliyoruz. $this->data'nın içeriği ise sayfada kullanıcın girdiği verilerdir. Bu fonksiyonda ise $this->Post->save($this->data)) satırıyla veritabanına bilgi girişi yapıyoruz. $this->flash() komutunun ikinci parametresi ise - /yazilar/index - yazıyı ekledikten sonra yönlendirilecek olan sayfasını belirtir. Ekleme sayfasının view'i ise cakeyol/views/posts/ekle.ctp olacaktır ve içeriği de şöyle olacaktır:
    1
    2
    3
    4
    5
    6
    7
    <?php
    echo $form->create('Post',array('url'=>'/yazilar/ekle'));
    echo $form->input('user');
    echo $form->input('title');
    echo $form->input('body');
    echo $form->end('Kaydet');
    ?>

    Burada form oluşturmak için CakePHP'nin $form helperıni kullanıyoruz. $form->create() satırında parametre olarak modelimizin adı ve ekleme yaptığımız sayfanın adresini giriyoruz.$form->input() satırlarında ise tabloda belirttiğimiz alanları giriyoruz. "user" alanını özelliğini VARCHAR olarak belirttiğmiz için sayfada otomatik olarak
    1
    <input type=text>
    şeklinde görülüyor veya "body" alanını TEXT olarak belirttiğimiz için sayfada
    1
    <textarea></textarea>
    olarak görülüyor. $form->end() satırında ise Gönder butonunu oluşturuyoruz. index sayfasına yazı ekleme sayfasının linkini koyduktan sonra ziyaretçi defterimiz bitmiş olacak;
    1
    echo $html->link('Yazı ekle','/yazilar/ekle');

    Bu satırı index.ctp dosyasının sonuna ekliyoruz.
    Ziyaretçi defterimizi oluşturmuş bulunuyoruz. Eğer stilleri değiştirmek isterseniz cakeyol/app/webroot/css/cake.generic.css dosyasını düzenleyebilirsiniz.
Spacer
Spacer
/* ceyranci yazdı. 09 Nisan 2009 09:45. 5 yorum var */

PHP ile Basit Bir Message Board

Merhaba arkadaşlar. Bu kodaman'daki ilk yazım. Lafı uzatmadan kodlara geçmek istiyorum.

Yazılan mesajları mesajlar.txt dosyasından okuyan, basit ama güvenli bir ziyaretçi defteri uygulaması yazacağız. Bu tip uygulamalar hazırlamak isteyen arkadaşlar da buradaki mantıktan yararlanabilirler.

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
<?php
session_start();
// post metodu ile mesaj gelmiÅŸ mi?
if (isset($_POST['mesaj'])) {
// oturum oluÅŸturulmuÅŸ mu ve post ile gelen oturum bizim sessiondakine eÅŸit mi?
if (isset($_SESSION['oturum']) && $_POST['oturum'] == $_SESSION['oturum']) {
// html temizliÄŸi
$mesaj = htmlentities($_POST['mesaj']);
// mesajlar.txt yi yazmak için aç
$fp = fopen('./mesajlar.txt', 'a');
// mesajı yaz
fwrite($fp, "$mesaj<br /><hr />");
//dosyayı kapat
fclose($fp);
}
}
// rastgele sayı üret ve md5le
$oturum = md5(uniqid(rand(), true));
//ve ürettiğin sayıyı sessiona koy
$_SESSION['oturum'] = $oturum;
?>
<form method="post">
<input type="hidden" name="oturum" value="<?php echo $oturum ?>" />
<textarea name="mesaj" /></textarea><br />
<input type="submit">
</form>
<?php
// mesajlar.txt yi oku
readfile('./mesajlar.txt');
?>

Spacer
Spacer
/* antiseptic yazdı. 09 Şubat 2009 10:47. 7 yorum var */

etiket menüsü

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork