โซลูชันการตรวจสอบสิทธิ์ผู้ใช้ที่เรียบง่ายภายในเฟรมเวิร์กเฟรมเวิร์กที่เรียบง่ายสุด ๆ ซึ่งใช้งานได้ทันที (และมาพร้อมกับตัวติดตั้งอัตโนมัติ) โดยใช้การใช้การแฮช / เกลือรหัสผ่าน bcrypt อย่างเป็นทางการที่พิสูจน์ได้ในอนาคตของ PHP 5.5+ บวก คุณสมบัติที่ดีบางอย่างที่จะช่วยเร่งเวลาตั้งแต่แนวคิดไปจนถึงแอปพลิเคชันต้นแบบที่ใช้งานได้ครั้งแรกอย่างมาก ไม่มีอะไรเพิ่มเติม โปรเจ็กต์นี้เน้นไปที่ความเรียบง่ายแบบฮาร์ดคอร์ ทุกอย่างเรียบง่ายที่สุดเท่าที่จะเป็นไปได้ สร้างขึ้นสำหรับโปรเจ็กต์ขนาดเล็ก งานตัวแทนทั่วไป และแบบร่างด่วน หากคุณต้องการสร้างแอปพลิเคชันองค์กรขนาดใหญ่พร้อมฟีเจอร์ทั้งหมดที่เฟรมเวิร์กสมัยใหม่มี ลองดูที่ Laravel, Symfony หรือ Yii แต่ถ้าคุณต้องการสร้างสิ่งที่ใช้งานได้อย่างรวดเร็ว สคริปต์นี้อาจน่าสนใจสำหรับคุณ
สถาปัตยกรรมที่เรียบง่ายที่สุดเท่าที่จะเป็นไปได้ของ HUGE ได้รับแรงบันดาลใจจากการพูดคุยในการประชุม สไลด์ และบทความเกี่ยวกับแอปพลิเคชันขนาดใหญ่ที่ย้อนกลับไปสู่พื้นฐานของการเขียนโปรแกรมอย่างน่าประหลาดใจและตั้งใจ โดยใช้การเขียนโปรแกรมตามขั้นตอน คลาสแบบคงที่ โครงสร้างที่เรียบง่ายอย่างยิ่ง ไม่ใช่แบบแห้งทั้งหมด รหัส ฯลฯ ในขณะที่ยังคงรักษาโค้ดให้อ่านได้ง่ายมาก (StackOverflow, Wikipedia, SoundCloud)
Buzzwords ที่น่าสนใจในบริบทนี้: KISS, YAGNI, Feature Creep, ผลิตภัณฑ์ขั้นต่ำที่ใช้งานได้
เพื่อให้โครงการนี้มีเสถียรภาพ ปลอดภัย สะอาดและเรียบง่าย ฉันจึงตัดสินใจลดการพัฒนา HUGE ให้เหลือน้อยที่สุด ไม่ต้องกังวล นี่เป็นสิ่งที่ดีจริงๆ: คุณสมบัติใหม่มักจะหมายถึงจุดบกพร่องใหม่ การทดสอบมากมาย การแก้ไข ความเข้ากันไม่ได้ และสำหรับบางคนถึงกับเครียดกับการอัปเดตแบบฮาร์ดคอร์ เนื่องจาก HUGE เป็นสคริปต์ที่มีความสำคัญต่อความปลอดภัย คุณสมบัติใหม่จึงไม่สำคัญเท่ากับแกนหลักที่เสถียรและปลอดภัย นี่คือสาเหตุที่ผู้คนใช้มัน ซึ่งหมายความว่า:
และบอกตามตรงว่า การรักษากรอบการทำงานให้ฟรีในเวลาว่างที่หายากของฉันนั้นไม่ใช่สิ่งที่ฉันต้องการทำอย่างถาวร -
ข้อสังเกตเล็กๆ น้อยๆ สุดท้ายนี้: โลกของ PHP มีการพัฒนาไปอย่างมาก เรามีเฟรมเวิร์กที่ยอดเยี่ยมพร้อมฟีเจอร์ที่ยอดเยี่ยมและทีมงานมืออาชีพขนาดใหญ่ที่อยู่เบื้องหลัง เอกสารที่เขียนได้ดีมากและชุมชนขนาดใหญ่ ดังนั้นจึงไม่มีเหตุผลที่จะต้องทำงานหนักมากในเฟรมเวิร์กอื่น โปรดผูกมัดกับเฟรมเวิร์กยอดนิยมแทน แล้วงานของคุณจะมีผลกระทบมากขึ้นและมีคนใช้มากขึ้น!
ขอบคุณทุกคนที่อยู่รอบโครงการนี้ ขอให้มีช่วงเวลาที่ยอดเยี่ยม! จุ๊บๆ, คริส
ย้อนกลับไปในปี 2010/2011 ไม่มีโซลูชันการเข้าสู่ระบบที่เป็นประโยชน์ในโลก PHP อย่างน้อยก็ไม่ใช่สำหรับผู้ที่ไม่ใช่ผู้เชี่ยวชาญ ดังนั้นฉันจึงทำข้อผิดพลาดที่เลวร้ายที่สุดที่ Developer รุ่นเยาว์ทุกคนทำ: การพยายามสร้างบางสิ่งด้วยตัวเองโดยไม่มีเบาะแสเกี่ยวกับพื้นฐานด้านความปลอดภัย สิ่งที่ทำให้แย่ลงไปอีกคือ เว็บนั้น (และ) เต็มไปด้วยบทช่วยสอนที่เสียหายโดยสิ้นเชิงเกี่ยวกับการสร้างระบบการตรวจสอบสิทธิ์ผู้ใช้ แม้แต่บริษัทที่ใหญ่ที่สุดในโลกก็ยังทำสิ่งนี้ผิดอย่างสิ้นเชิง (เรากำลังพูดถึง SONY, LinkedIn และ Adobe ที่นี่) และ ยังมีเฟรมเวิร์กหลักมากมายในภาษาการเขียนโปรแกรมขนาดใหญ่ทั้งหมด (!) ใช้เทคโนโลยีการบันทึกรหัสผ่านที่ล้าสมัยและไม่ปลอดภัยโดยสิ้นเชิง
อย่างไรก็ตาม ในปี 2012 ผู้เชี่ยวชาญด้านความปลอดภัย Anthony Ferrara ได้ตีพิมพ์ไลบรารี่ PHP เล็กๆ น้อยๆ ซึ่งช่วยให้สามารถแฮชรหัสผ่านได้อย่างปลอดภัย ทันสมัย และถูกต้องใน PHP 5.3 และ 5.4 ซึ่งนักพัฒนาทุกคนสามารถใช้งานได้โดยไม่ต้องเครียด และไม่มีความรู้เกี่ยวกับความปลอดภัยภายใน สคริปต์นี้ยอดเยี่ยมมากจนถูกเขียนลงในแกนหลักของ PHP 5.5 ซึ่งเป็นมาตรฐานจริงในทุกวันนี้
เมื่อสิ่งนี้เกิดขึ้น ฉันพยายามใช้ไลบรารีเปล่านี้เพื่อสร้างระบบการเข้าสู่ระบบที่ทำงานได้ทันทีที่ใช้งานได้จริงสำหรับโปรเจ็กต์ส่วนตัวและเชิงพาณิชย์หลายโปรเจ็กต์ และใส่โค้ดลงบน GitHub ผู้คนจำนวนมากพบว่าสิ่งนี้มีประโยชน์ มีส่วนร่วม และแก้ไขข้อบกพร่องของโครงการ สร้าง forks ในเวอร์ชันที่เล็กลงและใหญ่ขึ้น ผลลัพธ์ก็คือโครงการนี้
โปรดทราบ: ในปัจจุบัน ในปี 2558 เฟรมเวิร์กหลักส่วนใหญ่มีตรรกะการตรวจสอบผู้ใช้ที่ยอดเยี่ยมซึ่งฝังอยู่ตามค่าเริ่มต้น นี่ไม่ใช่กรณีเมื่อหลายปีก่อน ดังนั้น จากมุมมองของวันนี้ การเลือก Laravel, Yii หรือ Symfony สำหรับโปรเจ็กต์ที่จริงจังอาจฉลาดกว่า แต่อย่าลังเลที่จะทดลองใช้งานใหญ่ๆ ตัวติดตั้งอัตโนมัติจะเริ่มการติดตั้งที่ทำงานได้อย่างสมบูรณ์ภายในไม่กี่นาทีและไม่มีการกำหนดค่าใดๆ
แล้วทำไมถึงชื่อ "HUGE" ล่ะ? เป็นการผสมผสานที่ดีระหว่าง TINY, MINI และ MINI2, MINI3 ซึ่งเป็นโปรเจ็กต์เก่าๆ ของฉัน เฟรมเวิร์กขนาดเล็กที่น้อยที่สุดเพื่อการพัฒนาเว็บไซต์ที่เรียบง่ายอย่างรวดเร็วและง่ายดาย
ดูการสาธิตสดของเวอร์ชัน 3.0 ที่เก่ากว่าได้ที่นี่ และ phpinfo() ของเซิร์ฟเวอร์ที่นี่
มีงานมากมายที่อยู่เบื้องหลังโครงการนี้ ฉันอาจช่วยคุณประหยัดเวลาในการทำงานได้หลายร้อยหรือหลายพันชั่วโมง (คำนวณจากต้นทุนของนักพัฒนา) ดังนั้นเมื่อคุณได้รับเงินจากการใช้ HUGE จงยุติธรรมและคืนบางสิ่งให้กับโอเพ่นซอร์ส HUGE ใช้งานได้ฟรีทั้งแบบส่วนตัวและเชิงพาณิชย์
สนับสนุนโครงการด้วยการเช่าเซิร์ฟเวอร์ที่ DigitalOcean หรือเพียงแค่จิบกาแฟที่ BuyMeACoffee.com ขอบคุณ! -
อย่าลังเลที่จะมีส่วนร่วมในโครงการนี้
ได้รับอนุญาตภายใต้ MIT ฟรีทั้งหมดสำหรับโครงการส่วนตัวหรือเชิงพาณิชย์
ตรวจสอบให้แน่ใจว่าคุณรู้พื้นฐานของการเขียนโปรแกรมเชิงวัตถุและ MVC สามารถใช้บรรทัดคำสั่งและเคยใช้ Composer มาก่อน สคริปต์นี้ไม่เหมาะสำหรับผู้เริ่มต้น
โย่ อัตโนมัติสุดๆ ทำไม ? เพราะฉันเกลียดที่ต้องใช้เวลาหลายวันในการพยายามหาวิธีติดตั้งสิ่งต่างๆ สิ่งนี้จะช่วยคุณประหยัดเวลาและความกังวลใจได้มาก บริจาคกาแฟหากคุณต้องการ
หากคุณใช้ Vagrant เพื่อการพัฒนาของคุณล่ะก็
vagrant box add ubuntu/trusty64
vagrant up
ในโฟลเดอร์นั้น5 นาทีต่อมา คุณจะมีการติดตั้งขนาดใหญ่อย่างสมบูรณ์ใน Ubuntu 14.04 LTS รหัสเต็มจะถูกซิงค์อัตโนมัติกับโฟลเดอร์ปัจจุบัน รหัสผ่านรูท MySQL และรหัสผ่านรูท PHPMyAdmin ถูกตั้งค่าเป็น 12345678 ตามค่าเริ่มต้น 192.168.33.111 คือ IP ของกล่องใหม่ของคุณ
การติดตั้งที่ง่ายมากในเซิร์ฟเวอร์ Ubuntu 14.04 LTS ทั่วไปที่ใหม่และเปลือยเปล่า:
ดาวน์โหลดสคริปต์การติดตั้ง
wget https://raw.githubusercontent.com/panique/huge/master/_one-click-installation/bootstrap.sh
ทำให้มันปฏิบัติการได้
chmod +x bootstrap.sh
วิ่งมัน! ให้เวลาสักครู่เพื่อทำงานทั้งหมด และใช่ คุณสามารถขอบคุณฉันทีหลัง :)
sudo ./bootstrap.sh
Composer install
บนโฟลเดอร์รูทของแอปพลิเคชันเพื่อติดตั้งการขึ้นต่อกัน"อีเมลใช้งานไม่ได้" ? ดูการแก้ปัญหาด้านล่าง สิ่งที่ต้องทำ
นี่เป็นเพียงคำแนะนำสั้นๆ สำหรับการตั้งค่าสภาพแวดล้อมการพัฒนาที่ง่ายดาย!
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Apache, PHP 5.5+ และ MySQL แล้ว บทช่วยสอนที่นี่ Nginx จะทำงานอย่างแน่นอนเช่นกัน แต่ยังไม่มีแนวทางการติดตั้ง
แก้ไข vhost เพื่อให้ URL ที่สะอาดเป็นไปได้และกำหนดเส้นทางการรับส่งข้อมูลทั้งหมดไปยังโฟลเดอร์ /public ของโครงการของคุณ:
sudo nano /etc/apache2/sites-available/000-default.conf
และทำให้ไฟล์มีลักษณะเช่นนี้
<VirtualHost *:80>
DocumentRoot "/var/www/html/public"
<Directory "/var/www/html/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
เปิดใช้งาน mod_rewrite และรีสตาร์ท apache
sudo a2enmod rewrite
service apache2 restart
ติดตั้ง curl (จำเป็นต้องใช้ git), openssl (จำเป็นต้องโคลนจาก GitHub เนื่องจาก github เป็น https เท่านั้น), PHP GD, lib กราฟิก (เราสร้าง captchas และ avatars) และ git
sudo apt-get -y install curl
sudo apt-get -y install php5-curl
sudo apt-get -y install openssl
sudo apt-get -y install php5-gd
sudo apt-get -y install git
git clone ใหญ่มาก
sudo git clone https://github.com/panique/huge " /var/www/html "
ติดตั้งนักแต่งเพลง
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
ไปที่โฟลเดอร์โปรเจ็กต์ โหลดแพ็คเกจ Composer (--dev เป็นทางเลือก คุณก็รู้ดี)
cd /var/www/html
composer install --dev
ดำเนินการคำสั่ง SQL ผ่าน phpmyadmin หรือผ่านทางบรรทัดคำสั่ง เป็นต้น 12345678 คือรหัสผ่านตัวอย่าง โปรดทราบว่าสิ่งนี้เขียนโดยไม่มีช่องว่าง
sudo mysql -h " localhost " -u " root " " -p12345678 " < " /var/www/html/application/_installation/01-create-database.sql "
sudo mysql -h " localhost " -u " root " " -p12345678 " < " /var/www/html/application/_installation/02-create-table-users.sql "
sudo mysql -h " localhost " -u " root " " -p12345678 " < " /var/www/html/application/_installation/03-create-table-notes.sql "
ทำให้โฟลเดอร์อวตารสามารถเขียนได้ (ตรวจสอบให้แน่ใจว่าเป็นเส้นทางที่ถูกต้อง!)
sudo chown -R www-data " /var/www/html/public/avatars "
หากไม่ได้ผลสำหรับคุณ คุณอาจลองวิธีอย่างหนักโดยการตั้งค่าอื่น
sudo chmod 0777 -R " /var/www/html/public/avatars "
ลบไฟล์สาธิตเริ่มต้นของ Apache
sudo rm " /var/www/html/index.html "
แก้ไขการกำหนดค่าของแอปพลิเคชันใน application/config/config.development.php และใส่ข้อมูลรับรองฐานข้อมูลของคุณ
ส่วนสุดท้าย (ไม่จำเป็นสำหรับการทดสอบครั้งแรก): ตั้งค่าข้อมูลรับรอง SMTP ของคุณในไฟล์เดียวกันและตั้งค่า EMAIL_USE_SMTP เป็นจริง เพื่อให้คุณสามารถส่งอีเมลที่เหมาะสมได้ ขอแนะนำอย่างยิ่งให้ใช้ SMTP ในการส่งอีเมล! การส่งแบบเนทิฟผ่าน mail() ของ PHP จะไม่ทำงานในเกือบทุกกรณี (การบล็อกสแปม) ฉันใช้ SMTP2GO
จากนั้นตรวจสอบ IP / โดเมนของเซิร์ฟเวอร์ของคุณ ทุกอย่างควรจะทำงานได้ดี
นี่คือการตั้งค่า NGINX ที่ยังไม่ผ่านการทดสอบ กรุณาแสดงความคิดเห็นบนตั๋วหากคุณเห็นปัญหา
server {
# your listening port
listen 80;
# your server name
server_name example.com;
# your path to access log files
access_log /srv/www/example.com/logs/access.log;
error_log /srv/www/example.com/logs/error.log;
# your root
root /srv/www/example.com/public_html;
# huge
index index.php;
# huge
location / {
try_files $uri /index.php?url=$uri&$args;
}
# your PHP config
location ~ .php$ {
try_files $uri = 401;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
ขอขอบคุณ razuro เป็นอย่างยิ่งสำหรับการตั้งค่าที่ดีนี้: ใส่สิ่งนี้ไว้ในโฟลเดอร์รูทของคุณ แต่อย่าใส่ web.config ใด ๆ ไว้ในโฟลเดอร์สาธารณะของคุณ
<?xml version="1.0" encoding="UTF-8"?><configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="public/index.php?url={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
ค้นหาตั๋วเดิมได้ที่นี่
โดยค่าเริ่มต้นจะมีผู้ใช้สาธิตสองคน ได้แก่ ผู้ใช้ทั่วไปและผู้ใช้ผู้ดูแลระบบ สำหรับข้อมูลเพิ่มเติม โปรดดูส่วนบทบาทผู้ใช้ของบล็อกเอกสารขนาดเล็กภายใน readme นี้
ผู้ใช้ปกติ: ชื่อผู้ใช้คือ demo2
, รหัสผ่านคือ 12345678
. ผู้ใช้ถูกเปิดใช้งานแล้ว ผู้ใช้ที่เป็นผู้ดูแลระบบ (สามารถลบและระงับผู้ใช้รายอื่นได้): Username is demo
,password is 12345678
. ผู้ใช้ถูกเปิดใช้งานแล้ว
มีหลายไฟล์ในโฟลเดอร์รูทของโปรเจ็กต์ที่อาจทำให้เกิดการระคายเคือง:
README และ CHANGELOG เป็นการอธิบายในตัวมันเอง
กำลังจัดทำเอกสารจริงอยู่ ในระหว่างนี้ โปรดดูโค้ดและใช้คุณลักษณะการเติมโค้ดของ IDE ของคุณเพื่อให้ทราบว่าสิ่งต่างๆ ทำงานอย่างไร ซึ่งจะค่อนข้างชัดเจนเมื่อคุณดูไฟล์คอนโทรลเลอร์ ไฟล์โมเดล และวิธีการแสดงข้อมูลในไฟล์มุมมอง ขออภัยอย่างยิ่งที่ยังไม่มีเอกสาร แต่เวลามีน้อยและเราทุกคนทำสิ่งนี้ฟรีในเวลาว่าง :)
ขณะนี้มีผู้ใช้สองประเภท: ผู้ใช้ทั่วไปและผู้ดูแลระบบ ก็มีเหมือนกันแต่...
ผู้ใช้ที่เป็นผู้ดูแลระบบสามารถลบและระงับผู้ใช้รายอื่นได้ โดยจะมีปุ่ม "ผู้ดูแลระบบ" เพิ่มเติมในการนำทาง ผู้ใช้ที่เป็นผู้ดูแลระบบมีค่าเป็น 7
ภายในฟิลด์ตารางฐานข้อมูล user_account_type
พวกเขาไม่สามารถอัปเกรดหรือดาวน์เกรดบัญชีของตนได้ (เนื่องจากไม่สมเหตุสมผล)
ผู้ใช้ทั่วไปไม่มีฟีเจอร์ผู้ดูแลระบบอย่างแน่นอน แต่พวกเขาสามารถอัปเกรดและดาวน์เกรดบัญชีของตนได้ (ลองใช้ผ่าน /user/changeUserRole) ซึ่งโดยพื้นฐานแล้วเป็นการใช้งานที่ง่ายมากของแนวคิดผู้ใช้พื้นฐาน / ผู้ใช้ระดับพรีเมียม ผู้ใช้ปกติมีค่า 1
หรือ 2
ภายในฟิลด์ตารางฐานข้อมูล user_account_type
โดยค่าเริ่มต้น ผู้ใช้ที่ลงทะเบียนใหม่ทั้งหมดจะเป็นผู้ใช้ปกติที่มีบทบาทผู้ใช้ 1 แน่นอน
ดูส่วน "การทดสอบกับผู้ใช้สาธิต" ของ readme นี้สำหรับข้อมูลเพิ่มเติม
นอกจากนี้ยังมีคำขอดึงที่น่าสนใจมากซึ่งเพิ่มบทบาทของผู้ใช้และการอนุญาตของผู้ใช้ ซึ่งไม่ได้รวมเข้ากับโปรเจ็กต์เนื่องจากมีขั้นสูงและซับซ้อนเกินไป แต่นี่อาจเป็นสิ่งที่คุณต้องการ อย่าลังเลที่จะลอง
เพื่อป้องกันการโจมตี CSRF HUGE ทำเช่นนี้ด้วยวิธีทั่วไป โดยใช้ โทเค็น ความปลอดภัยเมื่อผู้ใช้ส่งแบบฟอร์มที่สำคัญ ซึ่งหมายความว่า: เมื่อ PHP แสดงผลแบบฟอร์มสำหรับผู้ใช้ แอปพลิเคชันจะใส่ "สตริงสุ่ม" ไว้ในแบบฟอร์ม (เป็นช่องป้อนข้อมูลที่ซ่อนอยู่) ซึ่งสร้างผ่าน Csrf::makeToken() (application/core/Csrf.php) ซึ่ง ยังบันทึกโทเค็นนี้ลงในเซสชันด้วย เมื่อส่งแบบฟอร์ม แอปพลิเคชันจะตรวจสอบว่าคำขอ POST มีโทเค็นของแบบฟอร์มที่อยู่ภายในเซสชันหรือไม่
ขณะนี้คุณลักษณะการป้องกัน CSRF นี้ถูกนำไปใช้ในกระบวนการแบบฟอร์มการเข้าสู่ระบบ (ดู application/view/login/index.php ) และกระบวนการเปลี่ยนแบบฟอร์มชื่อผู้ใช้ (ดู application/view/user/editUsername.php ) รูปแบบอื่น ๆ ส่วนใหญ่ไม่มีความปลอดภัย- สำคัญและควรเรียบง่ายที่สุดเท่าที่จะเป็นไปได้
ดังนั้น หากต้องการดำเนินการนี้ด้วยแบบฟอร์มปกติ เพียง: ที่แบบฟอร์มของคุณ ก่อนที่ปุ่มส่งจะใส่: <input type="hidden" name="csrf_token" value="<?= Csrf::makeToken(); ?>" />
จากนั้น ในการดำเนินการของคอนโทรลเลอร์ ให้ตรวจสอบโทเค็น CSRF ที่ส่งมาพร้อมกับแบบฟอร์มโดยทำดังนี้:
// check if csrf token is valid
if (!Csrf::isTokenValid()) {
LoginModel::logout();
Redirect::home();
exit();
}
ขอขอบคุณ OmarElGabry เป็นอย่างยิ่งสำหรับการดำเนินการนี้!
ตามทฤษฎี: ใช่ แต่ฟีเจอร์นี้ใช้ไม่ได้กับการทดสอบของฉัน เนื่องจากเป็นคุณสมบัติภายนอก โปรดดูรายละเอียดเพิ่มเติมในตั๋วตามนั้น
มีฟีเจอร์เจ๋งๆ หรือไอเดียฟีเจอร์ดีๆ ที่สร้างโดยคนเก่งๆ แต่ฟีเจอร์เหล่านี้น่าสนใจเป็นพิเศษเกินกว่าจะใส่ลงในเวอร์ชันหลักของ HUGE ได้ แต่ลองดูตั๋วเหล่านี้หากคุณสนใจ:
แนวคิดของโปรเจ็กต์นี้คือการจัดหาแอปพลิเคชันแบร์โบนที่เรียบง่ายเป็นพิเศษพร้อมระบบตรวจสอบสิทธิ์ผู้ใช้เต็มรูปแบบภายในที่ทำงานได้ดีและเสถียร เนื่องจากสคริปต์นี้มีลักษณะที่เกี่ยวข้องกับความปลอดภัยสูง การเปลี่ยนแปลงใดๆ จึงต้องอาศัยการทำงานจำนวนมาก การทดสอบจำนวนมาก กรณีที่ล้ำหน้า ฯลฯ และในท้ายที่สุด ฉันใช้เวลา 90% ของการทดสอบและแก้ไขคุณสมบัติใหม่หรือคุณสมบัติใหม่ที่ทำให้ที่มีอยู่เสียหาย และการทำเช่นนี้ไม่ใช่สิ่งที่ใครอยากทำฟรีๆ ในเวลาว่างที่หายากจริงๆ :)
เพื่อให้โครงการมีเสถียรภาพ สะอาด และบำรุงรักษาได้ ฉันจึงขอประกาศ "จุดสิ้นสุดของชีวิต" สำหรับโครงการนี้ ซึ่งหมายความว่า:
A. HUGE จะไม่ได้รับฟีเจอร์ใหม่ใดๆ ในอนาคต แต่ ... B. จะมีการแก้ไขข้อผิดพลาดและการแก้ไข ซึ่งอาจใช้เวลานานหลายปี
ในขณะที่ HUGE อยู่ระหว่างการพัฒนา มีกฎหลัก 3 ข้อที่ช่วยฉัน (และอาจมีกฎอื่นๆ ด้วย) ในการเขียนโค้ดที่น้อยที่สุด สะอาดตา และใช้งานได้ อาจมีประโยชน์สำหรับคุณเช่นกัน:
ตามที่ระบุไว้ในบทนำของ README นี้ ยังมีแนวคิดที่ทรงพลังบางอย่างที่อาจช่วยคุณได้ในการพัฒนาสิ่งดีๆ: KISS, YAGNI, Feature Creep, ผลิตภัณฑ์ขั้นต่ำที่ใช้งานได้
เพื่อหลีกเลี่ยงงานที่ไม่จำเป็นสำหรับพวกเราทุกคน ฉันขอแนะนำให้ทุกคนใช้ HUGE สำหรับโปรเจ็กต์ง่ายๆ ที่ต้องการเพียงฟีเจอร์ที่มีอยู่แล้ว และหากคุณต้องการสถาปัตยกรรม RESTful การโยกย้าย การกำหนดเส้นทาง 2FA ฯลฯ ก็จะง่ายกว่า สะอาดกว่า และ เร็วกว่าเพียงแค่ใช้ Laravel, Symfony หรือ Zend
อย่างไรก็ตาม นี่คือคุณสมบัติที่เป็นไปได้ที่ชุมชนแนะนำ ซึ่งนำมาจากตั๋วจำนวนมาก อย่าลังเลที่จะนำไปปรับใช้กับทางแยกของโปรเจ็กต์ของคุณ:
มีฟอรัมสนับสนุน (!) สองฟอรัมสำหรับเวอร์ชัน 1 และเวอร์ชัน 2 ของโปรเจ็กต์นี้ (ขนาดใหญ่มากคือเวอร์ชัน 3) และทั้งสองฟอรัมถูกทำลายโดยผู้ที่ไม่ได้อ่าน readme และ / หรือแนวทางการติดตั้งด้วยซ้ำ คำถามที่ถูกถามมากที่สุดคือ "สคริปต์ใช้งานไม่ได้ โปรดช่วยด้วย" โดยไม่ได้ให้ข้อมูลที่เป็นประโยชน์ใดๆ (เช่น รหัสหรือการตั้งค่าเซิร์ฟเวอร์ หรือแม้แต่เวอร์ชันที่ใช้) ในขณะที่ฉันกำลังเขียนบรรทัดเหล่านี้ มีคนถามผ่าน Twitter ว่า "จะติดตั้งอย่างไรโดยไม่ต้องใช้ Composer" คุณรู้ว่าฉันหมายถึงอะไร :) - 99% ของคำถามนั้นไม่จำเป็น หากผู้คนได้อ่านหลักเกณฑ์ ค้นคว้าข้อมูลเพียงเล็กน้อย หรือหยุดทำสิ่งที่ซับซ้อนโดยไม่จำเป็น และแม้กระทั่งตอนที่เขียนคำตอบโดยละเอียด ส่วนใหญ่ก็ยังทำให้สับสน ส่งผลให้เกิดการโวยวายและการร้องเรียน (สำหรับการสนับสนุนฟรีสำหรับซอฟต์แวร์ฟรี!) เป็นเรื่องน่าหงุดหงิดที่ต้องจัดการกับเรื่องนี้ทุกๆ วัน โดยเฉพาะอย่างยิ่งเมื่อผู้คนมองว่า มันเป็นหน้าที่ ของนักพัฒนาโอเพ่นซอร์สที่จะต้องให้การสนับสนุนโดยละเอียด ฟรี และเป็นส่วนตัวสำหรับทุกๆ คำขอ "โปรดช่วย"
ดังนั้นฉันจึงตัดสินใจหยุดการสนับสนุนฟรีใดๆ โดยสิ้นเชิง สำหรับคำถามร้ายแรงเกี่ยวกับปัญหาที่แท้จริงภายในสคริปต์ โปรดใช้ฟีเจอร์ปัญหา GitHub
คำพูดที่รุนแรง แต่โดยพื้นฐานแล้วโครงการอินเทอร์เน็ตสาธารณะทุกโครงการมักถูกคุกคาม ทำลายล้าง และหลอกโดยคนแปลก ๆ ในปัจจุบัน จึงจำเป็น: กฎง่ายๆ บางประการ
โปรดทราบว่านี่เป็นเพียงสคริปต์ง่ายๆ ที่เขียนโดยอาสาสมัครที่ไม่ได้รับค่าตอบแทนในเวลาว่าง นี่ไม่ใช่ซอฟต์แวร์ธุรกิจที่คุณซื้อในราคา 10,000 ดอลลาร์ ไม่มีเหตุผลที่จะบ่น (!) เกี่ยวกับซอฟต์แวร์โอเพ่นซอร์สฟรี ทัศนคติต่อซอฟต์แวร์เสรีเป็นเรื่องที่น่าหงุดหงิดจริงๆ ในปัจจุบัน ผู้คนต่างมองข้ามทุกสิ่งโดยที่ไม่รู้ตัวว่าอยู่เบื้องหลังซอฟต์แวร์ดังกล่าว และความจริงที่ว่าพวกเขาได้รับซอฟต์แวร์ที่จริงจังฟรีๆ ซึ่งช่วยประหยัดเงินได้หลายพันดอลลาร์ ถ้าไม่ชอบก็อย่าใช้ หากคุณต้องการฟีเจอร์ ให้ลองมีส่วนร่วมในกระบวนการนี้ หรืออาจจะสร้างมันขึ้นมาเองและเพิ่มเข้าไปในโปรเจ็กต์ก็ได้! จงเป็นคนดีและให้เกียรติ คำวิจารณ์ที่สร้างสรรค์ยินดีต้อนรับเสมอ!
ห้ามทุบตี ห้ามเกลียด ห้ามสแปม ห้ามทำลายล้าง โปรดอย่าขอการสนับสนุนส่วนตัวฟรี อย่าถามว่าใครจะทำงานให้คุณได้บ้าง ก่อนที่คุณจะถามอะไร ตรวจสอบให้แน่ใจว่าคุณได้อ่าน README ปฏิบัติตามทุกบทช่วยสอน ตรวจสอบโค้ดอีกครั้ง และพยายามแก้ไขปัญหาด้วยตัวเอง
โทรลล์และคนที่น่ารำคาญมากจะถูกแบน/บล็อกถาวร GitHub มีทีมต่อต้านการละเมิดที่ทรงพลังมาก
กรุณากระทำเฉพาะในสาขา พัฒนา เท่านั้น สาขา หลัก จะมีเวอร์ชันที่เสถียรอยู่เสมอ
Scrutinizer (สาขาหลัก), Scrutinizer (สาขาพัฒนา), Code Climate, Codacy, SensioLabs Insight
เนื่องจากผลที่ตามมาที่อาจเกิดขึ้นได้เมื่อมีการเผยแพร่จุดบกพร่องในโครงการโอเพ่นซอร์สสาธารณะ ฉันขอให้คุณส่งจุดบกพร่องที่ใหญ่มากไปยังที่อยู่อีเมลของฉัน ไม่ใช่โพสต์สิ่งนี้ที่นี่ หากจุดบกพร่องไม่น่าสนใจสำหรับผู้โจมตี: อย่าลังเลที่จะสร้างปัญหา GitHub ปกติ
ดูปัญหาที่เกิดขึ้นได้ที่นี่: https://github.com/panique/huge/issues?state=open
ปัญหาที่น่าสนใจ: เมื่อผู้ใช้เข้าชมเว็บไซต์ของคุณ เบราว์เซอร์ของผู้ใช้จะขอไอคอน Fav (!) หนึ่งรายการขึ้นไป (ขนาดต่างกัน) หากไม่มีไฟล์คงที่เหล่านี้ แอปพลิเคชันของคุณจะเริ่มสร้างการตอบกลับ 404 และหน้า 404 สำหรับแต่ละไฟล์ สิ่งนี้ทำให้เปลืองพลังงานเซิร์ฟเวอร์ไปมากและไม่มีประโยชน์ด้วย ดังนั้น ตรวจสอบให้แน่ใจว่าคุณมีไอคอน Fav หรือจัดการสิ่งนี้จากระดับ Apache/nginx อยู่เสมอ
ขนาดใหญ่พยายามจัดการสิ่งนี้โดยการส่งภาพว่างในส่วนหัวของ view/_templates/header.php !
ข้อมูลเพิ่มเติมภายในตั๋วนี้: ส่งคืน 404 ที่เหมาะสมสำหรับ favicon.ico ที่หายไป รูปภาพที่หายไป ฯลฯ
เพิ่มเติมที่นี่เกี่ยวกับ Stackflow: จะป้องกันคำขอ favicon.ico ได้อย่างไร ไม่ใช่เรื่องโง่ที่ favicon เล็ก ๆ ต้องการคำขอ HTTP อื่นหรือไม่ จะทำให้ favicon กลายเป็นสไปรท์ได้อย่างไร?.
ฉันยังเขียนบล็อกที่ Dev Metal