Bu eğiticide, AJAX kullanarak bir PHP ziyaretçi defteri oluşturacağız. Kayıtlar veri tabanında saklanacaktır. Tablo şu bilgileri içerecektir: gönderenin adı, e-posta adresi, IP adresi ve son girişin tarih-saati. JQuery kullanılacaktır (AJAX'ı uygulamak için). Basit bir spam koruması da uygulanacaktır - her 10 dakikada bir birden fazla giriş gönderemezsiniz.
Adım 1. SQL
Uygulamamızın çalışması için bir tablo oluşturmamız gerekiyor:
MEVCUT DEĞİLSE TABLO OLUŞTUR "s178_guestbook` (" id` int (10) unsigned NOT NULL auto_increment, "name` varchar (255) default" "," email` varchar (255) default "", "description` varchar (255) varsayılan "", `ne zaman` int (11) NULL DEĞİL varsayılan" 0 ",` ip` varchar (20) varsayılan NULL, BİRİNCİL ANAHTAR (`id`)) MOTOR \u003d MyISAM VARSAYILAN KARAKTER \u003d utf8;
Adım 2. PHP
Ana dosya aşağıdaki kodu içerecektir:
guestbook.php
\u003d ") \u003d\u003d 1) error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); else error_reporting (E_ALL & ~ E_NOTICE); require_once (" classes / CMySQL.php "); // veritabanı ile çalışmak için hizmet sınıfı dahil // Get Ziyaretçi IP işlevi getVisitorIP () ($ ip \u003d "0.0.0.0"; if ((isset ($ _ SERVER ["HTTP_X_FORWARDED_FOR"])) && (! Boş ($ _ SERVER ["HTTP_X_FORWARDED_FOR"]))) ($ ip \u003d $ _SERVER ["HTTP_X_FORWARDED_FOR"];) elseif ((isset ($ _ SUNUCU ["HTTP_CLIENT_IP"])) && (! Boş ($ _ SUNUCU ["HTTP_CLIENT_IP"]))) ($ ip \u003d patlat (".", $ _ SUNUCU [ "HTTP_CLIENT_IP"]); $ ip \u003d $ ip. ".". $ Ip. ".". $ Ip. ".". $ Ip;) elseif ((! Isset ($ _ SUNUCU ["HTTP_X_FORWARDED_FOR"])) | | (boş ($ _ SERVER ["HTTP_X_FORWARDED_FOR"]))) (((! isset ($ _ SUNUCU ["HTTP_CLIENT_IP"])) && (boş ($ _ SUNUCU ["HTTP_CLIENT_IP"]))) ($ ip \u003d $ _SERVER ["REMOTE_ADDR"];)) return $ ip;) // Ziyaretçi defteri fonksiyonundaki son girişleri alır getLastRecords ($ iLimit \u003d 3) ($ sRecords \u003d ""; $ aRecords \u003d $ GLOBALS ["MySQL"] -\u003e getAll ( "SEÇİNİZ * S178_guestbook` SİPARİŞE GÖRE` id` DESC L IMIT ($ iLimit) "); foreach ($ aRecords as $ i \u003d\u003e $ aInfo) ($ sWhen \u003d date ("F j, Y H: i", $ aInfo ["ne zaman"]); $ sRecords. \u003d<< ($ bilgi ["açıklama"])