หน้าแบบไดนามิกใน PHP พี.เอช.พี. การสร้างเพจแบบไดนามิก การสร้างส่วนประกอบการแสดงเพจปกติ

ในบทเรียนที่แล้ว เราได้ทราบว่าเทมเพลตการเดินทางจะประกอบด้วยบล็อกใดบ้าง ดังนั้นคุณจึงสามารถเริ่มต้นได้ เริ่มต้นด้วยการสร้างสองโฟลเดอร์:

รูปภาพ - โฟลเดอร์นี้จะมีไฟล์รูปภาพที่ใช้จัดรูปแบบเทมเพลต เพราะ เรายังไม่มีการพัฒนาการออกแบบใดๆ จากนั้นโยนไฟล์กราฟิกใดไฟล์หนึ่งลงในโฟลเดอร์นี้ มิฉะนั้น Joomla จะไม่ติดตั้งเทมเพลตและจะแสดงข้อผิดพลาดหากโฟลเดอร์ว่างเปล่า

ข้อควรระวัง: ไม่สามารถวางกราฟิกเนื้อหาในโฟลเดอร์รูปภาพของเทมเพลตได้!

css - โฟลเดอร์นี้จะมี ไฟล์สไตล์ชีตแบบเรียงซ้อน. ในการเริ่มต้น ให้วางไฟล์ template.css เปล่าๆ ลงไป โดยสไตล์การออกแบบต่างๆ จะถูกกำหนดให้กับองค์ประกอบของไซต์

จากนั้น คุณสามารถเริ่มสร้างไฟล์ index.php ที่สำคัญที่สุด ซึ่งจะระบุตำแหน่งที่มองเห็นได้ขององค์ประกอบของไซต์ และบอกให้ Joomla CMS บล็อกที่จะวางส่วนประกอบและโมดูลต่างๆ ไฟล์เป็นการรวมกันของ PHP และ HTML

ฉันมักจะใช้เฉพาะ Macromedia Dreamweaver เมื่อเขียนโค้ด โปรแกรมที่ยอดเยี่ยมฉันขอแนะนำอย่างยิ่งให้ผู้เริ่มต้นใช้งานเพราะ หากคุณทำผิดพลาดขณะทำงานกับโค้ด โปรแกรมจะเน้น jamb ของคุณอย่างแน่นอน

บนเว็บไซต์ คุณจะพบบทช่วยสอนเกี่ยวกับ Macromedia Dreamweaver หากคุณกำลังจะพัฒนาเว็บไซต์ โปรแกรมนี้ควรได้รับการฝึกฝนอย่างน้อยในระดับเริ่มต้น เพื่อที่จะแก้ไขโค้ดเทมเพลตได้โดยไม่มีข้อผิดพลาด

การวางตำแหน่งองค์ประกอบ (บล็อก) ของหน้าทำได้โดยใช้โค้ด HTML โดยเฉพาะเราจะใช้แท็ก DIV แต่วิธีที่ไซต์ของเราจะทำงานบนเครื่องมือ Joomla เช่น มันจะเป็นไดนามิก คุณจะต้องใช้ภาษา PHP ด้วย ด้วยความช่วยเหลือของมัน เราจะกำหนดตำแหน่งบล็อกสำหรับการแสดงโมดูลว่าจะอยู่ที่ใด และจะเรียกตำแหน่งเหล่านี้อย่างไร บล็อกจะยุบหรือไม่ มาเชื่อมต่อสไตล์ชีตจากไฟล์ภายนอก ภาษาของเนื้อหา ตั้งค่าขนาดไซต์ที่จะเปลี่ยนแปลง ฯลฯ

index.php

ส่วนหัวของไฟล์

ส่วนหัวของไฟล์ประกอบด้วยหลายส่วน ส่วนแรกของโค้ดส่วนหัวของ PHP คือการทำให้แน่ใจว่าไฟล์นั้นไม่ได้ถูกเข้าถึงโดยตรงด้วยเหตุผลด้านความปลอดภัย

< ?php
กำหนด ("_JEXEC" ) หรือตาย ;
JHtml::_("behavior.framework" จริง );
$app = JFactory::getApplication() ;
?>
< ?php echo "< ?" ; ?> เวอร์ชัน xml="1.0" การเข้ารหัส=" < ?php echo $นี้-> _charset ?> "?>

DOCTYPE เป็นพารามิเตอร์ที่สำคัญมากซึ่งเบราว์เซอร์จะตัดสินใจว่าจะแสดงหน้านี้อย่างไรและจะตีความ CSS อย่างไร

< ! DOCTYPE html PUBLIC "- / / W3C/ / DTD XHTML 1.0 เข้มงวด/ / EN""http: / / www.w3.org/ TR/ xhtml1/ DTD/ xhtml1-strict.dtd">

ข้อมูลโค้ดต่อไปนี้ดึงข้อมูลภาษาที่ติดตั้งจากการกำหนดค่าส่วนกลาง

< html xmlns= "http://www.w3.org/1999/xhtml" xml:lang=" < ?php echo $นี้-> ภาษา; ?>"หรั่ง = " < ?php echo $นี้-> ภาษา; ?>"ไดร์ = " < ?php echo $นี้-> ทิศทาง; ?>" >

ต่อไปนี้เป็นข้อมูลโค้ดที่มีข้อมูลเพิ่มเติมสำหรับส่วนหัว ซึ่งตั้งค่าไว้ในการกำหนดค่าส่วนกลาง คุณสามารถดูข้อมูลนี้ได้โดยดูที่ซอร์สโค้ดของหน้าเว็บใดๆ โดยเฉพาะอย่างยิ่ง เมตาแท็กเหล่านี้เป็นแท็กที่คุณรู้จักอยู่แล้ว

< head>
< jdoc:include type= "head" / >

บรรทัดต่อไปนี้ในส่วนหัวประกอบด้วยลิงก์ไปยังสไตล์ CSS หลักของ Joomla

< link rel= "stylesheet" href= "< ?php echo $นี้-> baseurl ?> / templates/system/css/system.css"พิมพ์ = "ข้อความ /css" / >
< link rel= "stylesheet" href= "< ?php echo $นี้-> ฐาน ?> / templates/system/css/general.css"พิมพ์ = "ข้อความ /css" / >

หากต้องการใช้สไตล์การออกแบบเทมเพลต เราจะสร้างลิงก์ไปยังไฟล์ที่มีไฟล์สไตล์ชีตแบบเรียงซ้อน template.css ซึ่งอยู่ในโฟลเดอร์ CSS ไม่สำคัญว่าไฟล์นี้ยังว่างเปล่า สิ่งสำคัญคือการเชื่อมต่อ เราจะจัดการกับการออกแบบในภายหลังเมื่อเราติดตั้งเทมเพลตบน Joomla สิ่งนี้จะทำให้เห็นผลลัพธ์ได้ง่ายขึ้น

< link rel= "stylesheet" href= "< ?php echo $นี้-> ฐาน ?> / templates /< ?php echo $นี้-> เทมเพลต ?> /css/ template.css"พิมพ์ = "ข้อความ /css" / >

ข้อมูลโค้ดต่อไปนี้ช่วยให้เราสามารถยุบคอลัมน์ด้านซ้ายหรือด้านขวา หากไม่มีโมดูลในตำแหน่ง "ซ้าย" และ "ขวา" หากทั้งสองคอลัมน์ถูกยุบ เนื้อหาจะใช้พื้นที่ 100% ของความกว้างของหน้า หากรวมเพียงคอลัมน์เดียว เนื้อหาจะใช้เวลาถึง 80% เมื่อรวมสองคอลัมน์ เนื้อหาคิดเป็น 60% ของความกว้างหน้า

< ?php
ถ้า ($ นี้-> countModules("ซ้ายและขวา" ) == 0) $contentwidth = "100" ;
ถ้า ($ นี้-> countModules("ซ้ายหรือขวา" ) == 1) $contentwidth = "80" ;
ถ้า ($ นี้-> countModules("ซ้ายและขวา" ) == 1) $contentwidth = "60" ;
?>

ปิดส่วนหัว

< / head>

< body>

บล็อก “หน้า” มีการออกแบบเฉพาะหน้าของเว็บไซต์ ซึ่งจะมีความกว้าง 950px

< div id= "page" >

บล็อก "top" อยู่ที่ด้านบนสุดของหน้าและมีสองบล็อก "logo" และ "user1"

< div id= "top" >

ในโบเก้ “โลโก้” เราจะวางไฟล์กราฟิกโลโก้ ซึ่งจะเขียนในรูปแบบชีต แต่เราเขียนผลลัพธ์อัตโนมัติของชื่อไซต์ในไฟล์ index.php และชื่อจะอยู่ในแท็ก H1 ซึ่งสำคัญมากสำหรับการเพิ่มประสิทธิภาพเครื่องมือค้นหา

< div id= "logo" >
< h1> < ?php echo $app - >getCfg("ชื่อเว็บไซต์"); ?>< / h1>
< / div>

กำหนดตำแหน่ง "user1" ในบล็อกชื่อเดียวกันเพื่อแสดงโมดูลการค้นหาไซต์

< div id= "user1" >
< jdoc:include type= "modules" name= "user1" style= "xhtml" / >
< / div>
< / div> < ! - - конец блока top - - >

เอาต์พุตของโมดูลเมนูแนวนอนในบล็อก "user2" ที่ตำแหน่ง "user2" บล็อกจะยุบหากไม่มีโมดูลในตำแหน่งนั้น

< ?php if ($นี้-> countModules("user2") ): ?>
< div id= "user2 " >
< jdoc:include type= "modules" name= "user2" style= "xhtml" / >
< / div>
< ?php endif ; ?>

ถัดมาบล็อกส่วนหัวของไซต์ "ส่วนหัว" ในนั้นเราจะกำหนดตำแหน่ง "ส่วนหัว" สำหรับเอาต์พุตของโมดูล บล็อกจะยุบหากไม่มีโมดูลในตำแหน่งนั้น ฉันตั้งใจขยายความสามารถของบล็อกนี้เพื่อให้สามารถวางภาพส่วนหัวได้ไม่เพียงเท่านั้น แต่ยังรวมถึงตัวหมุนภาพด้วย

< ?php if ($นี้-> นับโมดูล (" หัวข้อ") ) : ?>
< div id= "หัวข้อ">
< jdoc:include type= "modules" name= "หัวข้อ" style="xhtml" />
< / div>
< ?php endif ; ?>

ในบล็อก "user3" กำหนดตำแหน่ง "user3" สำหรับการแสดงโมดูล

บล็อกจะยุบหากไม่มีโมดูลใดแสดงที่ตำแหน่งนี้ "user3"

< ?php if ($นี้-> countModules("user3") ) : ?>
< div id= "user3" >
< jdoc:include type= "modules" name= "user3" style= "xhtml" / >
< / div>
< ?php endif ; ?>

บล็อกของคอลัมน์ด้านซ้ายจะเปิดขึ้น ซึ่งจะยุบลงหากไม่มีโมดูลในตำแหน่ง "ซ้าย"

< ?php if ($นี้-> countModules("left" ) ) : ?>
< div id= "left" >
< jdoc:include type= "modules" name= "left" style= "xhtml" / >
< / div>
< ?php endif ; ?>

บล็อกเนื้อหาที่สำคัญที่สุดจะเปิดขึ้น ซึ่งอาจกินพื้นที่ 100% ของความกว้างหน้า 80% และ 60% ขึ้นอยู่กับจำนวนคอลัมน์ที่รวม

< div id= "content< ?php echo $contentwidth ; ?> " >

การแสดงข้อความในส่วนประกอบ

< jdoc:include type= "message" / >

เอาต์พุตเนื้อหา

< jdoc:include type= "component" style= "xhtml" / >
< / div> < ! - - конец блока контента- - >

บล็อกของคอลัมน์ด้านขวาจะเปิดขึ้น ซึ่งจะยุบลงหากไม่มีโมดูลอยู่ในตำแหน่ง "rigth"

< ?php if ($นี้-> countModules("ขวา") ): ?>
< div id= "rigth" >
< jdoc:include type= "modules" name= "right" style= "xhtml" / >
< / div>
< ?php endif ; ?>

เอาต์พุตของบล็อก "ส่วนท้าย" ออกแบบมาเพื่อแสดงโมดูล "HTML code" พร้อมข้อมูลลิขสิทธิ์ คุณยังสามารถวางเมนูแนวนอนด้านล่างหรือโมดูลการนำเสนอเนื้อหาได้ที่นี่ บล็อกจะยุบหากไม่มีการแสดงโมดูลมากกว่าหนึ่งโมดูลในตำแหน่ง "ส่วนท้าย" นี้

< ?php if ($นี้-> countModules("ส่วนท้าย") ): ?>
< div id= "footer" >
< jdoc:include type= "modules" name= "footer" style= "xhtml" / >
< / div>
< ?php endif ; ?>

บล็อกหน้าไซต์ "หน้า" เนื้อหาและรหัสทั้งหมดถูกปิด

< / div> < ! - - конец блока page- - >
< / body> < ! - - конец блока body - - >
< / html> < ! - - конец кода- - >

เราได้สร้างไฟล์ index.php ที่สมบูรณ์แล้ว ตอนนี้คุณรู้แล้วว่าคำสั่งใดและบล็อกเทมเพลตจะแสดงในลำดับใด

โปรดทราบ: เพื่อให้โค้ดเทมเพลตสามารถอ่านได้จากแผงผู้ดูแลระบบของ joomla จะต้องเปิดไฟล์ index.php ในโปรแกรมแก้ไข AkelPad และบันทึกในการเข้ารหัส UTF-8 ขณะที่ยกเลิกการเลือก BOM หากคุณใช้โปรแกรม Macromedia Dreamweaver เพื่อทำงานกับไฟล์ คุณต้องเลือก "แก้ไข" > "คุณสมบัติของหน้า" ในเมนูย้อนกลับ และเลือกการเข้ารหัสเอกสาร Unicode (utf-8) ในขณะที่ยกเลิกการเลือก "เปิดใช้งานลายเซ็น Unicode (BOM )". อย่างไรก็ตาม ขอแนะนำอย่างยิ่งให้คุณอย่าแก้ไขโค้ดจากแผงผู้ดูแลระบบของ Joomla หากคุณทำอะไรพลาดไป จะไม่มีการย้อนกลับ ซึ่งแตกต่างจากโปรแกรม Macromedia Dreamweaver ที่คุณสามารถยกเลิกการเปลี่ยนแปลงที่ทำไว้ได้ตลอดเวลา

การออกแบบบล็อกจะอธิบายไว้ใน template.css แต่เราจะปรับแต่งสไตล์ชีตหลังจากติดตั้งเทมเพลตบน Joomla 3 (joomla 2.5) และสำหรับสิ่งนี้คุณต้องสร้าง

ผู้อ่านจำนวนมากในหนังสือเกี่ยวกับคอมพิวเตอร์จะอ่านทุกอย่างที่ไม่สนใจทันทีและอ่านต่อในสิ่งที่พวกเขาจริงๆ ต้องการทราบ. โดยส่วนตัวแล้วฉันทำอย่างนั้น อย่างไรก็ตาม ไม่มีอะไรต้องกังวล - ไม่ค่อยมีหนังสือทางเทคนิคที่ต้องอ่านตั้งแต่ต้นจนจบ หรือบางทีคุณอาจทำอย่างนั้น - ข้ามแปดบทเริ่มต้นและเลือกบทนี้เพราะมันมีชื่อเรื่องที่น่าสนใจที่สุด? และใครอยากจะเสียเวลากับรายละเอียดเมื่อโครงการอื่นกำลังลุกเป็นไฟในที่ทำงาน?

โชคดีที่ความเร่งรีบนี้ไม่ได้ทำให้คุณหยุดอ่านส่วนที่สองของหนังสือ ซึ่งเกี่ยวกับการใช้ PHP เพื่อสร้างเว็บไซต์และโต้ตอบกับเว็บ ในบทนี้ คุณจะได้เรียนรู้วิธีแก้ไขเนื้อหาของหน้าเว็บและสำรวจเว็บโดยใช้ลิงก์และฟังก์ชันมาตรฐานต่างๆ บทต่อไปจะเสริมเนื้อหาที่นำเสนอ - จะกล่าวถึงรายละเอียดเกี่ยวกับวิธีการโต้ตอบของผู้ใช้ในรูปแบบ HTML บทที่ 11 อธิบายถึงการจัดระเบียบของส่วนต่อประสานกับฐานข้อมูล บทที่เหลือในตอนที่ 2 ครอบคลุมแง่มุมที่ไม่สำคัญของการเขียนโปรแกรมเว็บใน PHP

อย่างไรก็ตามควรจำไว้ว่าเนื้อหาของส่วนที่ 1 จำเป็นอย่างยิ่งสำหรับความรู้ปกติของ PHP ถือว่าคุณได้อ่านส่วนแรกแล้ว ดังนั้นตัวอย่างจะใช้แนวคิดหลายอย่างที่กล่าวถึงก่อนหน้านี้ ดังนั้น หากคุณอ่านผ่านบางส่วนของหนังสือ คุณจะต้องย้อนกลับไปยังบทก่อนหน้าเป็นครั้งคราวและตามให้ทัน

ลิงค์ง่ายๆ

<а href = "date.php">

$link = "date.php";

พิมพ์"<а href = \"$link\">ดูวันที่ของวันนี้
\n"

คุณอาจสงสัยว่าทำไมต้องมีเครื่องหมายแบ็กสแลช (\) ก่อนเครื่องหมายคำพูด (") ในโค้ดลิงก์ เนื่องจากเครื่องหมายคำพูดเป็นอักขระพิเศษใน PHP และใช้เป็นตัวคั่นสตริง ดังนั้น เครื่องหมายคำพูดจึงเป็นสตริงตามตัวอักษรในสตริง ดังนั้น เครื่องหมายคำพูดจึงเป็นสตริงตามตัวอักษรในสตริงที่ต้องถูกป้องกัน .

หากจำเป็นต้องหลีกเครื่องหมายคำพูดรบกวนคุณ เพียงเปิดโหมด magic_quotes_gpc ในไฟล์ php.ini ของคุณ ผลลัพธ์คือเครื่องหมายอัญประกาศเดี่ยว อัญประกาศ แบ็กสแลช และอักขระว่างทั้งหมด จะถูกหลีกโดยอัตโนมัติในข้อความ!

มาพัฒนาตัวอย่างที่กำหนด หากต้องการแสดงรายการลิงก์อย่างรวดเร็วในเบราว์เซอร์ คุณสามารถใช้อาร์เรย์:

// สร้างอาร์เรย์ของส่วน

$contents - array("สอน", "บทความ", "สคริปต์", "ติดต่อ");

// วนซ้ำและส่งออกแต่ละองค์ประกอบของอาร์เรย์ตามลำดับ

สำหรับ ($i = 0; $i< sizeof($contents; $i++)

พิมพ์ " ".$เนื้อหา[$i]."
\n";

// - การกำหนดจุดสิ้นสุดของเครื่องหมายพิเศษ;

ส่วนประกอบของไฟล์ (เทมเพลต)

เรามาถึงหนึ่งในคุณสมบัติ PHP ที่ฉันโปรดปราน เทมเพลต (ที่ใช้กับการเขียนโปรแกรมบนเว็บ) เป็นส่วนหนึ่งของเอกสารบนเว็บที่คุณจะนำไปใช้ในหลายๆ หน้า เทมเพลต เช่น ฟังก์ชัน PHP ช่วยให้คุณไม่ต้องยุ่งยากในการคัดลอก/วางส่วนของเนื้อหาหน้าและโค้ดโปรแกรม เมื่อขนาดของไซต์เพิ่มขึ้น ความสำคัญของเทมเพลตก็เพิ่มขึ้น เนื่องจากช่วยให้คุณสามารถแก้ไขที่ระดับของทั้งไซต์ได้อย่างง่ายดายและรวดเร็ว ส่วนนี้จะอธิบายถึงความเป็นไปได้บางอย่างที่เปิดขึ้นเมื่อใช้เทมเพลตที่ง่ายที่สุด

โดยทั่วไป เนื้อหา/โค้ดทั่วไป (เช่น เทมเพลต) จะถูกจัดเก็บไว้ในไฟล์แยกต่างหาก เมื่อสร้างเอกสารบนเว็บ คุณเพียง "รวม" ไฟล์เหล่านี้ไว้ในตำแหน่งที่เหมาะสมบนหน้า PHP มีสองฟังก์ชันสำหรับสิ่งนี้: include() และ need()

รวม () และต้องการ ()

ลักษณะที่โดดเด่นที่สุดประการหนึ่งของ PHP คือความสามารถในการสร้างเทมเพลตและไลบรารีการเขียนโปรแกรมแล้วแทรกลงในสคริปต์ใหม่ การใช้ไลบรารีช่วยประหยัดเวลาและความพยายามในการใช้ฟังก์ชันทั่วไปในเว็บไซต์ต่างๆ นักอ่านกับ

ประสบการณ์การเขียนโปรแกรมในภาษาอื่น (เช่น C, C++ หรือ Java) ความคุ้นเคยกับแนวคิดของไลบรารีฟังก์ชันและการใช้งานในโปรแกรมเพื่อขยายฟังก์ชันการทำงาน

การรวมไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไปในสคริปต์ทำได้โดยใช้ฟังก์ชัน PHP need() และ include() มาตรฐาน ดังที่จะแสดงในส่วนถัดไป แต่ละฟังก์ชันเหล่านี้ใช้ในสถานการณ์เฉพาะ

ฟังก์ชั่น

PHP มีสี่ฟังก์ชั่นสำหรับการรวมไฟล์ในสคริปต์ PHP:

  • รวม();
  • include_once();
  • จำเป็นต้อง();
  • need_once()

แม้จะมีชื่อคล้ายคลึงกัน แต่ฟังก์ชั่นเหล่านี้ทำงานต่างกัน

ฟังก์ชัน include() รวมเนื้อหาของไฟล์ในสคริปต์ ไวยากรณ์ของฟังก์ชัน include() คือ:

รวม (ไฟล์ไฟล์)

ฟังก์ชัน include() มีคุณสมบัติที่น่าสนใจอย่างหนึ่ง นั่นคือสามารถดำเนินการตามเงื่อนไขได้ ตัวอย่างเช่น หากมีการเรียกใช้ฟังก์ชันในบล็อกคำสั่ง if จากนั้นไฟล์จะรวมอยู่ในโปรแกรมก็ต่อเมื่อเงื่อนไข i f เป็นจริง หากใช้ฟังก์ชัน includeO ในคำสั่งแบบมีเงื่อนไข ก็จะใช้ฟังก์ชันนั้น ต้องอยู่ในวงเล็บปีกกาหรือตัวคั่นอื่น เปรียบเทียบความแตกต่างทางไวยากรณ์ในรายการ 9.1 และ 9.2

รายการ 9.1 การใช้ include() อย่างไม่ถูกต้อง

ถ้า (some_conditional)

รวม ("text91a.txt"); อื่น

รวม ("text91b.txt");

รายการ 9.2. การใช้ include() อย่างเหมาะสม

ถ้า (some_conditional) :

รวม ("text91a.txt");

รวม ("text91b.txt");

โค้ด PHP ทั้งหมดในไฟล์รวม อย่างจำเป็นอยู่ในแท็ก PHP อย่าคิดว่าการเก็บคำสั่ง PHP ไว้ในไฟล์จะทำให้มั่นใจว่าประมวลผลได้อย่างถูกต้อง:

คุณต้องใส่คำสั่งในแท็กที่เหมาะสมแทน ดังที่แสดงในตัวอย่างต่อไปนี้:

พิมพ์ "นี่คือไฟล์รวมที่ไม่ถูกต้อง";

ฟังก์ชัน include_once() ทำหน้าที่เหมือนกับ include() โดยมีข้อยกเว้นประการหนึ่ง: ฟังก์ชันจะตรวจสอบดูว่าไฟล์ถูกรวมไว้แล้วหรือไม่ก่อนที่จะรวมอยู่ในโปรแกรม หากรวมไฟล์แล้ว การเรียก include_once() จะถูกละเว้น และหากไม่มี ไฟล์จะถูกรวมโดยค่าเริ่มต้น ในแง่อื่นๆ ทั้งหมด include_once() ก็ไม่ต่างจากการรวม() ไวยากรณ์ของฟังก์ชัน include_once() คือ:

include_once (ไฟล์ ไฟล์)

โดยทั่วไปแล้ว ฟังก์ชัน need() จะคล้ายกับ include() -- และยังรวมถึงเทมเพลตในไฟล์ที่มีการเรียกไปยัง need() ไวยากรณ์ของฟังก์ชัน need() คือ:

ต้องการ (ไฟล์ไฟล์)

อย่างไรก็ตาม มีความแตกต่างที่สำคัญอย่างหนึ่งระหว่างฟังก์ชัน need() และ include() ไฟล์ที่ระบุโดยพารามิเตอร์ need() จะรวมอยู่ในสคริปต์ โดยไม่คำนึงถึงตำแหน่งของ requirement() ในสคริปต์ ตัวอย่างเช่น หากคุณเรียก requirementre() ในบล็อก if ที่มีเงื่อนไขเป็นเท็จ ไฟล์จะยังคงรวมอยู่ในสคริปต์!

ในหลาย ๆ สถานการณ์ การสร้างไฟล์ที่มีตัวแปรและข้อมูลอื่น ๆ ที่ใช้ในไซต์นั้นสะดวก และจากนั้นรวมไว้ตามต้องการ แม้ว่าชื่อของไฟล์นี้จะตั้งขึ้นเอง แต่ฉันมักจะเรียกมันว่า init.tpl (ย่อมาจาก "initializaion.template") รายการ 9.3 แสดงให้เห็นว่าไฟล์ init.tpl ธรรมดาๆ หน้าตาเป็นอย่างไร ในรายการ 9-4 เนื้อหาของ init.tpl จะรวมอยู่ในสคริปต์ด้วยคำสั่ง required()

รายการ 9.3. ตัวอย่างไฟล์เริ่มต้น

$site_title = "สูตร PHP";!}

$contact_email = " [ป้องกันอีเมล]";

$contact_name = "ดับเบิลยู เจ กิลมอร์";

รายการ 9.4 โดยใช้ไฟล์ init.tpl

<? print $site_title; ?>

\"mai1 ถึง:$contact_email\">$contact_name."; ?>

การส่ง URL เมื่อเรียก need() จะได้รับอนุญาตก็ต่อเมื่อเปิดใช้งานโหมด "URL fopen wrappers" (โหมดนี้เปิดใช้งานโดยค่าเริ่มต้น)

เมื่อขนาดของไซต์เพิ่มขึ้น อาจเกิดขึ้นได้ที่ไฟล์บางไฟล์รวมอยู่ในสคริปต์มากกว่าหนึ่งครั้ง บางครั้งสิ่งนี้ไม่ได้ทำให้เกิดปัญหา แต่ในบางกรณี การเปิดใช้งานไฟล์อีกครั้งจะเป็นการรีเซ็ตตัวแปรที่เปลี่ยนแปลง หากมีการกำหนดฟังก์ชันในไฟล์รวม ความขัดแย้งของชื่ออาจเกิดขึ้นได้ จากที่กล่าวมา เราก็มาถึง function ต่อไปครับ คือ need_once()

ฟังก์ชัน need_once() ช่วยให้มั่นใจได้ว่าไฟล์จะรวมอยู่ในสคริปต์เพียงครั้งเดียว หลังจากการเรียกร้องให้ requi re_onse() ความพยายามเพิ่มเติมทั้งหมดที่จะรวมไฟล์เดียวกันจะถูกละเว้น ไวยากรณ์ของฟังก์ชัน required_onse() คือ:

คุณน่าจะใช้ไฟล์รวมฟังก์ชันบ่อยขึ้นเมื่อเว็บแอปพลิเคชันของคุณมีขนาดโตขึ้น ฟังก์ชันเหล่านี้มักใช้ในตัวอย่างในหนังสือเล่มนี้เพื่อลดความซ้ำซ้อนของโค้ด ตัวอย่างแรกจะกล่าวถึงในหัวข้อถัดไปเกี่ยวกับหลักการสร้างเทมเพลตพื้นฐาน

ส่วนประกอบของอาคาร

เมื่อกำหนดโครงสร้างของหน้าเว็บทั่วไป ฉันมักจะแบ่งมันออกเป็นสามส่วน: ส่วนหัว ส่วนเนื้อหา และส่วนท้าย โดยปกติแล้ว เว็บไซต์ที่มีการจัดระเบียบอย่างดีส่วนใหญ่จะมีหัวข้อที่ไม่เปลี่ยนแปลงมากนัก ส่วนหลักแสดงเนื้อหาที่ร้องขอของไซต์ ดังนั้นจึงมีการเปลี่ยนแปลงบ่อยครั้ง สุดท้าย ส่วนท้ายประกอบด้วยข้อมูลลิขสิทธิ์และลิงก์การนำทาง ส่วนท้ายเช่นส่วนหัวมักจะไม่เปลี่ยนแปลง อย่าเข้าใจฉันผิด ฉันไม่ได้พยายามขัดขวางความคิดสร้างสรรค์ของคุณเลย ฉันเคยเห็นเว็บไซต์ที่ยอดเยี่ยมมากมายที่ไม่ปฏิบัติตามหลักการเหล่านี้ ฉันแค่พยายามหาโครงสร้างทั่วไปที่สามารถใช้เป็นจุดเริ่มต้นสำหรับงานต่อไปได้

หัวข้อ

ไฟล์ส่วนหัว (เช่นไฟล์ในรายการ 9.5) มีอยู่ในเกือบทุกเว็บไซต์ที่เปิดใช้งาน PHP ของฉัน ไฟล์นี้มี

ข้อมูลทั่วทั้งไซต์ เช่น ชื่อเรื่อง ข้อมูลติดต่อ และส่วนประกอบบางอย่างของโค้ดหน้า HTML

รายการ 9.5. ตัวอย่างไฟล์ส่วนหัว

// ไฟล์: header.tpl

// วัตถุประสงค์: ไฟล์ส่วนหัวสำหรับไซต์ PhpRecipes

$site_name = "PHPRRecipes";

$site_email=" [ป้องกันอีเมล]";

$site_path = "http://localhost/phprecipes";

<? print $site_name; ?>

// แสดงวันที่และเวลาปัจจุบัน

วันที่พิมพ์ ("F d, h:i a");

เป็นเรื่องปกติที่ผู้เข้าชมจะจำกัดการเข้าถึงไฟล์รวม โดยเฉพาะอย่างยิ่งหากไฟล์มีข้อมูลที่ละเอียดอ่อน (เช่น รหัสผ่าน) ใน Apache คุณสามารถป้องกันไม่ให้ดูไฟล์บางไฟล์ได้โดยการแก้ไขไฟล์ http.conf หรือ htaccess ตัวอย่างต่อไปนี้แสดงวิธีปิดใช้งานการดูไฟล์ .tpl ทั้งหมด:

คำสั่งอนุญาตปฏิเสธ

อนุญาตจาก 127.0.0.1

ปัญหาด้านความปลอดภัยของ PHP และไซต์มีรายละเอียดอยู่ในบทที่ 16

ชื่อเรื่องวิ่ง

ส่วนหัว (ส่วนท้าย) มักเรียกว่าข้อมูลที่ด้านล่างของหน้าเว็บไซต์ - รายละเอียดการติดต่อ ลิงก์ และข้อมูลลิขสิทธิ์ ข้อมูลนี้สามารถวางไว้ในไฟล์แยกต่างหากและรวมเป็นเทมเพลตในลักษณะเดียวกับส่วนหัว สมมติว่าเมื่อถึงปีใหม่ คุณต้องเปลี่ยนข้อมูลลิขสิทธิ์และนำมาไว้ที่แบบฟอร์ม "ลิขสิทธิ์ © 2000-2001" มีสองวิธี: ใช้เวลาวันคริสต์มาสอีฟแก้ไขหน้าคงที่หลายร้อยหน้า หรือใช้แม่แบบเหมือนกับในรายการ 9.6 การเปลี่ยนแปลงง่ายๆ เพียงครั้งเดียว คุณก็สามารถกลับไปทำงานบ้านในวันหยุดได้

รายการ 9.6.ตัวอย่างไฟล์ส่วนท้าย (footer.tpl)

ติดต่อ |

ความเป็นส่วนตัวของคุณ

หมายเหตุการใช้ตัวแปรร่วม $site_email ในไฟล์ส่วนท้าย ค่าของตัวแปรนี้เป็นค่าทั้งหน้า และเราถือว่าไฟล์ header.tpl และ footer.tpl จะรวมอยู่ในหน้าสุดท้ายเดียวกัน นอกจากนี้ ให้สังเกตการมีอยู่ของ $site_path ในลิงก์ความเป็นส่วนตัว ฉันใส่พาธแบบเต็มไปยังลิงก์ทั้งหมดในเทมเพลตของฉันเสมอ หาก URL ของลิงก์ประกอบด้วยชื่อเดียว Privacy.php ไฟล์ส่วนท้ายจะถูกฮาร์ดโค้ดไปยังไดเร็กทอรีเฉพาะ

ส่วนสำคัญ

เนื้อหาของส่วนหัวและส่วนท้ายรวมอยู่ในส่วนหลักของหน้า โดยพื้นฐานแล้วเป็นส่วนหลักที่มีข้อมูลที่น่าสนใจสำหรับผู้เยี่ยมชมไซต์ ส่วนหัวดูสวยงาม ส่วนท้ายมีข้อมูลที่เป็นประโยชน์ แต่สำหรับส่วนหลักของหน้าที่ผู้ใช้กลับมาที่ไซต์ครั้งแล้วครั้งเล่า แม้ว่าฉันจะไม่สามารถให้คำแนะนำใดๆ เกี่ยวกับโครงสร้างเพจเฉพาะได้ แต่เทมเพลตอย่างเช่นในรายชื่อ 9-7 ทำให้การดูแลเพจง่ายขึ้นมาก

รายการ 9.7. ตัวอย่างเนื้อหาหลักของหน้า (index_body.tpl)

/tutorials.php">บทช่วยสอน

บทความ

สคริปต์

ติดต่อ

ยินดีต้อนรับสู่ PHPRecipes จุดเริ่มต้นสำหรับสคริปต์ PHP บทช่วยสอน

และข้อมูลเกี่ยวกับการทำอาหารรสเลิศ!

รวบรวมทั้งหมดเข้าด้วยกัน: ส่วนหัว ส่วนท้าย และส่วนเนื้อหา

บางทีอารมณ์ของฉันอาจแสดงออกได้ดีที่สุดโดยพันเอก "ฮันนิบาล" สมิธ (จอร์จ เป็ปพาร์ด) จากซีรีส์ A-Team อันโด่งดัง: "ฉันรักเมื่อทุกอย่างลงตัว" ฉันพบสิ่งที่คล้ายกันเมื่อรวมเทมเพลตที่แตกต่างกันเพื่อสร้างเอกสารเว็บที่สมบูรณ์ ด้วยการรวมส่วนเอกสารสามส่วนเข้าด้วยกัน: header.tpl, index_body.tpl และ footer.tpl คุณสามารถสร้างหน้าง่ายๆ เช่นเดียวกับหน้าในรายการ 9-8 ได้อย่างรวดเร็ว

รายการ 9.8. สร้างหน้า index.php โดยรวมไฟล์ต่างๆ

// ไฟล์: index.php

// ปลายทาง: หน้าแรกของ PHPRecipes

// แสดงชื่อเรื่อง

รวม ("header.tpl");

// เอาต์พุตหลัก

รวม ("index_body.tpl");

// ส่วนท้ายเอาต์พุต

รวม ("footer.tpl");

ดีอย่างไร? คำสั่งง่ายๆ สามคำสั่ง - และคุณมีหน้าสำเร็จรูปอยู่ตรงหน้าคุณ ข้อความของหน้าสรุปจะแสดงในรายการ 9.9

รายการ 9.9 หน้า HTML ที่สร้างขึ้นในรายการ 9-8 (index.php)

PHPRecipes

23 ส.ค. 15:17 น

บทช่วยสอน

บทความ

สคริปต์

ติดต่อ

ยินดีต้อนรับสู่ PHPRecipes จุดเริ่มต้นสำหรับสคริปต์ PHP บทช่วยสอน

และเคล็ดลับและสูตรการทำอาหารรสเลิศ!

ลิขสิทธิ์ 2000 PHPRecipes สงวนลิขสิทธิ์.

ติดต่อ |

ความเป็นส่วนตัวของคุณ

บนมะเดื่อ รูปที่ 9-1 แสดงลักษณะของหน้าผลลัพธ์ในเบราว์เซอร์ แม้ว่าปกติฉันจะไม่ใช้เส้นขอบตาราง แต่คราวนี้ฉันได้รวมไว้เพื่อให้ทั้งสามส่วนของหน้าโดดเด่นชัดเจนยิ่งขึ้นในรูป

ข้าว. 9.1. ลักษณะที่ปรากฏของเพจที่สร้างขึ้นในรายการ 9.8

การเพิ่มประสิทธิภาพเทมเพลต

ในตัวแปรที่สอง (ในความคิดของฉันดีกว่า) เทมเพลตจะทำในรูปแบบของฟังก์ชั่นที่อยู่ในไฟล์แยกต่างหาก นี่เป็นการจัดโครงสร้างเพิ่มเติมสำหรับเทมเพลตของคุณ ฉันเรียกไฟล์นี้ว่าไฟล์เริ่มต้นและเก็บข้อมูลที่เป็นประโยชน์อื่นๆ ไว้ในนั้น เนื่องจากเราได้ดูตัวอย่างส่วนหัวและส่วนท้ายที่ค่อนข้างยาวแล้ว รายการ 9-10 และ 9-11 จึงถูกตัดให้สั้นลงเล็กน้อยเพื่อแสดงแนวคิดใหม่

รายการ 9.10 เทมเพลตไซต์ที่ปรับให้เหมาะสม (site_init.tpl)

// ไฟล์: site_init.tpl

// วัตถุประสงค์: ไฟล์เริ่มต้น PhpRecipes

$site_name = "PHPRRecipes";

$site_email = " [ป้องกันอีเมล]";

$site_path = "http://localhost/phprecipes/";

ฟังก์ชัน show_header($site_name) (

<? print $site_name: ?>

นี่คือส่วนหัว

ฟังก์ชันแสดงส่วนท้าย ()

นี่คือส่วนท้าย

รายการ 9.11 การใช้ไฟล์เริ่มต้น

// รวมไฟล์เริ่มต้น

รวม ("site_init.tpl");

// แสดงชื่อเรื่อง

แสดงส่วนหัว ($site_name);

// เนื้อหาเนื้อหา นี่คือข้อมูลเนื้อหาบางส่วน

// แสดงส่วนท้าย Show_footer();

โครงการ: เครื่องกำเนิดหน้า

แม้ว่าเว็บไซต์ส่วนใหญ่ที่ฉันสร้างขึ้นจะสร้างเนื้อหาหลักของหน้าตามข้อมูลที่อ่านจากฐานข้อมูล แต่จะมีบางหน้าที่แทบไม่เปลี่ยนแปลงอยู่เสมอ โดยเฉพาะอย่างยิ่ง พวกเขาสามารถแสดงข้อมูลเกี่ยวกับทีมพัฒนา ข้อมูลติดต่อ โฆษณา ฯลฯ ฉันมักจะเก็บข้อมูล "คงที่" นี้ในโฟลเดอร์แยกต่างหาก และใช้สคริปต์ PHP เพื่อโหลดเมื่อมีการร้องขอ แน่นอน คุณมีคำถาม - ถ้านี่เป็นข้อมูลคงที่ สคริปต์ PHP มีไว้เพื่ออะไร? เหตุใดจึงไม่โหลดหน้า HTML ปกติ ข้อดีของ PHP คือคุณสามารถใช้เทมเพลตและแทรกตัวอย่างข้อมูลแบบคงที่ได้ตามต้องการ

<а href = "/static.php?content=$content">ชื่อหน้าคงที่

เริ่มต้นด้วยการสร้างหน้าคงที่ เพื่อความง่าย ฉันจะจำกัดตัวเองไว้ที่สามหน้าที่มีข้อมูลเกี่ยวกับไซต์ (รายการ 9.12) โฆษณา (รายการ 9.13) และข้อมูลติดต่อ (รายการ 9.14)

รายการ 9.12 ข้อมูลไซต์ (about.html)

เกี่ยวกับ PHPRecipes

โปรแกรมเมอร์คนใดไม่ผสมผสานการเขียนโปรแกรมทั้งคืนกับคุกกี้รสเลิศ ที่ PHPRecipes แทบจะไม่มีคืนใดเลยที่ผู้เขียนโค้ดของเราคนใดคนหนึ่งผสม HTML เล็กน้อยกับเห็ดพอร์โทเบลโลแสนอร่อยหรือแม้แต่ฟองดู ดังนั้นเราจึงตัดสินใจนำคุณ สิ่งที่ดีที่สุดที่เรารักมากที่สุด: PHP และอาหาร!

ถูกต้องแล้วผู้อ่าน บทช่วยสอน สคริปต์ ซูเฟล่ และอีกมากมาย 0เท่านั้นที่ PHPRecipes

ข้อมูลการโฆษณา

ไม่ว่าพวกเขาจะมาเพื่อเรียนรู้เทคนิค PHP ล่าสุดหรือเพื่อทบทวนวิธีการก็ตาม

ในการอบไก่ คุณสามารถพนันได้เลยว่าผู้อ่านของเราคือผู้มีอำนาจตัดสินใจ พวกเขาคืออุตสาหกรรม

ผู้เชี่ยวชาญที่ตัดสินใจเกี่ยวกับสิ่งที่บริษัทซื้อ

สอบถามข้อมูลโฆษณาติดต่อ

">[ป้องกันอีเมล].

รายการ 9.14 รายละเอียดการติดต่อ (contact.html)

ติดต่อเรา

มีเคล็ดลับการเข้ารหัส?

รู้จักท็อปปิ้งที่สมบูรณ์แบบสำหรับมันเทศหวานหรือไม่?

แจ้งให้เราทราบ! ติดต่อทีมงานได้ที่ [ป้องกันอีเมล].

เรามาสร้างหน้า static.php ซึ่งแสดงข้อมูลคงที่ที่ร้องขอ ไฟล์นี้ (ดูรายการ 9-15) รวมส่วนประกอบของหน้าเว็บไซต์ของเราและไฟล์เริ่มต้นของ site_init.tpl

รายการ 9.15. ผลลัพธ์ทั่วไปของหน้าสแตติก (static.php)

// ไฟล์: static.php

// วัตถุประสงค์: แสดงหน้าสแตติกที่ร้องขอ

// คำเตือน: สันนิษฐานว่าไฟล์ "site_init.tpl" และทั้งหมด

// ไฟล์คงที่อยู่ในไดเรกทอรีเดียวกัน

// ฟังก์ชั่นโหลดและตัวแปรรวม ("site_init.tpl"):

// ชื่อที่แสดง show_header($site_name);

// แสดงเนื้อหาที่ขอ รวมถึง ("$content.html"):

// แสดงส่วนท้าย แสดงส่วนท้าย ();

ตอนนี้ทุกอย่างพร้อมที่จะสร้างสคริปต์หลักแล้ว เพียงแค่ใส่ในหน้า

<а href = "static.php?content=about">ชื่อหน้าคงที่

ข้อมูลการโฆษณา

ติดต่อเรา

การคลิกที่ลิงค์ใด ๆ เหล่านี้จะโหลดหน้าคงที่ที่เกี่ยวข้องซึ่งฝังอยู่ใน static.php ในเบราว์เซอร์!

ผลลัพธ์

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับเป้าหมายหลักที่ PHP ออกแบบมาเพื่อแก้ไข: การสร้างหน้าเว็บแบบไดนามิก มีการพิจารณาคำถามต่อไปนี้:

  • การประมวลผล URL;
  • การสร้างเนื้อหาแบบไดนามิก
  • การรวมและการสร้างเทมเพลตพื้นฐาน

บทนี้สรุปด้วยโปรแกรมสร้างเพจ ซึ่งเป็นโปรแกรมที่โหลดเพจแบบสแตติกลงในเทมเพลต และทำให้ง่ายต่อการดูแลเพจ HTML แบบสแตติกจำนวนมาก

บทต่อไปเกี่ยวกับการใช้ PHP ร่วมกับรูปแบบ HTML เพื่อปรับปรุงการโต้ตอบของไซต์ของคุณอย่างมาก แล้ว - การโต้ตอบกับฐานข้อมูล! คุณต้องเรียนรู้สิ่งที่น่าสนใจมากมาย

จากบทเรียนก่อนหน้านี้ เราได้เรียนรู้ว่าการใช้วิธี GET คุณสามารถส่งพารามิเตอร์บางอย่างไปยัง URL ได้โดยตรง อย่างไรก็ตาม ไม่มีอะไรป้องกันเราจากการดำเนินการนี้โดยไม่มีแบบฟอร์ม เพียงแค่แสดงรายการใน URL

เราสามารถส่งพารามิเตอร์ผ่านทาง URL และเราสามารถรับพารามิเตอร์เหล่านี้ได้จากสคริปต์ แล้วอะไรทำให้เราไม่สามารถแสดงหน้าต่างๆ ให้ผู้ใช้เห็นโดยขึ้นอยู่กับพารามิเตอร์ใน URL

สร้างเพจแบบไดนามิก

ในการแสดงหน้าต่างๆ ให้ผู้ใช้เห็น คุณต้องเตรียมเนื้อหา ปล่อยให้มันอยู่ในอาร์เรย์หลายมิติ:

"การสร้างไดนามิกเพจ", "เนื้อหา" => "ข้อความของบทความเกี่ยวกับไดนามิกเพจ" ], [ "title" => "วิธีจับลูกแมว", "เนื้อหา" => "เนื้อหาของบทความเกี่ยวกับลูกแมว" ] ]; ?>

พารามิเตอร์ไดนามิกใน URL จะถูกเรียกว่า id และเราจะจับมันใน $_GET["id"] เราสามารถเพิ่มฟิลด์ id ให้กับแต่ละอิลิเมนต์ของอาร์เรย์ได้ แต่จากนั้นเราจะต้องวนซ้ำทุกอิลิเมนต์และมองหา subarray ที่มี id ที่ต้องการ ดังนั้นจึงง่ายกว่ามากที่จะใช้คีย์ของอาร์เรย์หลักเป็น id

พูดง่ายๆ คือเราใช้รหัสและพยายามค้นหาบทความด้วยรหัสนั้นในอาร์เรย์ $articles ดูเหมือนว่า:

ยังคงเป็นเพียงการร่างเอาต์พุตเมนูและตรวจสอบความถูกต้องของรหัส กลายเป็นเราเตอร์ php จริง!

"หน้าหลัก", "เนื้อหา" => "ข้อความของบทความเกี่ยวกับเว็บไซต์ของเรา" ], [ "ชื่อ" => "การสร้างหน้าแบบไดนามิก", "เนื้อหา" => "ข้อความของบทความเกี่ยวกับหน้าแบบไดนามิก" ], [ "title" => "วิธีจับลูกแมว", "เนื้อหา" => "เนื้อหาของบทความเกี่ยวกับลูกแมว" ] ]; # ถ้า id ถูกส่งผ่าน ให้เขียนบทความไปที่ $article หรือ null ถ้าไม่มีบทความที่มี id นี้ if(isset($_GET["id"])) $current_article = $articles[$_GET["id"]] ?? โมฆะ; # ถ้า id ไม่ผ่าน แสดงว่านี่คือหน้าหลัก เราสามารถแสดงหน้าด้วย id = 0 else $current_article = $articles; ?> $บทความ): ?> ">

ข้อผิดพลาด 404: ไม่พบหน้า

ตอนนี้คุณสามารถสร้างไซต์ไดนามิกโดยที่จำนวนหน้าขึ้นอยู่กับจำนวนองค์ประกอบอาร์เรย์ ไม่ใช่ไฟล์ PHP :) หากไซต์ควรมีหน้าประเภทต่างๆ เช่น บทความและผลิตภัณฑ์ คุณสามารถส่งประเภทหน้าเป็นพารามิเตอร์ที่สองได้: site.ru?type=article&id=5

แน่นอนว่าระบบนี้ไม่สมบูรณ์แบบ หลังจากนั้นไม่นาน คุณจะได้เรียนรู้วิธีสร้าง CNC แบบปกติ (URL ที่สะดวกกว่า เช่น site.ru/articles/5/) และจัดเก็บบทความในไฟล์หรือฐานข้อมูล

ในการสร้างไซต์ที่ดูดี ขยายได้ และมีประสิทธิภาพไม่ว่าจะมีความซับซ้อนใดๆ ก็ตาม คุณควรเริ่มต้นด้วยไซต์ที่เรียบง่าย กระบวนการนี้ไม่ใช่เรื่องง่าย ต้องใช้ความรู้พื้นฐานบางอย่างเกี่ยวกับ PHP และ MySQL แต่ถ้าคุณดูทีละประเด็น คุณสามารถจัดทำ "แผนงาน" ที่จะมีประโยชน์เมื่อสร้างไซต์ใหม่ มาเตรียม "แกนกลาง" และฐานสำหรับโครงการกันเถอะ ในตอนแรกมันจะเป็นไซต์นามบัตรทั่วไป แต่จากนั้นด้วยการเพิ่มฟังก์ชั่นมันสามารถเปลี่ยนเป็นอะไรก็ได้ มาเริ่มกันเลย

1. การจัดทำฐานข้อมูล. สร้างตารางแรกในฐานข้อมูล MySQL

สร้างฐานข้อมูลใหม่ เช่น "mysite" โดยส่วนตัวแล้ว ฉันคุ้นเคยกับการเข้ารหัส UTF-8 ดังนั้นฉันจะทำการจองทันที: ตรวจสอบให้แน่ใจว่าไฟล์ข้อความทั้งหมดของไซต์ ฐานข้อมูล ตาราง และฟิลด์ตารางอยู่ในการเข้ารหัสเดียวกัน
สร้างตารางในฐานข้อมูลใหม่ ขอเรียกว่า "หน้า" ตารางนี้จะจัดเก็บหน้าคงที่ของไซต์ในอนาคตและข้อมูลเกี่ยวกับพวกเขา ตารางต้องมีฟิลด์ต่อไปนี้:

  • page_id - รหัสหน้า (SMALLINT, คีย์หลัก, auto_increment);
  • page_alias - นามแฝงของหน้าสำหรับสตริงที่อยู่ CNC (VARCHAR, 255);
  • page_title - ชื่อเรื่องของหน้าในหน้าต่างเบราว์เซอร์ (VARCHAR, 255);
  • page_meta_d - คำอธิบายเมตาของหน้าสำหรับแท็กคำอธิบายเมตา (VARCHAR, 255);
  • page_meta_k - คำหลักเมตาสำหรับแท็กคำหลักเมตา (VARCHAR, 255);
  • page_h1 - ชื่อหน้า (VARCHAR, 255);
  • page_s_desc - คำอธิบายสั้น ๆ ของเนื้อหา เช่น หากเนื้อหาของไซต์จะอยู่ในรูปแบบของบล็อก (TEXT)
  • page_content - ข้อความหลักของหน้าซึ่งจะแสดงในคอลัมน์กลางของไซต์ (TEXT)
  • page_publish - มี "Y" ถ้าเพจถูกเผยแพร่ หรือ "N" ถ้าเพจถูกซ่อน (CHAR ค่าเริ่มต้นคือ "Y")

ทันทีหลังจากสร้างตารางให้ใส่ค่าสำหรับหน้าหลักของไซต์ลงไป ในช่อง "page_alias" ของหน้าหลัก ฉันแนะนำให้ใส่ค่า "home" เมตาแท็ก - ตามธีมของทั้งไซต์ ในทำนองเดียวกัน คุณสามารถสร้างหน้าอื่นๆ ได้ เช่น "เกี่ยวกับบริษัท" ด้วยนามแฝง "เกี่ยวกับ" และเมตาแท็กของหน้านั้นๆ หรือ "ผู้ติดต่อ" ด้วยนามแฝง "ผู้ติดต่อ" เป็นต้น

2. สร้างไฟล์การกำหนดค่าไซต์

ในโฟลเดอร์รูทของไซต์ซึ่งควรว่างเปล่าในขั้นตอนนี้ เราสร้างโฟลเดอร์ "cfg" ในนั้นโดยใช้ .htaccess เราปิดการเข้าถึงด้วยคำสั่ง "ปฏิเสธจากทั้งหมด" สร้างไฟล์ core.php โดยมีเนื้อหาดังต่อไปนี้:

// มายเอสคิวแอล
คลาส MyDB
{
var $dblogin = "รูท"; // เข้าสู่ระบบฐานข้อมูลของคุณ
var $dbpass = ""; // รหัสผ่านฐานข้อมูลของคุณ
var $db = "ไซต์ของฉัน"; // ชื่อของฐานสำหรับไซต์
var $dbhost="localhost";

var$ลิงค์;
แบบสอบถาม var$;
var $ผิดพลาด;
var $ผลลัพธ์;
var$ข้อมูล;
var $ดึง;

ฟังก์ชันเชื่อมต่อ() (
$this->link = mysql_connect($this->dbhost, $this->dblogin, $this->dbpass);
mysql_select_db($this->db);
mysql_query("ตั้งชื่อ utf8");
}

ฟังก์ชั่นปิด () (
mysql_close($this->link);
}

เรียกใช้ฟังก์ชัน ($ แบบสอบถาม) (
$this->query = $แบบสอบถาม;
$this->result = mysql_query($this->query, $this->link);
$this->err = mysql_error();
}
แถวฟังก์ชัน() (
$this->data = mysql_fetch_assoc($this->result);
}
ดึงข้อมูล () (
ในขณะที่ ($this->data = mysql_fetch_assoc($this->result)) (
$this->fetch = $this->ข้อมูล;
ส่งคืน $this->fetch;
}
}
หยุดการทำงาน() (
unset($this->data);
unset($this->result);
unset($this->fetch);
unset($this->err);
unset($this->query);
}
}

ขณะนี้ไฟล์นี้มีเฉพาะคลาสการเชื่อมต่อฐานข้อมูลอย่างง่าย แต่ในอนาคต คุณสามารถเพิ่มฟังก์ชันที่มีประโยชน์ต่างๆ ลงในไฟล์ได้ ซึ่งจะพร้อมใช้งานจากทุกที่ในโค้ดของไซต์ อย่าลืมเปลี่ยนชื่อผู้ใช้และรหัสผ่านสำหรับฐานข้อมูลของคุณ

หากคุณกำลังทำงานบนสภาพแวดล้อม Windows ฉันขอแนะนำให้ใช้ . โปรแกรมแก้ไขนี้มีหมายเลขบรรทัด และแปลข้อความจากการเข้ารหัสหนึ่งไปยังอีกรหัสหนึ่งได้อย่างง่ายดาย ความสนใจ! หากคุณทำงานในการเข้ารหัส UTF-8 - แปลงไฟล์เป็น UTF-8 โดยไม่มี BOM - สิ่งนี้จะช่วยหลีกเลี่ยงปัญหาในอนาคต

3. สร้าง index.php - ตัวควบคุมไซต์หลัก

สร้างไฟล์การกำหนดค่าแล้ว ตอนนี้เราสร้าง index.php ในโฟลเดอร์รูทของไซต์ - นี่จะเป็นสคริปต์หลักของไซต์ ซึ่งเป็น "ตัวควบคุมหลัก" ชนิดหนึ่ง เนื้อหาของไฟล์ index.php:

กำหนด ("ดัชนี", ""); // ตั้งค่าตัวควบคุมหลักคงที่

Require_once($_SERVER."/cfg/core.php"); // เชื่อมต่อแกน

// เชื่อมต่อกับฐานข้อมูล
$db = ใหม่ MyDB();
$db->เชื่อมต่อ();

// ตัวควบคุมหลัก
สวิตช์ ($_GET) (
กรณี "หน้า":
รวม($_SERVER."/com/page.php");
หยุดพัก;
ค่าเริ่มต้น:
รวม ($_SERVER."/com/home.php");
หยุดพัก;
}

รวม ($_SERVER."/ template.php");
$db->ปิด ();

ตัวแปร $_GET จะบอกตัวควบคุมหลักว่าส่วนประกอบของไซต์ใดที่จะโหลดตามคำขอ ตอนนี้ไซต์ของเรามีเพียงสององค์ประกอบ: "หน้า" และ "หน้าหลัก" (โดยหลักการแล้วคุณสามารถใช้องค์ประกอบเดียวในการแสดงหน้าปกติ แต่บ่อยครั้งที่รูปลักษณ์ของหน้าหลักของเว็บไซต์แตกต่างจากหน้าปกติของ รายการเมนู) ตรรกะของตัวควบคุมหลักเป็นดังนี้: ชื่อของส่วนประกอบที่ต้องการ (ค่าของตัวแปร $option) ถูกแยกออกจากสตริง URL โดยขึ้นอยู่กับค่าของมัน ไฟล์ของส่วนประกอบนั้นรวมอยู่ด้วย (อยู่ใน / โฟลเดอร์คอม). ไฟล์คอมโพเนนต์จะทำงานที่จำเป็นทั้งหมด ดึงข้อมูลจากฐานข้อมูลและเขียนลงในตัวแปรเพื่อส่งผ่านไปยังเทมเพลตการออกแบบ ในตอนท้ายไฟล์การออกแบบไซต์จะเชื่อมต่อซึ่งตัวแปรและข้อมูลทั้งหมดที่แยกออกมาในส่วนประกอบจะถูกโอนย้าย ฟังดูซับซ้อนกว่าที่ใช้งานได้มาก

4. สร้างคอมโพเนนต์เอาต์พุตเพจปกติ

ในรูทของไซต์ ให้สร้างโฟลเดอร์ "com" ซึ่งจะจัดเก็บไฟล์คอมโพเนนต์ ตามความเข้าใจของฉัน ส่วนประกอบของไซต์คือไฟล์ที่มีการประมวลผลข้อมูลสำหรับส่วนต่างๆ ของไซต์ ตัวอย่างเช่น ส่วนประกอบของหน้าปกติดึงชื่อ คำอธิบาย และข้อความของเนื้อหาจากฐานข้อมูล และเขียนลงในตัวแปร $title, $meta_d, $meta_k, $content เป็นต้น จากนั้นข้อมูลนี้จะถูกถ่ายโอนไปยัง เทมเพลตการออกแบบ (คุณสามารถสร้างเทมเพลตการออกแบบของคุณเองสำหรับแต่ละส่วนประกอบ ) และแสดงให้ผู้ใช้เห็นเป็นหน้า HTML ตัวอย่างเช่น คอมโพเนนต์แคตตาล็อกที่สามารถสร้างได้ในอนาคตจะทำเกือบสิ่งเดียวกัน แต่จะมีข้อมูลเกี่ยวกับผลิตภัณฑ์ และมีข้อมูลเฉพาะของตนเอง ฟิลด์อื่นๆ ในตาราง และอื่นๆ ดังนั้นสำหรับแต่ละส่วนการทำงานของไซต์ จึงควรสร้างส่วนประกอบแยกต่างหาก ในรูปแบบ MVC (Model-View-Controller) คอมโพเนนต์จะมีบทบาทเป็นโมเดล

สร้างไฟล์ "page.php" ในโฟลเดอร์ "com" เนื้อหาของไฟล์มีดังนี้:

/* ส่วนประกอบของหน้า */
$นามแฝง = $_GET;
$query = "เลือก * จากหน้า WHERE page_alias="".$alias."" AND page_publish="Y" LIMIT 1";
$db->run($แบบสอบถาม);
$db->row();
// ตัวแปรส่วนประกอบ
$id = $db->ข้อมูล;
$นามแฝง = $db->ข้อมูล;
$title = $db->ข้อมูล;
$h1 = $db->ข้อมูล;
$meta_d = $db->ข้อมูล;
$meta_k = $db->ข้อมูล;
$s_desc = $db->ข้อมูล;
$ส่วนประกอบ = $db->ข้อมูล;
// หากไม่มีหน้านี้
ถ้า (!$id) (
ส่วนหัว ("ไม่พบ HTTP / 1.1 404");
$component = "ข้อผิดพลาด 404 ไม่มีหน้านี้";
}
$db->หยุด ();

5. สร้างส่วนประกอบการแสดงผลหน้าแรก

หน้าหลักในฐานข้อมูลของเราถูกจัดเก็บไว้ภายใต้นามแฝง "บ้าน" และจนถึงขณะนี้โครงสร้างไม่แตกต่างจากหน้าปกติของไซต์ - เป็นเพียงบทความ อย่างไรก็ตาม เราจะสร้างส่วนประกอบแยกต่างหากสำหรับมัน - สำหรับอนาคตก็ว่าได้


เนื้อหาของคอมโพเนนต์ "home.php" ในโฟลเดอร์ "com" เกือบจะเหมือนกับเนื้อหาของคอมโพเนนต์ของเพจปกติ ยกเว้นสตริงการสืบค้นไปยังฐานข้อมูลและชื่อของคอมโพเนนต์ สตริงการสืบค้นตอนนี้มีลักษณะดังนี้:

$query = "SELECT * FROM wx_pages WHERE page_alias="home" LIMIT 1";

6. สร้างเทมเพลตการออกแบบสำหรับทั้งไซต์

สร้างไฟล์ template.php ในรูทของไซต์ อันที่จริง นี่เป็นเลย์เอาต์การออกแบบเว็บปกติในรูปแบบ HTML + CSS โดยมีตัวแปร PHP อยู่ในตำแหน่งที่เหมาะสมเท่านั้น แทรกระหว่างแท็กชื่อเรื่องในคอลัมน์กลางของส่วนแทรกของไซต์ดังนั้นตลอดทั้งเทมเพลต เราจึงวางตัวแปรที่จำเป็นซึ่งประกาศไว้ในส่วนประกอบต่างๆ

โฟลเดอร์รูทควรมีโฟลเดอร์ "css" และ "images" สำหรับองค์ประกอบการออกแบบ ในไฟล์ /css/style.css - คุณสามารถปรับแต่งสไตล์ตามที่คุณต้องการ

7. ล้างลิงก์และไฟล์ .htaccess

ในการสร้างลิงก์ใหม่ทั้งหมด ฉันใช้ mod_rewrite พร้อมคำแนะนำโดยตรงสำหรับกฎสำหรับแต่ละส่วนประกอบแยกกัน เนื่องจากการแยกวิเคราะห์แถบที่อยู่โดยใช้ตัวควบคุมนั้นถือเป็นฟังก์ชันที่ไม่จำเป็น เนื้อหาของ .htaccess ในขั้นตอนนี้คือ:


Rewrite Engine เปิดอยู่
ฐานการเขียนซ้ำ /

RewriteCond %(REQUEST_FILENAME) !-d
RewriteCond %(REQUEST_FILENAME) !-f

#ไฟล์ต้องห้าม
RewriteRule .htaccess - [F]
RewriteRule template.php - [F]

# mod_rewrite กฎ
RewriteRule page/(+)([\/](0,1))\.htm$ index.php?option=page&alias=$1 [L]

ในอนาคต เราจะเพิ่มกฎสำหรับองค์ประกอบการค้นหา แค็ตตาล็อก บล็อกบทความ ฯลฯ มีจุดเดียวคือการแปลงลิงก์เช่น "mysite.com/index.php?option=pages&alias=about" เป็นลิงก์เช่น "mysite.com/pages/about.htm" ซึ่งดูดีทีเดียว ในการพัฒนา พยายามหลีกเลี่ยงอาร์เรย์ $_GET ด้วยเหตุผลด้านความปลอดภัย และอย่าพึ่งพาอาร์เรย์นั้น ขอแนะนำให้จัดเก็บเฉพาะพารามิเตอร์สำหรับตัวควบคุมหลัก (ตัวแปร $option) และสำหรับส่วนประกอบ (ตัวแปร $alias) ในนั้น

นอกจากนี้ในแต่ละโฟลเดอร์ของไซต์ "ในกรณี" ให้สร้างไฟล์ index.html ที่ว่างเปล่าซึ่งจำเป็นเพื่อไม่ให้มีสิ่งใดปรากฏขึ้นเมื่อเข้าถึงไดเร็กทอรีผ่านแถบที่อยู่

แท็ก: php, mysql, เอ็นจิ้นไซต์, คอนโทรลเลอร์, การสร้างไซต์, mvc

2017-01-10


สร้างเว็บไซต์แบบไดนามิกด้วย php

สวัสดีผู้เยี่ยมชมที่รัก!

วันนี้จากหน้าหลักโดยใช้ภาษาการเขียนโปรแกรม PHP เราจะสร้างหน้าไดนามิกซึ่งต่อมาจะถูกสร้างขึ้นบนเซิร์ฟเวอร์ตามคำขอของผู้ใช้แต่ละคน

ดังนั้น โดยการเปลี่ยนโครงสร้างของไซต์และเติมหน้าการเปลี่ยนแปลงที่คล้ายกัน เราจะได้รับไซต์แบบไดนามิก ซึ่งจะทำให้การสนับสนุนด้านเทคนิคและการพัฒนาง่ายขึ้นมากในอนาคตเมื่อเทียบกับเวอร์ชันคงที่

  • ทำไมคุณต้องมีเว็บไซต์แบบไดนามิก
  • วิธีแปลงไซต์คงที่เป็นไดนามิก
  • เราสร้างบล็อกของไซต์แบบไดนามิก
  • การแปลงหน้าเว็บจากสแตติกเป็นไดนามิก
  • ไฟล์ต้นฉบับของไซต์

ทำไมคุณต้องมีเว็บไซต์แบบไดนามิก

เหตุใดคุณจึงต้องมีไซต์ไดนามิกได้กล่าวถึงในตอนต้นของคำแนะนำทีละขั้นตอนในบทความ การติดตั้งเว็บเซิร์ฟเวอร์ Denwer ในเครื่อง ซึ่งอธิบายถึงความจำเป็นในการติดตั้งเว็บเซิร์ฟเวอร์ในเครื่อง ดังนั้น เราสามารถย้อนกลับและรีเฟรชคำถามนี้ได้

นอกจากนี้ หากคุณต้องการพิจารณาข้อดีข้อเสียของไซต์แบบสแตติกและไดนามิกเพิ่มเติม คุณสามารถแนะนำให้คุณทำความคุ้นเคยกับหน้าของไดเร็กทอรีออนไลน์ "Puzzleweb.ru" ที่มีส่วนประเภทไซต์ ซึ่งมีคำอธิบายค่อนข้างกระชับ แต่ในขณะเดียวกันก็มีตัวเลือกไซต์ที่แตกต่างกันอย่างชัดเจน

ภาพหน้าจอ 12

สำหรับสิ่งนี้ เราสามารถเพิ่มได้เฉพาะเพื่อให้ได้รับทรัพยากรทางอินเทอร์เน็ตที่เต็มเปี่ยมอย่างแท้จริง เป็นไปไม่ได้ที่จะข้ามขั้นตอนนี้และคงตัวเลือกของไซต์แบบสแตติกไว้

ดังนั้น เราจะไม่เจาะลึกถึงการอภิปรายเชิงทฤษฎีเกี่ยวกับความจำเป็นในการสร้างไซต์แบบไดนามิกอีกต่อไป แต่เราจะพิจารณาต่อไปว่าเราจะทำอย่างไร

วิธีแปลงไซต์คงที่เป็นไดนามิก

อย่างที่คุณทราบ ความแตกต่างพื้นฐานระหว่างไซต์แบบไดนามิกและไซต์แบบคงที่คือในไซต์แบบคงที่ หน้าเว็บสำเร็จรูปจะอยู่บนเซิร์ฟเวอร์และรอคิวเพื่อส่งไปยังเบราว์เซอร์ของผู้ใช้ ในเวลาเดียวกัน หากหน้าต่างๆ มีความแตกต่างแม้เพียงเล็กน้อย สมมติว่าความแตกต่างนั้นอยู่ในวลีเดียวหรือแม้แต่ในคำเดียว ก็จะยังคงเป็นหน้าที่แยกจากกัน

ในเวอร์ชันไดนามิก การก่อตัวของเพจจะเกิดขึ้นบนเซิร์ฟเวอร์ตามคำขอของผู้ใช้แต่ละคน ขึ้นอยู่กับข้อมูลที่ร้องขอ

ด้วยวิธีง่ายๆ สามารถเปรียบเทียบได้กับคอนสตรัคเตอร์ ซึ่งสามารถสร้างรูปทรงต่างๆ จำนวนมากจากองค์ประกอบจำนวนจำกัด ในเวลาเดียวกัน หากคุณทำการเปลี่ยนแปลงใดๆ กับองค์ประกอบใดองค์ประกอบหนึ่ง การเปลี่ยนแปลงนั้นจะมีผลในโครงสร้างทั้งหมดที่รวมองค์ประกอบนี้ไว้ด้วย

จากนี้ เราจะทำให้หน้าหลักที่เราสร้างขึ้นดูเหมือนคอนสตรัคเตอร์ที่ประกอบด้วยองค์ประกอบบางอย่าง (ในกรณีของเรา สิ่งเหล่านี้จะเป็นไฟล์) ซึ่งหน้าเว็บจะถูกรวบรวมในภายหลังตามคำขอของผู้ใช้

เพื่ออธิบายขั้นตอนที่เราจะดำเนินการ เราจะใช้โค้ด HTML ของเฟรมหน้าหลัก ซึ่งได้รับจากขั้นตอนหนึ่งของการสร้างไซต์ในบทความ

  1. "utf-8" >

    <span><b>ชื่อหน้า</b> </span>

    "คำอธิบาย"เนื้อหา = "คำอธิบายสั้น ๆ ของเนื้อหาหน้า" >

  2. "เครื่องห่อ" >

    หมวก

    โรเตเตอร์

    เนื้อหาหลัก

    แถบด้านข้าง

    ชั้นใต้ดิน

ดังที่คุณเห็นจากโค้ด HTML คอนเทนเนอร์ ออกแบบมาเพื่อรองรับส่วนที่มองเห็นได้ของหน้าเว็บ ประกอบด้วยบล็อกหลักดังต่อไปนี้:

  • หมวก;
  • โรเตเตอร์;
  • เนื้อหาหลัก;
  • แถบด้านข้าง;
  • ชั้นใต้ดิน.

ในกรณีนี้ คุณต้องใส่ใจกับข้อเท็จจริงที่ว่าสี่ในห้าบล็อกเป็นเรื่องปกติ และบล็อก "เนื้อหาหลัก" เพียงบล็อกเดียวจะแตกต่างกันสำหรับแต่ละหน้า

ในการรับองค์ประกอบของไซต์ไดนามิก เราจะแยกเนื้อหาจากบล็อกเหล่านี้ออกเป็นไฟล์แยกต่างหาก ซึ่งเราจะรวมในภายหลังเมื่อรวบรวมหน้าเว็บต่างๆ ตามคำขอของผู้ใช้

ตอนนี้ในขั้นตอนนี้จะมีไฟล์เหล่านี้เพียงห้าไฟล์เท่านั้น แต่ในอนาคต เมื่อเพิ่มหน้าหรือฟังก์ชันเพิ่มเติมในไซต์ ไฟล์ใหม่จะถูกเชื่อมต่อ และอื่นๆ ตามความจำเป็น

การสร้างโครงสร้างเว็บไซต์ดังกล่าวจะช่วยให้ในอนาคตไม่มีส่วนร่วมในงานประจำของการเปลี่ยนรหัส HTML ของทุกหน้าในกรณีที่มีการแทนที่หรือเสริมส่วนใดส่วนหนึ่งที่ใช้ร่วมกัน ในกรณีเช่นนี้ การเปลี่ยนแปลงเฉพาะไฟล์ใดไฟล์หนึ่งก็เพียงพอแล้ว ซึ่งจะทำให้ขั้นตอนการเปลี่ยนทั้งหมดเสร็จสมบูรณ์ อย่างที่คุณเห็นมีข้อได้เปรียบ

แต่เพื่อให้เราทำเช่นนี้ได้ เราต้องการภาษา PHP ซึ่งหน้าเว็บสามารถเข้าถึงบล็อกที่จัดสรรเหล่านี้และถ่ายโอนเนื้อหาไปยังตัวเองได้

ถ้าใครยังไม่ชินกับภาษา PHP แนะนำให้มาทำความรู้จักให้ดีกว่านี้ เพราะ PHP เป็นหนึ่งในเครื่องมือพัฒนาเว็บไซต์ที่สำคัญที่สุด ซึ่งสามารถทำได้โดยใช้เอกสารอ้างอิงประเภทต่างๆ ซึ่งสามารถพบได้ในปริมาณมากใน Runet

เป็นตัวเลือก คู่มือที่กล่าวถึงซ้ำๆ "Puzzleweb.ru" ซึ่งส่วนหนึ่งอุทิศให้กับหัวข้อของ PHP สำหรับการศึกษา PHP ในเชิงลึกยิ่งขึ้น คุณสามารถใช้หนังสืออ้างอิงพิเศษที่จัดทำขึ้นโดยเฉพาะสำหรับภาษานี้ ซึ่งโพสต์บนเว็บไซต์ "php.ru" ใช้ลิงก์ "https://php.ru/manual/control-structures.intro.html" เพื่อไปที่หน้า "บทนำ" ซึ่งคุณสามารถเลือกส่วนใดก็ได้ของคู่มือที่คุณสนใจได้อย่างง่ายดาย

แต่เพื่อสร้างไซต์ไดนามิกในขณะนี้และให้ความสามารถในการเชื่อมต่อไฟล์กับหน้า HTML การใช้คำสั่งเพียงภาษาเดียวก็เพียงพอแล้ว (ใน PHP สคริปต์ใดๆ จะประกอบด้วยลำดับของคำสั่ง) นี่อาจเป็นหนึ่งในสี่ตัวเลือกที่เป็นไปได้สำหรับคำแนะนำในการเชื่อมต่อไฟล์:

  • รวม;
  • จำเป็นต้อง;
  • include_once;
  • ต้องการ_ครั้งเดียว

มันไม่มีเหตุผลที่จะอธิบายคุณสมบัติของพวกเขาที่นี่ เนื่องจากมีการอธิบายโดยละเอียดในหนังสืออ้างอิง ตัวอย่างเช่น การใช้ลิงก์ "http://www.puzzleweb.ru/php/26_inc_files.php" คุณจะเข้าใจได้ดี

เราจะใช้คำสั่ง "require_once" เมื่อสร้างเว็บไซต์ ฉันมักจะใช้ตัวเลือกนี้ สะดวกที่สุดสำหรับฉัน

ตอนนี้เราเข้าใจแล้วว่าเรากำลังจะทำอะไรต่อไปเรามาดำเนินการจริงกัน

เราสร้างบล็อกของไซต์แบบไดนามิก

ในการสร้างบล็อกที่จะเข้าร่วมในการประกอบหน้าเว็บ ก่อนอื่นคุณต้องสร้างบล็อกเหล่านั้น ซึ่งทำได้ในโปรแกรมแก้ไขข้อความ Notepad++ ในลักษณะเดียวกับที่เราสร้างไฟล์ไซต์แรก "index.html" ในบทความ สร้างหน้าเว็บและโฮสต์บนเว็บเซิร์ฟเวอร์ภายในเครื่อง. ในกรณีนี้ควรระบุส่วนขยายเท่านั้นไม่ใช่ "html" แต่เป็น "php" ในขณะเดียวกันก็จำเป็นต้องให้ความสนใจกับการเข้ารหัสเพื่อหลีกเลี่ยงการปรากฏของอักขระที่เข้าใจยากประเภทต่างๆ ในหน้าในอนาคต

ไฟล์จะถูกสร้างขึ้นในโฟลเดอร์ "บล็อก" ที่สร้างขึ้นใหม่แยกต่างหาก สำหรับไฟล์ที่ใช้ร่วมกันในทุกหน้า เราจะกำหนดชื่อตามชื่อของบล็อกที่เกี่ยวข้อง และสำหรับบล็อก "หลัก" เราจะระบุชื่อเฉพาะสำหรับแต่ละหน้าของไซต์

ดังนั้น สำหรับหน้าหลัก เราจะเชื่อมต่อไฟล์ชื่อ "block_glavnaya" กับบล็อก "หลัก" สำหรับส่วนที่เหลือ: "ส่วนหัว" "ส่วน" "ข้าง" และ "ส่วนท้าย"

เมื่อสร้างไฟล์ คุณยังสามารถคำนึงด้วยว่าเพื่อให้ขั้นตอนนี้ง่ายขึ้น คุณสามารถคัดลอกโดยใช้เมนู "ไฟล์" โดยระบุชื่อไฟล์ใหม่เมื่อบันทึก "บันทึกเป็น"

โดยทั่วไป การสร้างไฟล์เป็นขั้นตอนมาตรฐาน ดังนั้นจึงไม่น่าจะมีปัญหาใดๆ ในท้ายที่สุดควรมีลักษณะเช่นนี้


จากนั้นเราคัดลอกเนื้อหาของแต่ละบล็อกและถ่ายโอนไปยังไฟล์ที่เหมาะสม เรามาดูรายละเอียดเพิ่มเติมโดยใช้ตัวอย่าง "header.php"

1. เปิดไฟล์ "index.html" ในโปรแกรมแก้ไข Notepad++ เลือกพื้นที่ที่ต้องการของบล็อก "ส่วนหัว" แล้วกดปุ่มเมาส์ขวาและซ้ายสลับกันเพื่อคัดลอกไปยังคลิปบอร์ด

ควรสังเกตว่าที่นี่เราคัดลอกเนื้อหาทั้งหมดของบล็อกยกเว้นเมนู นี่เป็นเพราะเพื่อแสดงปุ่มเมนูที่ใช้งานอยู่ในแอตทริบิวต์แท็ก

  • จำเป็นสำหรับแต่ละหน้าในการกำหนดค่าให้กับคลาสคลาส "กิจกรรม". เช่นเดียวกับส่วนที่คล้ายกันในบล็อก "ส่วนท้าย"

    ในอนาคตเราจะย้ายส่วนย่อยของเมนูเหล่านี้ในบล็อก "ส่วนหัว" และ "ส่วนท้าย" เป็นไฟล์แยกกัน แต่ตอนนี้เราจะไม่ทำให้ซับซ้อนและทิ้งไว้ในที่เดียวกัน

    วิธีเลือกและคัดลอกส่วนของบล็อก "ส่วนหัว" ไปยังคลิปบอร์ดจะแสดงอยู่ในภาพหน้าจอด้านล่าง



    3. และสุดท้าย ในการเลื่อนเนื้อหาของไฟล์ใน Notepad ++ ไปทางซ้าย คุณต้องกด "Tab" หลาย ๆ ครั้งในขณะที่กดปุ่ม "Shift" เป็นผลให้เราได้รับไฟล์ "header.php" ที่สร้างขึ้นในรูปแบบต่อไปนี้


    เราจะทำเช่นเดียวกันกับไฟล์อื่นๆ ภาพหน้าจอด้านล่างแสดงให้เห็นว่าเนื้อหาจะมีลักษณะอย่างไรเมื่อการดำเนินการที่จำเป็นทั้งหมดเสร็จสิ้น


    รูปที่ 6 ไฟล์ "section.php"


    รูปที่ 7 ไฟล์ "block_glavnaya.php"


    รูปที่ 8 ไฟล์ "aside.php"


    รูปที่ 9 ไฟล์ "footer.php"

    ดังนั้นเราจึงได้รับไฟล์ทั้งหมดสำหรับสร้างไดนามิกเพจ และตอนนี้เราสามารถไปที่โค้ด HTML ของเพจได้โดยตรง

    การแปลงหน้าเว็บจากสแตติกเป็นไดนามิก

    เพื่อให้แน่ใจว่าหน้าหลักของเราโหลดไฟล์ที่สร้างไว้ในส่วนก่อนหน้า ก่อนอื่นคุณต้องเปลี่ยนนามสกุลของไฟล์ "index" จาก "html" เป็น "php" จากนั้นเปิดใหม่อีกครั้งในโปรแกรมแก้ไข Notepad++ และทำให้ การเปลี่ยนแปลงต่อไปนี้:

    • ลบเนื้อหาของบล็อกที่เคยถ่ายโอนไปยังไฟล์ที่สร้างขึ้นใหม่
    • เขียนคำสั่ง "require_once" ใน PHP ไปยังพื้นที่ว่าง เพื่อระบุพาธไปยังไฟล์ที่เกี่ยวข้อง
    • ในแท็กเมนู
    • ซึ่งระบุพาธไปยังเพจ สำหรับเพจหลัก ให้เปลี่ยนนามสกุลจาก "html" เป็น "php" และอื่นๆ ให้ระบุชื่อเพจที่สร้างขึ้นใหม่
    • ระบุ "บ้าน" ในชื่อเรื่อง

    หลังจากดำเนินการเหล่านี้แล้ว หน้าหลักของเราควรมีลักษณะดังนี้


    จากภาพหน้าจอด้านบน คุณจะเห็นว่าคำสั่ง PHP ทั้งหมดถูกเน้นด้วยแท็กเปิด. สัญลักษณ์นี้ใช้เพื่อระบุว่าเมื่อใดควรเริ่มและหยุดการประมวลผลโค้ดที่เขียนด้วย PHP ดังนั้นในอนาคต รหัส PHP ทั้งหมดจะถูกแยกตามการกำหนดนี้

    คุณยังสามารถให้ความสนใจว่าชื่อของหน้าใหม่นั้นถูกสร้างขึ้นโดยคำนึงถึงวัตถุประสงค์ของพวกเขา ดังนั้นโครงสร้างและรหัสของไซต์จึงได้รับการรับรู้ที่ดีขึ้น

    สิ่งนี้ทำให้การเปลี่ยนแปลงทั้งหมดของเราเสร็จสมบูรณ์ และตอนนี้ หากเราเปิดหน้าหลักอีกครั้งในเบราว์เซอร์ เราก็ไม่ควรเห็นการเปลี่ยนแปลงใดๆ กับไซต์เวอร์ชันก่อนหน้า มันควรจะเปิดในลักษณะเดียวกับเมื่อก่อน แต่ถ้าผลลัพธ์มีบางอย่างผิดปกติ หมายความว่าคุณต้องมองหาข้อผิดพลาดที่เกิดขึ้นในการดำเนินการข้างต้น

    รีเฟรชเบราว์เซอร์ตอนนี้และลองเปิดหน้าหลัก


    อย่างที่คุณเห็น ในกรณีของเรา หน้าหลักเปิดขึ้นโดยไม่มีปัญหาใดๆ แต่ไม่เหมือนกับงานก่อนหน้าของไซต์ หน้าเว็บได้รับแบบฟอร์มนี้อันเป็นผลมาจากการก่อตัวบนเซิร์ฟเวอร์เมื่อประมวลผลคำขอ

    ดังนั้นตอนนี้เว็บไซต์ของเราจึงมีไดนามิกเพจแรก และหลังจากเพิ่มหน้าอื่นๆ ที่คล้ายกันเข้าไปแล้ว ไซต์นี้สามารถเรียกไดนามิกได้อย่างถูกต้องพร้อมกับผลที่ตามมาทั้งหมด เช่น มันจะมีข้อได้เปรียบทั้งหมดที่มีอยู่ในไซต์ไดนามิก และเราจะสามารถตรวจสอบสิ่งนี้ได้เมื่อเราเติมเต็มด้วยฟังก์ชันประเภทต่างๆ ในอนาคต

    ด้วยวิธีนี้ เราจะดำเนินการขั้นตอนที่สำคัญของการพัฒนาเว็บไซต์ให้เสร็จสิ้น และในบทความถัดไป เราจะสร้างหน้าไดนามิกใหม่สำหรับเว็บไซต์นั้น ซอร์สโค้ดของไซต์เวอร์ชันล่าสุดสามารถดาวน์โหลดได้ตามปกติจากลิงก์ที่ส่วนท้ายของบทความ

    ไฟล์ต้นฉบับของไซต์

    ไฟล์ต้นฉบับของไซต์พร้อมการอัปเดตที่ทำในบทความนี้สามารถดาวน์โหลดได้จากไฟล์แนบ วัสดุเพิ่มเติม.