รายการสมาชิกชายเสมอ php g. ใช้ ob_start ในขณะที่สนับสนุนโครงการ php
สวัสดี Habr!
วันนี้ฉันอยากจะแนะนำผู้ดูแลเว็บมือใหม่ให้รู้จักวิธีการอันหลากหลายในการใช้บัฟเฟอร์เอาต์พุตใน php เว็บมาสเตอร์ที่มีประสบการณ์เพื่อตัวเองที่นี่ vryat ค้นหาสิ่งที่มีประโยชน์ แม้ว่า - ใครจะไปรู้
ดังที่คุณทราบการบัฟเฟอร์เอาต์พุตใน php จะถูกควบคุมโดยชุดของฟังก์ชันที่ขึ้นต้นด้วย "ob_" สิ่งสำคัญที่สุดคือ ob_start เมื่อเริ่มต้นมันจะรวบรวมผลลัพธ์ที่ตามมาคือการพิมพ์ทุกชนิด () echo และอื่น ๆ ซึ่งจะมอบให้กับผู้เข้าชมในรูปแบบของหน้า html และถ้าก่อนที่จะเริ่มแสดงเราเริ่มบัฟเฟอร์แล้วด้วยหน้านี้ซึ่งเกือบจะพร้อมแล้วเราก็สามารถสร้างบางสิ่งได้ในที่สุด
ตัวอย่างเช่นเราต้องการกรองลิงก์ทั้งหมดไปยังเว็บไซต์บุคคลที่สาม
ที่ฟอรัมของเราโบราณเป็นขวานแห่งออสตราเลพิเทคัสฝูงสแปมจำนวนมากที่ล่อลวงผู้มาเยี่ยมชมสถานที่ที่เต็มไปด้วยการมึนเมา คุณสามารถใช้ js ด้วยการติดตาม แต่เราต้องการเปลี่ยนลิงก์ทั้งหมดเหล่านี้แทนเช่นนี้:
"http://blackjack-hookers.com" \u003d\u003e "http://myoldforum.ru/redirect.php?url\u003dblackjack-hookers.com"
วิธีการอาจไม่ได้ผลที่สุด แต่มีประสิทธิภาพ เราเขียน redirect.php พร้อมตัวกรองและแผ่นสีดำและตอนนี้เราจำเป็นต้องแปลงลิงก์ทั้งหมดในหน้าเว็บฟอรัมนับพันหน้า ด้วย ob_start และการแสดงออกปกติสองสามครั้งเราจะทำสิ่งนี้ในสองสามบรรทัด:
ฟังก์ชัน f_callback ($ buffer) ($ buffer \u003d preg_replace ("#http: // (www.)? Myoldforum \\ .ru / #", "/", $ buffer); $ buffer \u003d preg_replace ("# href \u003d" http : // ([^ "] *)" # "," # href \u003d "/redirect\\.php\\?url\u003d$1", $ buffer); ส่งกลับ $ buffer;) ob_start (f_callback);
ตอนนี้ด้วยการเชื่อมต่อรหัสนี้ที่จุดเริ่มต้นของ index.php หรือไฟล์อื่นที่เซิร์ฟเวอร์เข้าถึงเมื่อเรียกดูเราได้สิ่งที่เราต้องการ
ด้วยการเปลี่ยนแปลงเนื้อหาในลักษณะนี้เราไม่ได้ จำกัด กรอบของวิธีการของเครื่องยนต์ สิ่งนี้มีค่ามาก ตัวอย่างเช่นคุณสามารถเพิ่มปลั๊กอิน:
ฟังก์ชั่น generate_plugin () (/ * สร้างบางอย่าง * /) ฟังก์ชั่น f_callback ($ buffer) (/*...*/ $ buffer \u003d str_replace ("", generate_plugin (), $ buffer); /*...*/ ส่งกลับ $ buffer;) ob_start (" f_callback ");
ตอนนี้ที่ที่เราเพิ่มเข้าไปในเนื้อหาจะปรากฏสิ่งที่เราต้องการรับ การใช้งานครั้งเดียวคือการแทรกวิดเจ็ต js บนหน้าเว็บไซต์ ตัวอย่างเช่นการ์ด Yandex โดยปกติแล้วนี่ไม่ใช่เรื่องยาก แต่บางครั้งเครื่องมือแก้ไขหน้าที่เขียนโดยเว็บไซต์ที่มีการเขียนแบบคดเคี้ยวจะหลีกเลี่ยงคำพูดและวงเล็บปีกกา อย่างที่คุณเห็นปัญหานี้แก้ไขได้ง่าย
ชุดเครื่องมือ php สำหรับการทำงานกับบัฟเฟอร์เอาต์พุตนั้นสมบูรณ์และไม่ จำกัด เพียงแค่ ob_start วิธีการข้างต้นในบางกรณีเป็นการใช้ทรัพยากรที่ไม่จำเป็นและยุ่งยากเนื่องจากพวกเขาดำเนินการทั้งหน้า เราสามารถดำเนินการบางส่วนได้โดยสร้างเสื้อคลุมในเทมเพลตรอบ ๆ สิ่งที่เราไม่ต้องการปีนป่า แต่เราต้องแก้ไข:
ob_start(); ?> (สร้างสิ่งที่บ้าใหญ่) f_callback(ob_get_clean); ?>
คุณต้องสังเกตุเห็นถึงสิ่งเหล่านี้ทั้งหมด: "ฉันไม่ต้องการปีนขึ้นไป", "เก่าเท่าเก้าอี้ไทรันโนซอรัส", "บรรณาธิการเขียนคดเคี้ยว" ... ในโลกอุดมคติไม่ต้องใช้เปลือกหอยรอบบัฟเฟอร์ส่งออก สิ่งที่สามารถทำได้ด้วย ob_start สามารถทำได้ในทางทฤษฎีหากไม่มีมัน เทคนิคนี้บางครั้งทำให้เกิดความสับสนในรหัสโครงการหลายคนเห็นความหมายเฉพาะในการให้ผลลัพธ์กับ ob_gzhandler สำหรับการบีบอัดและพิจารณาการใช้งานในกรณีอื่น ๆ ที่เป็นอันตราย แต่บ่อยครั้งที่การจัดการผลผลิตไม่เพียงพอ
โดยเฉพาะถ้าคุณไม่ต้องการขุดลึกลงไป
ตามที่ฉันเข้าใจไซต์จะถูกสร้างขึ้นโดยไม่ใช้เฟรมเวิร์กหรือไม่ จากนั้นนักพัฒนาที่คุ้นเคยหูของฉันทั้งหมดก็ส่งเสียงพึมพำว่าฉันจำเป็นต้องเรียนรู้กรอบ Yii
2) ฉันแค่อยากถาม .. ตัวอย่างของการสร้างร้านค้าออนไลน์ที่พิจารณาในหลักสูตรมันเป็นวิชาการมากกว่าหรือไม่ โครงการเชิงพาณิชย์จริงอาจถูกสร้างขึ้นโดยใช้เฟรมเวิร์กเป็น สิ่งนี้ช่วยปรับกระบวนการพัฒนาให้เหมาะสมอย่างมากผ่านการใช้แม่แบบรหัสมาตรฐาน คำตอบสำหรับคำถามนี้จะช่วยชี้แจงสิ่งที่เกิดขึ้น ... เริ่ม PHP | การฝึกฝนยังคงคุ้มค่าที่ต้องทำเพื่อที่จะเข้าใจตรรกะทั่วไปหรือไม่?
คำตอบคือ:
1) สิ่งที่คุ้นเคยนั้นถูกต้องฉันก็คิดเช่นนั้น แต่กรอบใด ๆ ที่ต้องการการฝึกอบรมเช่นความรู้ เมื่อฉันสร้างระบบ MVC ในทางปฏิบัติฉันพยายามทำตามวิธีการที่ใช้ในกรอบงาน เนื่องจาก PHP Start (ทฤษฎีและการปฏิบัติ) จะช่วยเตรียมการหลังจากนั้นคุณสามารถเริ่มเรียนรู้ yii2 (หรือสิ่งที่คล้ายกัน) ได้อย่างปลอดภัย
ที่อยู่ที่เก็บโครงการ:
คำถาม # 1:
ฉันไม่สามารถกำจัดข้อผิดพลาด:
ประกาศ: การใช้ค่าคงที่ไม่ได้กำหนด _FILE_ - สันนิษฐานว่า "_FILE_" ใน /Users/Elios/Sites/Test/index.php ในบรรทัดที่ 10
บอกฉันว่ามันเป็นอะไร
คำตอบคือ:
ก่อนและหลัง ไฟล์ ต้องเขียน 2 ตัวอักษร _
__FILE__ เป็นของค่าคงที่ "magic" ของ PHP รายละเอียดเพิ่มเติมที่นี่
ดูสมาชิกทั้งหมด
หากคุณมีสิทธิ์ที่เหมาะสมคุณจะสามารถดู สมาชิก รายการในหรือใน การคลิกที่ลิงค์ใดลิงค์หนึ่งเหล่านี้จะนำคุณไปสู่ ดูสมาชิกทั้งหมด หน้าหน้าเริ่มต้นสำหรับ รายชื่อสมาชิก ส่วน นอกจากนี้ยังมี หน้าในส่วนนี้ซึ่งคุณสามารถค้นหาสมาชิกที่ลงทะเบียนในฟอรัม
เมื่อวันที่ ดูสมาชิกทั้งหมด คุณจะเห็นรายชื่อสมาชิกทั้งหมดที่ลงทะเบียนในฟอรัม หน้าจะถูกใช้เพื่อให้มีสมาชิกไม่มากเกินไปที่ระบุไว้ในหน้าเดียว เมื่อมีมากกว่าหนึ่งหน้าสามารถเลือกหน้าเพิ่มเติมได้จากที่นี่ ที่ด้านขวาของแถบชื่อเรื่อง "รายชื่อสมาชิก" ตัวอักษรภาษาอังกฤษทุกตัวจะปรากฏขึ้น ตัวอักษรเหล่านี้ใช้เพื่อข้ามไปยังชื่อผู้ใช้ของสมาชิกที่ลงทะเบียนซึ่งเริ่มต้นด้วยตัวอักษรนั้นเพื่อที่คุณจะได้ไม่ต้องเลื่อนผ่านหน้าต่างๆเพื่อค้นหา นี่จะไม่กรองชื่อผู้ใช้ทั้งหมดที่เริ่มต้นด้วยตัวอักษรที่แตกต่างกัน แต่ทำหน้าที่เป็นจุดยึดดังนั้นคุณจะถูกนำไปยังชื่อผู้ใช้ที่ขึ้นต้นด้วยตัวอักษรที่เลือก
ชื่อผู้ใช้ทั้งหมดในรายการสมาชิกสามารถสั่งซื้อได้โดย: สถานะ (ออนไลน์ / ออฟไลน์), ชื่อผู้ใช้, อีเมล, เว็บไซต์, ICQ, AIM, YIM, MSN, ตำแหน่ง, วันที่ลงทะเบียนและโพสต์ ส่วนหัวของคอลัมน์เหล่านี้คือลิงก์ที่สามารถใช้ในการเรียงลำดับรายการตามลำดับจากน้อยไปมากหรือจากมากไปน้อยหรือเพื่อเรียงลำดับกลับกันของคอลัมน์ภายใต้หัวเรื่องที่ใช้เพื่อเรียงลำดับรายการในปัจจุบัน
ค้นหาสมาชิก
ส่วนนี้ช่วยให้คุณค้นหาสมาชิกแบบง่าย ๆ หรือเลือกกรองผลลัพธ์โดยใช้พารามิเตอร์เพิ่มเติม คุณสามารถค้นหาสมาชิกตามชื่อผู้ใช้ที่อยู่อีเมลชื่อเล่นผู้ส่งสารเว็บไซต์หรือตำแหน่ง
ผลลัพธ์การค้นหาจะแสดงรายการที่ตรงกันสำหรับคำที่คุณป้อนในช่องค้นหา หากเลือกพารามิเตอร์การค้นหาใด ๆ เพิ่มเติมผลลัพธ์จะถูกกรองตามด้วย การค้นหาไม่เพียงค้นหาการจับคู่แบบตรงทั้งหมดเท่านั้น แต่ยังค้นหาส่วนใด ๆ ของข้อความที่ตรงกับคำค้นหา ด้วยเหตุผลนี้หากข้อความค้นหาแสดงเพียงบางส่วนของคำที่คุณกำลังค้นหาผลลัพธ์อาจแสดงผลลัพธ์ที่ตรงกันมากกว่าที่คาดไว้
พารามิเตอร์การค้นหาเพิ่มเติมบางส่วนเกี่ยวข้องกับข้อมูลที่ผู้ใช้สามารถเลือกที่จะไม่รวมไว้ในโปรไฟล์ของพวกเขา (ชื่อเล่นผู้ส่งสารเว็บไซต์) หรือพวกเขาสามารถเลือกที่จะไม่เปิดเผยต่อสาธารณะ (อีเมล) ดังนั้นการใช้พารามิเตอร์เหล่านี้อาจไม่นำมา ผลลัพธ์ที่คุณต้องการ ผลลัพธ์ของการค้นหาจะแม่นยำยิ่งกว่าตัวอักษร / คำที่ใช้ในการค้นหามากขึ้น