Herhangi bir karmaşıklıkta gelecek vaat eden, genişletilebilir ve etkili bir site oluşturmak için basit bir siteyle başlamalısınız. Bu işlem kolay değil, belirli temel PHP ve MySQL bilgisi gerektiriyor, ancak tek tek bakarsanız, yeni siteler oluştururken kullanışlı olacak bir tür “çalışma planı” oluşturabilirsiniz. Proje için "çekirdeği" ve temeli hazırlayalım. İlk başta normal bir kartvizit sitesi olacak, ancak daha sonra işlevsellik ekleyerek her şeye dönüştürülebilir. Öyleyse başlayalım.
1. Veritabanı hazırlığı. MySQL veritabanında ilk tabloyu oluşturun
Yeni bir veritabanı oluşturun, örneğin "sitem". Şahsen ben UTF-8 kodlaması ile çalışmaya alışığım, bu yüzden hemen bir rezervasyon yapacağım: sitenin tüm metin dosyalarının, veritabanının kendisinin, tabloların ve tablo alanlarının aynı kodlamada olduğundan emin olun.
Yeni bir veritabanında bir tablo oluşturun. Buna "sayfalar" diyelim. Bu tablo, gelecekteki sitenin statik sayfalarını ve bunlarla ilgili bilgileri saklayacaktır. Tablo aşağıdaki alanları içermelidir:
- page_id - sayfa kimliği (SMALLINT, birincil anahtar, auto_increment);
- page_alias - CNC adres dizisi için sayfa takma adı (VARCHAR, 255);
- page_title - tarayıcı penceresindeki sayfanın başlığı (VARCHAR, 255);
- page_meta_d - için sayfa meta açıklaması meta etiket açıklama(varchar, 255);
- page_meta_k - meta anahtar kelimeler meta anahtar kelime etiketi için (VARCHAR, 255);
- page_h1 - sayfa başlığı (VARCHAR, 255);
- page_s_desc - Kısa Açıklama materyal, örneğin site materyalleri bir blog (METİN) biçiminde olacaksa;
- page_content - sitenin orta sütununda görüntülenecek olan sayfanın ana metni (METİN);
- page_publish - sayfa yayınlanıyorsa "Y" veya gizliyse "N" içerir (CHAR, varsayılan "Y"dir).
Tabloyu oluşturduktan hemen sonra, değerleri girin ana sayfa alan. Ana sayfanın "page_alias" alanına "home" değerini eklemenizi öneririm. Meta etiketler - tüm sitenin temasına göre. Aynı şekilde, örneğin "hakkında" takma adı ve kendi meta etiketleri ile "Şirket hakkında" veya "kişiler" takma adıyla "Kişiler" vb. gibi başka sayfalar oluşturabilirsiniz.
2. Bir site yapılandırma dosyası oluşturun
Sitenin bu aşamada boş olması gereken kök klasöründe bir “cfg” klasörü oluşturuyoruz, içinde .htaccess kullanarak “deny from all” yönergesi ile erişimi kapatıyoruz. Aşağıdaki içeriğe sahip bir core.php dosyası oluşturun:
// MySQL
sınıf MyDB
{
var $dblogin = "root"; // VERİTABANI GİRİŞİNİZ
var $dbpass = ""; // VERİTABANI ŞİFRENİZ
var $db = "sitem"; // SİTE ÜZERİNE ADI
var $dbhost="localhost";
var$bağlantı;
var$sorgu;
var $hata;
var $sonuç;
var$veri;
var $getir;
fonksiyon connect() (
$this->link = mysql_connect($this->dbhost, $this->dblogin, $this->dbpass);
mysql_select_db($bu->db);
mysql_query("İSİM AYARLA utf8");
}
işlev kapat() (
mysql_close($bu->bağlantı);
}
İşlev çalıştırma($sorgu) (
$bu->sorgu = $sorgu;
$bu->sonuç = mysql_query($bu->sorgu, $bu->bağlantı);
$bu->err = mysql_error();
}
işlev satırı() (
$bu->veri = mysql_fetch_assoc($bu->sonuç);
}
gidip getirmek() (
while ($this->data = mysql_fetch_assoc($this->result)) (
$bu->getir = $bu->veri;
$ this->getir döndür;
}
}
fonksiyon durdurma() (
unset($bu->veri);
unset($bu->sonuç);
unset($bu->getir);
unset($bu->hata);
unset($bu->sorgu);
}
}
Bu dosya şu anda yalnızca basit bir veritabanı bağlantı sınıfı içeriyor, ancak gelecekte ona site kodunun herhangi bir yerinden erişilebilecek çeşitli yararlı işlevler ekleyebilirsiniz. Veritabanınız için kullanıcı adınızı ve şifrenizi değiştirmeyi unutmayın.
Bir Windows ortamında çalışıyorsanız, . Bu düzenleyicide satır numaralandırma vardır ve metni bir kodlamadan diğerine kolayca çevirir. DİKKAT! UTF-8 kodlamasında çalışıyorsanız - dosyaları BOM olmadan UTF-8'e dönüştürün - bu, gelecekte sorunlardan kaçınmanıza yardımcı olacaktır.
3. index.php oluşturun - ana site denetleyicisi
Yapılandırma dosyası oluşturuldu. Şimdi sitenin kök klasöründe index.php oluşturuyoruz - bu sitenin ana betiği olacak, bir tür "ana denetleyici" olacak. index.php dosyasının içeriği:
define("INDEX", ""); // ANA KONTROLÖR SABİTİNİ AYARLA
Require_once($_SERVER."/cfg/core.php"); // ÇEKİRDEĞİ BAĞLAYIN
// DB'YE BAĞLAN
$db = yeni MyDB();
$db->bağlan();
// ANA KONTROLÖR
geçiş ($_GET) (
durum "sayfa":
include($_SERVER."/com/page.php");
kırmak;
varsayılan:
include($_SERVER."/com/home.php");
kırmak;
}
Dahil($_SERVER."/template.php");
$db->kapat();
$_GET değişkeni, ana denetleyiciye istek üzerine hangi site bileşeninin yükleneceğini söyleyecektir. Artık sitemizin yalnızca iki bileşeni vardır: “sayfa” ve “ana sayfa” (prensipte, normal bir sayfayı görüntülemek için tek bir bileşenle idare edebilirsiniz, ancak genellikle sitenin ana sayfasının görünümü, normal sayfalardan farklıdır. menü öğeleri). Ana denetleyicinin mantığı şu şekildedir: gerekli bileşenin adı ($option değişkeninin değeri), değerine bağlı olarak URL dizesinden çıkarılır, bileşenin dosyası dahil edilir (/ com klasörü). Bileşen dosyası gerekli tüm işleri yapar, veri tabanından veri alır ve tasarım şablonuna geçirilecek değişkenlere yazar. En sonunda, bileşenlerde çıkarılan tüm değişkenlerin ve verilerin aktarıldığı site tasarım dosyası bağlanır. Bu kulağa çalıştığından çok daha karmaşık geliyor.
4. Normal bir sayfa çıktı bileşeni oluşturun
Sitenin kökünde bir "com" klasörü oluşturun - bileşen dosyalarını depolayacaktır. Bir site bileşeni, benim anlayışıma göre, sitenin farklı bölümleri için verilerin işlendiği bir dosyadır. Örneğin, normal bir sayfanın bileşeni, veri tabanından materyalin başlığını, açıklamasını ve metnini alır ve bunları $title, $meta_d, $meta_k, $content, vb. değişkenlere yazar. tasarım şablonu (her bileşen için kendi tasarım şablonunuzu oluşturabilirsiniz) ve kullanıcıya bir HTML sayfası olarak gösterilir. Örneğin, gelecekte oluşturulabilecek bir katalog bileşeni hemen hemen aynı şeyi yapacaktır, ancak ürünlerle ilgili verilerle - ve kendi özellikleri, tabloda başka alanlar vb. vardır. Bu nedenle, sitenin her işlevsel bölümü için ayrı bir bileşen oluşturmaya değer. MVC (Model-View-Controller) şemasında, bileşen bir modelin rolünü oynar.
"com" klasöründe bir "page.php" dosyası oluşturun. Dosyanın içeriği aşağıdaki gibidir:
/* SAYFA BİLEŞENİ */
$takma ad = $_GET;
$query = "SEÇ * sayfa_alias="".$alias."" AND page_publish="Y" LIMIT 1";
$db->run($sorgu);
$db->satır();
// BİLEŞEN DEĞİŞKENLERİ
$id = $db->veri;
$takma ad = $db->veri;
$başlık = $db->veri;
$h1 = $db->veri;
$meta_d = $db->veri;
$meta_k = $db->veri;
$s_desc = $db->veri;
$bileşen = $db->veri;
// SAYFA YOKSA
if (!$id) (
header("HTTP/1.1 404 Bulunamadı");
$bileşen = "HATA 404! Bu sayfa mevcut değil";
}
$db->dur();
5. Ana Sayfa Görüntüleme Bileşenini Oluşturun
Veritabanımızdaki ana sayfa "ev" takma adı altında saklanır ve şimdiye kadar yapısında sitenin normal sayfalarından farklı değildir - bu sadece bir makaledir. Bununla birlikte, bunun için ayrı bir bileşen oluşturacağız - tabiri caizse gelecek için.
"com" klasöründeki "home.php" bileşeninin içeriği, veritabanına sorgu dizesi ve bileşenin adı dışında, normal sayfa bileşeninin içeriğiyle hemen hemen aynıdır. Sorgu dizesi şimdi şöyle görünür:
$query = "SEÇ * wx_pages NEREDE page_alias="home" LIMIT 1";
6. Tüm site için bir tasarım şablonu oluşturun
Sitenin kök dizininde bir template.php dosyası oluşturun. Aslında bu HTML + CSS formatında normal bir web tasarım düzenidir, sadece PHP değişkenleri doğru yerlerde bulunur. Başlık etiketleri arasına ekle=$title?>, site ekinin orta sütununda=$component?>ve böylece şablon boyunca, bileşenlerde bildirilen gerekli değişkenleri yerleştiririz.
Kök klasörde ayrıca tasarım öğeleri için "css" ve "images" klasörleri bulunmalıdır. /css/style.css dosyasında - stilleri beğeninize göre özelleştirebilirsiniz.
7. Bağlantıları ve .htaccess dosyasını temizleyin
Temiz bağlantılar oluşturmak için, adres çubuğunu denetleyiciyi kullanarak ayrıştırmak gereksiz işlevsellik olarak kabul edildiğinden, her bileşen için ayrı ayrı kurallar için doğrudan talimatlar içeren mod_rewrite kullanıyorum. Bu aşamada .htaccess içeriği:
Motoru Yeniden Yaz
Yeniden Yazma Tabanı /
RewriteCond %(REQUEST_FILENAME) !-d
RewriteCond %(REQUEST_FILENAME) !-f
# YASAK DOSYALAR
RewriteRule .htaccess - [F]
RewriteRule template.php - [F]
# mod_yeniden yazma KURALLARI
RewriteRule sayfası/(+)([\/](0,1))\.htm$ index.php?option=page&alias=1$ [L]
Gelecekte, arama bileşenleri, katalog, makaleler blogu vb. için kurallar ekleyeceğiz. Tek bir nokta var: "sitem.com/index.php?option=pages&alias=about" gibi bağlantıları "sitem.com/pages/about.htm" gibi bir bağlantıya dönüştürmek - oldukça hoş görünüyor. Geliştirme aşamasında, güvenlik nedenleriyle $_GET dizisinden kaçınmaya çalışın ve ona güvenmeyin. Yalnızca ana denetleyici ($option değişkeni) ve içindeki bileşen ($alias değişkeni) için parametrelerin saklanması önerilir.
Ayrıca, sitenin her klasöründe “her ihtimale karşı” boş bir index.html dosyası oluşturun - bu, dizine adres çubuğundan erişirken hiçbir şeyin görüntülenmemesi için gereklidir.
Etiketler: php, mysql, site motoru, controller, site oluşturma, mvc
sadece konuştuk statik sayfalar, yani, kullanıcı onlarla nasıl etkileşime girerse girsin, her zaman değişmeden kalanlar ve içeriklerinin veya tasarımlarının değişmesi için sayfa sahibinin kodu manuel olarak düzenlemesi gerekir.
Dinamik sayfalar ve ihtiyaçları
Statik sayfalara ek olarak dinamik sayfalar da vardır. Çoğu artık internette. Bilgiler şuradan yüklenir: dış kaynaklar, bir veritabanı veya diğer dosyalar gibi. Bu tür sayfaların içeriği ve formatı, kullanıcının eylemlerine bağlı olarak değişebilir. Dinamik siteleri düzenlemek için, kodlarına müdahale etmek gerekli değildir - bu arada, aynı zamanda yalnızca belirli bir şekilde yapılandırılmış bir dosya olan özel olarak tasarlanmış bir dosya veya veritabanındaki içeriği değiştirmek yeterlidir.
Dinamik web siteleri oluşturmak için sadece HTML ve CSS yeterli değildir. Ayrıca programlama dillerinin yanı sıra onlar için veritabanları ve sorgulama dilleri kullanır. Çoğu zaman, modern dinamik siteler kendi alanlarında kullanılır. HTML çalışması, CSS, PHP, JavaScript, SQL. İlk iki kısaltma zaten size tanıdık geliyor, SQL veritabanlarına erişmek için kullanılıyor, JavaScript komutları tarayıcı tarafından işlenen ve genellikle perdeler veya sorunsuz açılan fotoğraflar gibi her türlü güzelliği göstermek için kullanılan istemci tarafı bir dildir, ancak PHP, diğer şeylerin yanı sıra site içeriği ile çalışan ve onu dinamik kılan sunucu taraflı bir programlama dilidir, bugün onunla temasa geçeceğiz.
include komutunun kullanımına bir örnek
Bir önceki yazımda sitenin blok düzeninden bahsetmiştim ve örnek olarak alıntı yapmıştım. en basit sayfa(belge index.html ve onunla ilişkili dosya stil.css).
Şimdi belgeyi böleceğiz index.html her biri sayfanın kendi bölümünü içerecek, kodu daha da ayırmaya, şablonun yapısını iyileştirmeye ve aslında sayfayı dinamik hale getirmeye yardımcı olacak birkaç dosyaya dönüştürün. Bu amaçla PHP dilini veya daha doğrusu yönergelerinden sadece birini kullanacağız - işlev Dahil etmek(), bir dosyayı diğerinin içinde içerir.
1. Blok düzeni ile ilgili makalede oluşturulan dosyanın iznini değiştirin dizinİle birlikte .htmlüzerinde .php belgeyi adlandırmak index.php. Dosya tipi .PHP sunucuya belgenin yazıldığını veya aynı adı taşıyan programlama dilinde ekler kullanıldığını belirtir.
2. Sayfanın bulunduğu klasörde bir dizin oluşturun bloklar.
3. Tüm destekleyici bilgiler (üst, alt, gezinme ve kenar çubuğu site) klasöre yerleştireceğimiz ayrı dosyalara çıkaracağız bloklar.
Bu nedenle, bloklar dizininde dört dosya oluşturun: başlık.php, navigasyon.php, kenar çubuğu.php ve altbilgi.php. Dosyaları kodla doldurun.
başlık (site başlığı)
4. Şablon klasör yapısını kontrol edin. Dosyalar kökte olmalıdır index.php, stil.css ve dizin bloklar.
klasör yapısı bloklar böyle olmalı.
5. Dosyada index.php mevcut kodu silin ve yeni bir tane yazın:
Ana sayfa içeriği
Tarayıcıda index.php dosyası öncekiyle tamamen aynı görünüyor, ancak şablonun yapısı tamamen değişti. Neler olduğunu daha sonra konuşacağız ve şimdi formun gizemli komutlarıyla ilgili soruya cevap vereceğiz. .
HTML kodu gibi, PHP kodunun da kendi başlangıç ve bitiş tanımı vardır. Bu nedenle, komutla bir PHP eki başlatmanız gerekir. , ve satırı ile bitirin ?> . Bu komutlar arasında ana kod yazılır. Bizim durumumuzda, bu sadece bir komuttur - Dahil etmek.
İşlev Dahil etmek() başka bir dosyadan dosyaya kod ekler, sayfanın farklı bölümlerini farklı belgelerde saklamayı mümkün kılar, böylece bunları birbirinden güvenilir bir şekilde ayırır.
Yapılan işlemler sonucunda dinamik bir sayfamız oldu. index.php, bölümleri farklı dosyalardan yüklenir. Bu sayede aynı şekilde klasör dosyalarından yardımcı elemanlar yükleyerek başka sayfalar oluşturabilirsiniz. bloklar.
Bu yaklaşım iyidir, çünkü 20-30 sayfalık bir sitedeki bir menü öğesinin adını değiştirmek istiyorsanız, daha sonra yeni oluşturulan bir yapıya sahip bir şablonda, yalnızca bir dosyada değişiklik yapmanız gerekecektir - bloklar /navigation.php ve menü, dahil olduğu tüm sayfalarda hemen değişecektir. Site statik olsaydı, bir menü öğesinin adını değiştirmek için, üzerinde değişiklik yapmanız gerekirdi. her 20-30 sayfa arası. Fark açıktır.
Son güncelleme: 1.11.2015
Şimdi, PHP ile çalışmaya dair bir ön anlayış kazandırmak için tasarlanmış küçük bir site oluşturacağız.
PHP'de programlar oluşturmak için bir metin düzenleyiciye ihtiyacımız var. Bugün en popüler program Notepad++.
Şimdi, sitenin tüm belgelerini depolayacak olan önceden oluşturulmuş C:\localhost dizinine geçelim. hadi oluşturalım Metin dosyası ve diyelim index.html. içinde açalım Metin düzeltici ve buna aşağıdaki kodu ekleyin:
Bilgilerinizi girin:
Html kodu, iki içeren bir form içerir. metin alanları. Butona tıklandığında, action özniteliğinde belirtildiği gibi form verileri display.php betiğine gönderilir.
Şimdi verileri işleyecek bu scripti oluşturalım. Klasöre ekle c:\yerel ana bilgisayar yeni metin dosyası. Şimdi display.php olarak yeniden adlandıralım. Varsayılan olarak, php program dosyalarının uzantısı vardır. .php. O halde display.php dosyasına aşağıdaki kodu ekleyelim:
Burada zaten html işaretlemesinde PHP kodu lekeleri var. Etiketler, bir sayfaya PHP ifadeleri eklemek için kullanılır, aralarında talimatlar bulunan PHP dili. AT php kodu form verilerini alıyoruz ve sayfada görüntülüyoruz.
Her bir PHP ifadesi noktalı virgülle bitmelidir. AT bu durumüç ifademiz var. Bunlardan ikisi gönderilen form verilerini alır, örneğin $name = $_POST["firstname"]; .
$name, bir miktar değeri tutacak bir değişkendir. PHP'deki tüm değişkenlerin önünde bir $ işareti bulunur. Ve index.html sayfasındaki form göndermek için POST yöntemini kullandığından, metin alanına name="firstname" özniteliği ile girilen değeri almak için $_POST["firstname"] ifadesini kullanabiliriz. Ve bu değer $name değişkenine girer.
Echo deyimi ile deyimden sonra gelen herhangi bir değeri veya metni sayfada görüntüleyebilirsiniz. Bu durumda (echo "Adınız: ".$ad ." " . $soyad .""), bir nokta kullanılarak, alıntılanan metin $name ve $surname değişkenlerinin değerleriyle birleştirilir ve sayfada görüntülenir.
Şimdi adrese giderek giriş formuna dönelim http://localhost:8080:
Bazı verileri girin ve gönder düğmesine tıklayın:
Yani, senaryo bizim için çalıştı display.php, gönderilen verileri sayfada alan ve görüntüleyen.
Önlemler alınmalıdır. Çünkü kaynak son derece dinamik olabilir. Bu ve bak, ısır!
PHP ve HTML
Şimdi bu iki disiplin neredeyse birbirine bağlı. Tandemleri, İnternet'in çoğunun "hayatının" inşa edildiği temeldir. Elbette diğer sunucu taraflı diller de (Perl, ASP.NET) html ile birlikte kullanılmaktadır. Ancak, PHP ile karşılaştırıldığında World Wide Web'deki yaygınlıkları tamamen epizodiktir.
İstatistiklere göre, İnternet'teki çoğu kaynağın mimarisi php ve html temelinde inşa edilmiştir.
Birçok yeni başlayan için bu teknolojiler arasındaki ilişki anlaşılmaz görünüyor. Bir yandan, istemci tarafında tarayıcılar tarafından yorumlanan statik html. Öte yandan, sunucuda işlenen bir programlama dilidir. Bu nedenle sıfırdan php ile bir site yazmadan önce bu iki teknolojinin etkileşimine basit bir örnek vereceğiz:
- php uzantılı yeni bir dosya oluşturalım;
- Şu kodu oraya koyalım:
- Dosyayı şuraya kaydedin: Yerel sunucu ve bir tarayıcıda açın. Ardından farenin sağ tuşuna tıklayın ve bağlam menüsüöğeyi seçin " görüş html sayfaları ».
Ekran görüntüsünde görebileceğiniz gibi, satırsayfanın html kodunda görüntülenmiyor. Hem tarayıcıda hem de kodda yalnızca döndürülen tarih ve saat görünür. Bu, betiğin sunucu tarafında işlendiği anlamına gelir. Bu nedenle, php'de bir site oluşturmak, basit html sayfaları yazmaktan temel olarak farklıdır.
dinamik site
Bugün iki ana web sitesi türü vardır:
- Statik - yalnızca üzerinde oluşturuldu html tabanlı. Bu tür siteler, kullanıcı eylemlerine yanıt olarak içeriklerini değiştirmez. Elbette, statik bir kaynak, olaylara ve kullanıcı eylemlerine yanıt verebilir. Ancak sayfa dinamizminin istemci tarafında uygulanması, Java Script'in yetenekleriyle sınırlı olan dar bir kapsama sahiptir.
Java Script kodu, istemci tarafında tarayıcıda çalışır.
- Dinamik - durumlarını ve içeriklerini değiştirebilen - dinamik sitelerin html sayfaları, tarayıcıdan sunucuya gönderilen bir kullanıcı isteğine yanıt olarak kod yürütme sırasında anında oluşturulur. Çoğu zaman, sunucu tarafında sayfa oluşturma, php ile yazılmış kod kullanılarak gerçekleşir.
Dinamik bir php sitesi aşağıdaki dosyalardan oluşur:
- index.php ana proje dosyasıdır;
- Şablonlar - sayfanın belirli bir bölümünün yapısını içerir ( kapaklar, bodrum, ana gövde);
- CSS dosyaları - kaynağın tüm stil açıklamalarını saklayın.
Ayrıca site projesi, php fonksiyon ve metotlarının kodunu saklayan dosyalardan oluşabilir. Ve ayrıca bir veritabanı içerir.
Çoğu CMS'de, sunucu tarafında dinamik olarak oluşturulan sayfaları doldurmak için içerik kaynağı veritabanıdır. En yaygın kullanılan veritabanı MySQL'dir.
PHP'de bir web sitesi nasıl yazılır
Bir sitenin php'de nasıl oluşturulduğunu anlamak için şunu düşünün: pratik örnek. Tabii ki, çoğu basitleştirilmiştir, ancak tüm çalışma mekanizması ve yaratma aşamaları korunmuştur.
Aşağıdaki yapıya ve tasarıma sahip bir html sitem var:
Onun kodu: