หน้าเฟรมเวิร์ก PHP MVC ที่เรียบง่ายเป็นพิเศษ
ดูโครงการเด็กของโครงการนี้: https://github.com/h3rb/papi และ https://github.com/h3rb/pagemin
แสดงให้เห็นถึงการตั้งค่าแอปพลิเคชันเฟรมเวิร์ก "หน้า" ใหม่ที่ Apache2 ที่กำหนดค่าไว้ล่วงหน้าให้บริการโดเมน http://indiedev.space คลิกที่นี่เพื่อสาธิต: https://asciinema.org/a/dbaycbfxgbyh4jqmbj1vnxum
การสาธิตข้างต้นแสดงวิธีการ:
ลิขสิทธิ์ (C) 2015-2017, H. Elwood Gilliland III สงวนลิขสิทธิ์
อนุญาตให้แจกจ่ายและใช้งานในรูปแบบแหล่งที่มาและไบนารีโดยมีหรือไม่มีการแก้ไขได้รับอนุญาตหากเป็นไปตามเงื่อนไขต่อไปนี้:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
ซอฟต์แวร์นี้จัดทำโดยผู้ถือลิขสิทธิ์และผู้มีส่วนร่วม "ตามที่เป็นอยู่" และการรับประกันโดยชัดแจ้งหรือโดยนัยใด ๆ รวมถึง แต่ไม่ จำกัด เพียงการรับประกันโดยนัยของความสามารถในการค้าและความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ไม่ว่าในกรณีใดผู้ถือลิขสิทธิ์หรือผู้มีส่วนร่วมจะต้องรับผิดชอบต่อความเสียหายทางตรงทางอ้อม, โดยบังเอิญ, พิเศษ, เป็นแบบอย่าง, หรือความเสียหายที่ตามมา (รวมถึง แต่ไม่ จำกัด เพียงการจัดหาสินค้าทดแทนหรือบริการการสูญเสียข้อมูลหรือผลกำไรหรือการหยุดชะงักของธุรกิจ แนะนำถึงความเป็นไปได้ของความเสียหายดังกล่าว
เฟรมเวิร์กหน้าเป็นเรื่องง่ายมาก แต่มีเอกสารน้อยมาก เพียงอ่าน index.php และขุดจากที่นั่นเพื่อดูว่าการเข้าสู่ระบบทำงานอย่างไร ยังไม่ได้ทำการลงทะเบียน แต่เข้าสู่ระบบสำหรับบัญชีผู้ดูแลระบบเริ่มต้น
จากจุดนี้คุณสามารถทำอะไรก็ได้ หน้านั้นดีโดยเฉพาะสำหรับการพัฒนาเว็บแอปพลิเคชันที่ใช้ PDO น้อยที่สุด สิ่งที่คุณต้องใช้ในการติดตั้งคือการใส่ลงในโฟลเดอร์และตรวจสอบ. htaccess และการตั้งค่าเส้นทางหนึ่งครั้งและคุณเป็นทองคำ การปรับใช้หลายหน้าสามารถแชร์ฐานข้อมูลการรับรองความถูกต้องเดียวกัน ทำไมต้องใช้กรอบขนาดมหึมาบางอย่าง? ทุกสิ่งที่คุณต้องการอยู่ที่นี่เพื่อเริ่มสร้างเครื่องมือการทำงานร่วมกันสำหรับทีมหรือบริการสาธารณะเช่นบล็อกเว็บไซต์โซเชียลมีเดียที่กำหนดเองไม่ว่าอะไรก็ตาม!
โปรดทราบว่าทุกสิ่งที่คุณต้องการจะปรากฏในโฟลเดอร์ "Core" ทุกอย่างอื่นเป็นเพียงการใช้งานที่ด้านบนของแกนนั้น CORE ทั้งหมดให้คือวัตถุหน้า, wrapper PDO และคุณสมบัติที่มีประโยชน์พื้นฐานบางอย่างจริง ๆ ทุกอย่างอื่นจะถูกนำไปใช้ในโฟลเดอร์หลักหรือหนึ่งในโฟลเดอร์ย่อยอื่น ๆ หากคุณเข้าใจทุกอย่างใน /core /ทุกอย่างอื่นสามารถลบออกได้ (ยกเว้นอาจเป็นโฟลเดอร์แคช) หากต้องการกลับไปสู่ขั้นต่ำให้ตัด "แกน" ออกด้วยเครื่องตัดคุกกี้ ตอนนี้มีเวอร์ชันนี้เรียกว่า pagemin http://github.com/h3rb/pagemin
หน้าถูกเขียนขึ้นสำหรับ PHP5 แต่ใช้งานได้ดีใน PHP7 เนื่องจากใช้คุณสมบัติภาษา PHP น้อยที่สุด สิ่งหนึ่งที่คุณจะต้องระวังคือการใช้แอมป์แซนด์ (&) เนื่องจากบางหน้าและหน้าสาธิตอาจใช้ในรูปแบบของ & $ p แต่คุณสามารถแทนที่ด้วย $ p โครงการเริ่มต้นขึ้นในปี 2551 แต่ไม่มีชื่อ "หน้า" มันได้รับการฟื้นฟูปรับเปลี่ยนและเปลี่ยนชื่อในปี 2014 เมื่อมันกลายเป็น "เมล็ดพันธุ์" สำหรับระบบอินทราเน็ตการเริ่มต้นการพิมพ์ 3 มิติของการพิมพ์ ฉันใช้มันเพื่อสร้างเครื่องมือสำหรับ lostastronaut.com และเป็น "วุ้น" พื้นฐานสำหรับเว็บไซต์โคมไฟอื่น ๆ ที่ฉันต้องการฟังก์ชั่นแบ็คเอนด์แบบกำหนดเองมากมาย มันยังถูกใช้กับ WAMP
ใช้:
ด้วยเฟรมเวิร์กนี้จนถึงตอนนี้ฉันได้ทำระบบองค์กรที่ใช้งานได้อย่างสมบูรณ์และใช้งานได้อย่างสมบูรณ์ ฉันสร้างอินทราเน็ต Corporate Secure ซึ่งเป็นระบบการจัดการเนื้อหาที่ใช้ร่วมกันออนไลน์ฐานข้อมูลและเครื่องมือแก้ไขสำหรับแผนกออกแบบเว็บไซต์ตัวชี้วัดผลิตภัณฑ์แบบบูรณาการพร้อมการประมวลผลข้อมูลและแอพพลิเคชั่นยูทิลิตี้หลายรายการ มันง่ายที่จะปรับใช้แล้วเริ่มพัฒนาทันทีที่คุณรู้พื้นฐาน ใช้งานได้อย่างน่าเชื่อถือที่สุดในสแต็คโคมไฟ การใช้งาน WAMP อาจใช้งานได้กับการดัดแปลงบางอย่าง แต่ไม่มี gaurantees ได้รับการปรับใช้กับอินสแตนซ์ AWS และสามารถลดลงเป็นรอยเท้าน้อยที่สุดหากคุณลบฟังก์ชั่นตัวอย่างที่บรรจุไว้ด้วย
คุณสามารถติดหน้าในโฟลเดอร์และแนบกับฐานข้อมูล คุณสามารถทำซ้ำกระบวนการนั้นได้หากคุณต้องการสร้างฟังก์ชันการทำงานหลายชุด
ให้พื้นฐาน:
ปรัชญา:
ตัวอย่างของไฟล์ PHP คอนโทรลเลอร์มุมมองแบบทั่วไป:
include " core/Page.php " ;
$ p = new Page ;
$ p -> title = " My wickid page " ;
if ( Session:: is_logged_in () ) // Checks to see if user is logged in or not...
$ p -> HTML ( " Hey I'm logged in!!!! YAY! " );
else $ p -> HTML ( " not logged in.. :( " );
$ p -> Render (); // Puts page to screen.ตัวอย่างของ "PHP อัตโนมัติจากสคริปต์" ทั่วไปไฟล์ PHP:
include " core/automation.php " ; // Does everything Page does except create the Page class.. no Auth either.
//... load models and do stuff to db ...ในการตั้งค่าการบันทึกแบบละเอียดเต็มรูปแบบ (เก็บไว้ในแคช/บันทึก/lam-log.txt
global $ plog_level ; $ plog_level = 1 ; // must appear before Page.php is included
include ' core/Page.php ' ;ตัวอย่างวิธีการสร้างโมเดลใหม่:
วิธีแนบกับตารางฐานข้อมูลโดยใช้โมเดล:
global $ database ;
$ my_model = new tableName ( $ database );ดูไฟล์ใน Core/ PDO/ เพื่อเรียนรู้วิธีการทำงานทุกอย่าง
การติดตั้งและใช้ jQuery
หน้ารองรับ jQuery เวอร์ชันใด ๆ และมีคุณสมบัติพื้นฐานบางอย่างที่ให้คุณปรับใช้ jQuery โดยทางโปรแกรม ซึ่งแตกต่างจากเฟรมเวิร์กอื่น ๆ หรือวิธีการขององค์กรคุณจะต้องแบ่งปลั๊กอิน jQuery ของคุณลงใน CSS/ และ JS/ โฟลเดอร์การวาง CSS และรูปภาพในไฟล์ CSS/ และไฟล์ JavaScript ใน JS/ เพื่อให้คุณสามารถใช้ $ page-> js () $-> css () เพื่อโหลดพวกเขา ใช้ $ page-> jq () เพื่อติดบรรทัดในพื้นที่เอกสาร Ready () และใช้ $ page-> js () เพื่อเพิ่มไปยัง JavaScript ทั่วโลกของหน้า
include ' core/Page.php ' ;
$ p = new Page ();
$ p -> JS ( ' somejsfile.js ' );
$ p -> JS ( ' http://cdn.url.com ' );
$ p -> JQuery (); // Loads Jquery automatically
$ p -> JQ ( '
$("#docisready").on("click" ... );
' );
$ p -> JS ( ' var myGlobal=1; setInterval(function(){alert( ' foo');}, 1000 );');นอกจากนี้คุณจะต้องทราบว่าหากคุณโหลด jQuery ที่กำหนดเองของคุณเองให้แก้ไขลำดับการโหลดใน Core/Page.php ไปยังเวอร์ชันที่คุณเลือกในตำแหน่งที่คุณเลือกหรือโหลดผ่านวิธีอื่นและแจ้งหน้าว่ามันติดตั้งแล้วเพื่อไม่ให้ติดตั้งสองครั้ง
$page->jq_loaded=TRUE;
วิดเจ็ตข้อมูลทั่วไป "การแก้ไขสด" ในตัว
(วิธีการในคลาส Core Page แต่เป็นส่วนหนึ่งของฟังก์ชันที่ไม่ใช่คอร์)
หน้าถูกใช้เพื่อแก้ไขข้อมูลฐานข้อมูล-เป็นส่วนหน้าฐานข้อมูลสำหรับอินทราเน็ตขององค์กร-และให้คุณและคนอื่น ๆ แก้ไขข้อมูลได้ทันที คุณยังสามารถใช้คุณสมบัติในตัวเช่นล็อคอัตโนมัติและการล็อคแถวเพื่อป้องกันข้อมูลจากการแก้ไข sniping การสนับสนุนการล็อคแถวอยู่ใน shreds/autolocks.php
วิดเจ็ตทั้งหมดเหล่านี้เชื่อมโยงกับ Ajax.*. ไฟล์ php และมีข้อเสียเล็กน้อยสองสามข้อ พวกเขาถูกเขียนถึงการทำงาน แต่ด้วยค่าใช้จ่ายของเครือข่าย (ไม่ได้แคชหรือล่าช้าข้อความขาออก) นอกจากนี้หากคุณออกจากหน้าเว็บอย่างรวดเร็วหลังจากเปลี่ยนบางสิ่งคำขออาจไม่เสร็จสมบูรณ์ ดังนั้นหากคุณกำลังจะออกจากหน้าเว็บรออย่างน้อย 1-2 วินาทีขึ้นอยู่กับเวลาแฝงเครือข่ายปัจจุบันของคุณ
นอกจากนี้คุณต้องใช้ ACLS เพื่อรักษาความปลอดภัยผู้ใช้ฐานข้อมูลของคุณจากการแก้ไขสิ่งที่ไม่อนุญาต คุณสามารถใช้ ACLs ได้ทั้งระดับตารางหรือระดับของความละเอียดในรูปแบบของการแก้ไขชื่อ-Tablename หรือ Edit-Tablename-FieldName คลาส ACL ถูกกำหนดใน Shreds/Acl.php และแท็ก "ACL เหล่านี้เหล่านี้ถูกตรวจสอบในไฟล์ Ajax.*. PHP พวกเขาจะต้องเก็บไว้ในโปรไฟล์ของผู้ใช้ ACLS พิเศษ "Admin" และ "SU" ให้คุณข้ามความปลอดภัยนี้! ระวังที่นั่น
คุณต้องใช้ jQuery และปลั๊กอินสนับสนุนที่พวกเขาต้องการและคุณต้องเปิดใช้งานคุณสมบัติเหล่านี้โดยใช้ $ page-> bind_loadplugins ();
เมื่อเปิดใช้งานแล้วคุณจะใช้ตัวเลือก $ page-> bind* เพื่อแก้ไขฐานข้อมูล Global $ Global หลักของคุณ คุณควรอ่านใน core/page.php
$ p = new Page ();
$ p -> Bind_LoadPlugins (); // Automatically loads jQuery and the required jQuery plugins.
$ p -> BindString (...);ดู/
มีทุกสิ่งที่คุณต้องการเรียกว่า "มุมมอง" โดยชัดแจ้ง - ไม่รวมโดยอัตโนมัติเรียกใช้: รวม: view/myview.php "
ระบบอัตโนมัติ/
มีทุกสิ่งที่คุณไม่สนใจในโฟลเดอร์เว็บ (มิฉะนั้นให้ใช้โฟลเดอร์ที่เรียกว่า/ออฟไลน์) โดยปกติจะอยู่ในรูปแบบของสคริปต์ BASH และ/หรือ PHP ที่ใช้จุดเข้าหลัก/automation.php
แคช/
มีไฟล์บันทึก (จากฟังก์ชั่น PLOG) และแคชสำหรับปลั๊กอินใด ๆ ที่คุณอาจใช้หรืออะไรก็ตามที่คุณต้องการแคช
ตรวจสอบให้แน่ใจว่านี่เป็นสิ่งที่เขียนได้และโฟลเดอร์ย่อยทั้งหมด ...
หลัก/
มีแกนหลักของเฟรมเวิร์กหน้า core/page.php เป็นสิ่งที่คุณต้องการรวมตลอดเวลา Core/Automation.php ใช้สำหรับสคริปต์ออฟไลน์ที่ต้องเข้าถึงโมเดลของคุณ Core/Utility.php เป็นที่ที่ฉันเก็บฟังก์ชั่นผู้ช่วยที่มีประโยชน์ทั้งหมดไว้
CORE/PDO/
มีฟังก์ชั่นที่เกี่ยวข้องกับ PDO สิ่งที่คุณต้องขยายคือโมเดล คุณควรอ่านพวกเขาเพื่อรับความรู้สึกสำหรับตัวเลือกและอินเทอร์เฟซ
CSS/
มี Main.css และไฟล์ CSS อื่น ๆ สำหรับปลั๊กอินหรือพื้นที่พิเศษของเว็บไซต์ของคุณ คุณสามารถรวมไฟล์เหล่านี้เช่นนี้:
$ p -> CSS ( ' main.css ' ); // Includes css/main.css
$ p -> CSS ( ' myplugin/plugin.css ' ); // Includes css/myplugin/plugin.css. เครื่องยนต์/
โฟลเดอร์นี้มีสิ่งใดก็ตามที่เป็น "เหมือนเครื่องยนต์" มากกว่าและไฟล์จะถูกรวมโดยอัตโนมัติดังนั้นควรยกเว้น. htaccess, สิ้นสุดใน. php และเป็นรหัสที่ถูกต้อง (ไม่มีข้อผิดพลาดทางไวยากรณ์)
แบบฟอร์ม/
มีไฟล์พิเศษสำหรับคลาส DataForm ซึ่งมักจะตั้งชื่อเหมือน form_name.txt ใช้เพื่อแมปแบบฟอร์มเว็บคลาสสิกโดยตรงกับฟิลด์ในฐานข้อมูลสำหรับการป้อนข้อมูลและการแก้ไข
ตัวอย่าง/
มีตัวอย่างและบันทึกย่อ
ทั่วโลก/
โฟลเดอร์นี้มีสิ่งใดก็ตามที่เป็น "เหมือนทั่วโลก" และไฟล์จะรวมอยู่โดยอัตโนมัติดังนั้นควรยกเว้น. htaccess สิ้นสุดใน. php และเป็นรหัสที่ถูกต้อง (ไม่มีข้อผิดพลาดทางไวยากรณ์) โดยทั่วไปคุณเพียงแค่เรียกใช้คำสั่งทั่วโลกและตั้งค่าค่าเริ่มต้นแม้ว่าคุณจะสามารถทำให้มัน "ฉลาดกว่า" ในแบบที่คุณต้องการ
html/
มีตัวอย่าง HTML ที่สามารถโหลดลงในหน้า -> html โดยการอ้างอิงไฟล์ตัวอย่าง $ p-> html ('myfile.html') จะถูกค้นพบโดยอัตโนมัติใน HTML/
JS/
ใส่ไฟล์ JavaScript ของคุณที่นี่ เมื่อคุณ $p->JS('somefile.js') มันจะดูที่นี่และมันยังรับรู้ถึง URL CDN
PHTML/
สิ่งที่คุณต้องการประเมินและรวมถึง HTML แบบผสมควรอยู่ที่นี่ ไม่ใช่คุณสมบัติที่แนะนำจริงๆ แต่ฉันเพิ่มถ้าคุณต้องการทำสิ่งนี้
Schemas/
ไม่ว่าจะเป็นสคีมาฐานข้อมูลใดก็ตามที่คุณใช้ในการสร้างเว็บไซต์ของคุณสามารถเก็บไว้ที่นี่ แต่มันไม่ปลอดภัย ลบโฟลเดอร์นี้หากคุณต้องการ
การตั้งค่า/
มีไฟล์การกำหนดค่า ไฟล์ทั้งหมดในโฟลเดอร์นี้จะถูกโหลดโดยอัตโนมัติและควรสิ้นสุดใน. php และมีรหัส PHP ที่ถูกต้อง
UI/
มีไฟล์ตัวอย่าง UI ที่ใช้ประโยชน์จากคลาส UI Base ใน core/ui.php - ฉันลงเอยด้วยการทำของฉันใน shreds/ แทน แต่คุณสามารถใช้สิ่งนี้ได้หากคุณต้องการ ไฟล์ทั้งหมดในโฟลเดอร์นี้จะถูกโหลดโดยอัตโนมัติและควรสิ้นสุดใน. php และมีรหัส PHP ที่ถูกต้อง
แบบอย่าง/
มีไฟล์การกำหนดค่า ไฟล์ทั้งหมดในโฟลเดอร์นี้จะถูกโหลดโดยอัตโนมัติและควรสิ้นสุดใน. php และมีรหัส PHP ที่ถูกต้อง
ชิ้นเล็กชิ้นน้อย/
มีโมดูลโหลดอัตโนมัติ, ตัวอย่าง, ฟังก์ชั่นไม่ว่าอะไรก็ตาม ฉันใช้มันเพื่อห่อปลั๊กอิน jQuery (หรือชิ้นส่วน JavaScript อื่น ๆ ) ใน PHP สำหรับการประมวลผลล่วงหน้าเมื่อฉันไม่ต้องการจัดการอีกวิธีหนึ่ง ตัวอย่างเช่นฉันใช้ฟังก์ชั่นที่เกี่ยวข้องกับ muuri.js ด้วยวิธีนี้เพื่อให้คุณสามารถใช้มันในจุดสิ้นสุดแทนที่จะอยู่ในส่วนของหน้ารวมหน้า HTML/ โฟลเดอร์หรือไฟล์ JS ที่รวมอยู่
โมดูล/
ไฟล์ที่คุณต้องการรวมด้วยตนเอง คล้ายกับผู้ขาย/ โฟลเดอร์ในเค้ก include 'module/whatever.php'
ฉัน/
ภาพของคุณ! สิ่งเหล่านี้มีการอ้างอิงทั้งหมดในไฟล์. html เช่น หรือคุณสามารถอ้างอิงได้ด้วย i/
เอกสาร/
เอกสารที่คุณต้องการให้มีอยู่ในเว็บไซต์ของคุณหรือกับคนอื่น ๆ หากมี. sql ที่นี่ให้ลบหลังจากที่คุณใช้
คุณจะต้อง หมดอายุ A2ENMOD รวมถึงการเขียน MCRYPT ใหม่ และอาจเป็นคนอื่น ๆ
เพื่อความสะดวกฉันได้รวมแนวทางที่นี่เพื่อนำคุณผ่านการตั้งค่า Ubuntu/PHP/Apache2 สิ่งนี้ใช้งานได้ดีในอินสแตนซ์ AWS EC2 หลังจากนั้นอาจต้องใช้เครื่องรีบูตเครื่อง
หากคุณกำลังติดตั้ง Php7.1 ด้วย FPM บน Ubuntu 16.04 LTS คุณจะต้องทำสิ่งนี้ก่อนใด ๆ ข้างต้น:
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y unzip apache2 php7.1 php7.1-cli php7.1-common libapache2-mod-php7.1 php7.1-mysql php7.1-fpm php7.1-curl php7.1-gd php7.1-bz2 php7.1-mcrypt php7.1-json php7.1-tidy php7.1-imagick php7.1-mbstring php-redis php-memcached
sudo a2enmod expires include rewrite mcrypt
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.1-fpm
sudo service apache2 restart
ชื่อผู้ใช้ผู้ดูแลระบบเริ่มต้น: รหัสผ่านผู้ดูแลระบบสำหรับผู้ดูแลระบบ: พื้นที่เดียว '' (เปลี่ยนเมื่อคุณเข้าสู่ระบบ)
Fatal error: Call to a member function Select() on a non-object in /var/www/core/PDO/model.php on line 104
ซึ่งหมายความว่าฐานข้อมูลของคุณไม่ได้ตั้งค่าอย่างถูกต้อง ไม่ว่าจะไม่มีอยู่จริงหรือไม่สามารถใช้ได้
หน้าโครงกระดูกไซต์ตัวอย่างมาพร้อมกับการรับรองความถูกต้องในตัวถูกเขียนใน MySQL รุ่นที่เข้มงวดน้อยกว่าที่ติดตั้งโดยค่าเริ่มต้น คุณจะเห็นข้อผิดพลาดเมื่อเขียนลงในฐานข้อมูลหากเป็นกรณีนี้
หากต้องการปิดข้อ จำกัด เหล่านี้ SSH ในเซิร์ฟเวอร์ของคุณเป็นรูทและสร้างไฟล์นี้: /etc/mysql/conf.d/disable_strict_mode.cnf
เปิดไฟล์และป้อนสองบรรทัดนี้:
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
เสร็จสิ้นการดำเนินการโดยรีสตาร์ท MySQL
sudo service mysql restart
ในการเริ่มต้นโครงการอย่างสมบูรณ์ตั้งแต่เริ่มต้นโดยใช้ฟังก์ชั่นหลัก
ประสิทธิภาพและการบันทึก
คุณไม่ควรอนุญาตให้ $ plog_level = 1 การตั้งค่าบนเซิร์ฟเวอร์การผลิต
คุณไม่ควรเก็บ schemas ของคุณไว้ในโฟลเดอร์เว็บสาธารณะของคุณซึ่งรวมถึง page_authdb.sql ที่บรรจุไว้ล่วงหน้าด้วยเหตุผลที่ชัดเจน
การเป็นเจ้าของข้อมูล
โปรดทราบว่าคุณต้องตรวจสอบคำขอที่เกี่ยวข้องกับฐานข้อมูลทั้งหมดเพื่อความเป็นเจ้าของและความสามารถในการรับชม ในที่สุดเมื่อฉันมีเวลาที่จะใช้ PORM โมดูลหลักหน้าจะจัดการกับสิ่งนี้บางอย่างสำหรับคุณเกี่ยวกับการเป็นเจ้าของมากกว่าข้อมูล แต่มันก็ขึ้นอยู่กับคุณที่จะทำการชุบแข็งและการตรวจสอบข้อมูลที่จำเป็นเพื่อเรียกคืนและเก็บไว้จากฐานข้อมูล เมื่อรู้สิ่งนี้ ajax.?.php จำนวนมากอาจไม่ตรวจสอบความเป็นเจ้าของมากกว่าข้อมูลเพราะหน้าถูกเขียนขึ้นสำหรับเครื่องมือที่โปร่งใสและใช้งานภายใน คุณควรใช้ระบบการเป็นเจ้าของฐานข้อมูลของคุณเอง (การอนุญาตกลุ่มและบุคคลสาธารณะและเอกชน)
ซ่อนซอร์สโค้ดส่วนตัว
หน้าอาศัยคุณสมบัติไฟล์ .htaccess ของ Apache2 (หรือความจำเพาะการกำหนดค่าทั่วไปภายใน VHOST หรือ HTTPD หรือพอร์ตหรือวิธีใดก็ตามที่คุณใช้) เพื่อตั้งค่าสิทธิ์พิเศษและพารามิเตอร์ของแต่ละโฟลเดอร์เว็บและโฟลเดอร์ย่อย สิ่งนี้ทำเพื่อให้สามารถแทรกหน้าลงในโครงการอื่น ๆ หรือเพื่อให้วางไว้ในหลาย ๆ ที่บนเว็บเซิร์ฟเวอร์เดียวกัน หน้าเว็บสามารถวางไว้ในโฟลเดอร์และไฟล์เกือบทั้งหมดจะถูกซ่อนไว้ยกเว้นในโฟลเดอร์หลัก แม้แต่โฟลเดอร์ย่อยใหม่ที่คุณทำก็จะไม่สามารถเข้าถึงได้ต่อสาธารณะเว้นแต่คุณจะสร้างไฟล์ .htaccess ที่อนุญาต
หากคุณใช้ Nginx หรือสิ่งอื่นใดนอกเหนือจาก Apache คุณสามารถข้ามสองย่อหน้าถัดไปและทำตามคำแนะนำ
อย่างไรก็ตามบางคนดูเหมือนจะคิดว่านี่เป็นความคิดที่ไม่ดี ตราบใดที่คุณระวังว่าคุณเพิ่มโค้ดประเภทใดในหน้าคุณควรจะสามารถสร้างเว็บไซต์ที่ปลอดภัยได้ ในอดีตสิ่งนี้ทำเพื่อ PHP โดยการทดสอบที่ด้านบนของแต่ละไฟล์รวมไม่ว่าจะเป็นทรัพยากรที่ถูกโหลดโดยเบราว์เซอร์ระยะไกลหรือรวมอยู่ในไฟล์ (ตัวอย่างเช่น codeigniter, zend) หน้าไม่ได้ทำเช่นนี้เพราะโฟลเดอร์ทั้งหมดไม่สามารถเข้าถึงได้และหากพวกเขาจัดการเพื่อเรียกใช้ไฟล์ "คลาส" ใดไฟล์หนึ่งไม่มีอะไรจะเกิดขึ้นอย่างมีนัยสำคัญ ไม่ว่าบางคนจะเชื่อว่าแฮ็กเกอร์สามารถหลอก Apache2 ให้ไม่สนใจไฟล์. htaccess หน้าและความสามารถในการอัปโหลดไม่อนุญาตให้มีสิ่งนี้ นอกจากนี้หน้าไม่จำเป็นต้องใช้ eval() เพื่อใช้อะไรเพราะมันไม่ได้ใช้วิธีการเดียวกันเพื่อใช้ MVC เป็นเฟรมเวิร์กอื่น ๆ (codeigniter, zend เป็นต้น)
หากคุณเชื่อว่าเหตุผลที่ใส่รหัสลงในโฟลเดอร์ที่เปิดเผย แต่ไม่สามารถเข้าถึงได้เป็นความคิดที่ไม่ดีสำหรับหน้าคุณสามารถทำให้ปลอดภัยยิ่งขึ้นโดยการย้ายไปยังโฟลเดอร์ออฟไลน์และการเปิดเผยจุดสิ้นสุดสาธารณะ PHP เท่านั้น (ไฟล์ที่คุณต้องการให้ผู้คนเรียกดู) ในโฟลเดอร์เว็บเซิร์ฟเวอร์ของคุณ โดยส่วนตัวแล้วฉันไม่เห็นประโยชน์ยกเว้นว่ามันจะเป็นไปไม่ได้ที่คุณจะยุ่งและไม่มีไฟล์ .htaccess ในสถานที่ที่คุณต้องการ ผลข้างเคียงอย่างหนึ่งของการทำเช่นนี้คือถ้าคุณมีหลายไซต์ที่สร้างขึ้นบนหน้าและต้องการรักษาแกนเดียวคุณสามารถใช้วิธีเดียวกันนี้เพื่อทำเช่นนั้น
เพื่อให้หน้านอกขอบเขตและในโฟลเดอร์เว็บออฟไลน์:
คุณอาจต้องปรับสองสามบรรทัดแรกของ core/page.php ที่แท้จริงของคุณเพื่อสะท้อนความแตกต่างของเส้นทางนี้ซึ่งคุณจะเห็นว่ารวม _all และ include_once ที่เกี่ยวข้องกับแกน แต่ควรจะดีเนื่องจาก ณ จุดนี้มันสัมพันธ์กับไฟล์ core/Page.php ที่รวมอยู่
หากคุณรวมโมดูลใด ๆ ด้วยตนเองคุณจะต้องเพิ่ม /path/to/page/folder/
อยู่มาวันหนึ่งฉันจะใช้ Pown ต่อไปซึ่งจะช่วยให้การเพาะฐานฐานข้อมูลและคุณสมบัติการโยกย้ายสคีมาเพื่อให้ชีวิตง่ายขึ้น คุณจะสามารถสร้างคำอธิบายทั้งหมดของฐานข้อมูลในไฟล์ข้อความพิเศษ (มันจะดูเหมือนการประกาศคลาสใน C ++ / Java) และแปลงเป็นต้นไม้ $orm->Deploy() (ซึ่งคุณสามารถอ่านได้จากไฟล์) จากนั้นฟีดไปยังตัวสร้างคลาส Pown ประเภทเก่าก่อน)
ความคิด
เมื่อฉันใช้หน้าเว็บมากขึ้นเรื่อย ๆ ฉันก็พบว่ามันติดอยู่ หน้ามีความเท่าเทียมกันในโลกของ NodeJS: ExpressJs ไม่ว่ามือเก่าเหล่านี้จะยังพิมพ์ PHP เร็วขึ้นมาก ฉันใช้ PHP สำหรับเครื่องมือภายในที่ lostastronaut.com ค่อนข้างมีประสิทธิภาพเพราะมันค่อนข้างคล้ายกับ C ++ ที่ฉันได้เขียนเครื่องมือเกม Windows Game ของฉันฉันยังทำงานบนเว็บไซต์อื่น ๆ ที่จะใช้มัน ยังไม่มีอะไรที่ให้ความรู้สึกที่ทรงพลังมากกว่าความสามารถในการแสดงจาวาสคริปต์ที่กำหนดเองโดยใช้ PHP แม้ว่ามันจะเป็นฝันร้ายของไวยากรณ์