Baba inurl ลงนามสมุดเยี่ยม asp. ค้นหาผู้ให้บริการข้อมูลเพิ่มเติมเพื่อขอความช่วยเหลือ
การค้นหาปัญหาในแหล่งข้อมูลบนเว็บเริ่มต้นด้วยการลาดตระเวนและรวบรวมข้อมูล
การลาดตระเวนอาจเป็นได้ทั้งแบบแอคทีฟ - กำลังดุร้ายของไฟล์และไดเร็กทอรีของไซต์, การเปิดตัวสแกนเนอร์ความปลอดภัย, การตรวจสอบไซต์ด้วยตนเอง, หรือแบบพาสซีฟ - การค้นหาข้อมูลจากระบบการค้นหาต่างๆ บางครั้งมันเกิดขึ้นที่การรั่วไหลนั้นมองเห็นได้แม้กระทั่งก่อนที่จะเปิดหน้าแรกของไซต์เสียอีก
เป็นไปได้อย่างไร?
โรบ็อตการค้นหาซึ่งท่องอินเทอร์เน็ตอย่างต่อเนื่อง นอกเหนือจากข้อมูลที่เกี่ยวข้องกับแหล่งข้อมูลหลัก มักจะตรวจจับผู้ที่อาจกลายเป็นอาชญากรที่เป็นอันตรายเมื่อโจมตีทรัพยากรบนเว็บ ตัวอย่างเช่น การคอมไพล์สคริปต์และไฟล์ที่มีข้อมูลที่ละเอียดอ่อน (เริ่มจากไฟล์บันทึกการกำหนดค่า ลงท้ายด้วยไฟล์ที่มีข้อมูลการตรวจสอบสิทธิ์และการสำรองฐานข้อมูล)
จากรูปลักษณ์ของเสิร์ชโรบ็อต ข้อความเกี่ยวกับการค้นหาและการสืบค้น SQL ถือเป็นข้อความสำคัญที่ไม่เหมาะสม เช่น ในคำอธิบายสินค้าบนเว็บไซต์ หากโรบ็อตการค้นหาแบบสุ่มสะดุดกับไฟล์ที่มีนามสกุล .sql ซึ่งพบในโฟลเดอร์การทำงานของไซต์ มันจะได้รับการยอมรับว่าเป็นส่วนหนึ่งของไซต์และจะถูกจัดทำดัชนี (รวมถึงรหัสผ่านที่ระบุด้วย)
ข้อมูลดังกล่าวสามารถพบได้โดยการรู้คำสำคัญ ซึ่งมักจะเป็นคำสำคัญที่ไม่ซ้ำใคร ซึ่งช่วยเสริมความแข็งแกร่งให้กับ “ด้านที่หก” จากด้านข้าง เพื่อไม่ให้ป้องกันการหก
ฐานข้อมูลขนาดใหญ่ของข้อความค้นหาพิเศษจากคำหลัก (เรียกว่า "dorks") ตั้งอยู่บน Exploit-db.com และเผยแพร่ภายใต้ชื่อ Google Hack Database
ทำไมต้อง Google?
ประตูมุ่งเน้นไปที่ Google เป็นหลักด้วยเหตุผลสองประการ:
- ไวยากรณ์ที่กระชับที่สุดของคำหลัก (แสดงในตารางที่ 1) และอักขระพิเศษ (แสดงในตารางที่ 2)
− ดัชนีของ Google ยังคงต่ำกว่าดัชนีการค้นหาอื่นๆ
ตารางที่ 1 – คำหลักหลักของ Google
คำสำคัญ |
เซนส์ |
ก้น |
เว็บไซต์ |
เพียงค้นหาบนเว็บไซต์ที่ระบุ Vrahova ไม่มี URL |
site:somesite.ru - ค้นหาหน้าทั้งหมดสำหรับโดเมนและโดเมนย่อยนี้ |
ใส่ URL |
ค้นหาคำที่มีอยู่ใน uri ฝั่งแอดมินหน้าเซลล์ครับ คำว่า "ไซต์" ค้นหาผลลัพธ์หลังชื่อไซต์ |
inurl:news - ค้นหาเรื่องราวทั้งหมดเพื่อรวมคำนั้นไว้ใน URI |
ข้อความ |
ค้นหาในหน้านี้ |
intext: "traffic jams" - คล้ายกับวลีเริ่มต้น "traffic jams" |
ชื่อ |
ค้นหาชื่อเรื่องของหน้า ข้อความ ตำแหน่งระหว่างแท็ก |
intitle:"index of" - ค้นหาหน้าทั้งหมดที่มีรายการไดเร็กทอรี |
ต่อ |
ค้นหาหน้าจากส่วนขยายที่กำหนด |
ext:pdf - ค้นหาไฟล์ PDF ทั้งหมด |
ประเภทไฟล์ |
ในเวลานี้ฉันจะทำซ้ำเช่นเดียวกับ cl คำว่า "ต่อ" |
ประเภทไฟล์:pdf - คล้ายกัน |
ที่เกี่ยวข้อง |
ค้นหาไซต์ที่มีหัวข้อคล้ายกัน |
ที่เกี่ยวข้อง:google.ru - แสดงแอนะล็อกของคุณ |
ลิงค์ |
มองหาไซต์ที่พยายามค้นหาเดนมาร์ก |
link:somesite.ru - ค้นหาเว็บไซต์ทั้งหมดที่ส่งไปยังเดนมาร์ก |
กำหนด |
แสดงความหมายของคำ |
กำหนด:0day - ความหมายของคำ |
แคช |
แสดงแทนหน้าในแคช (กล่อง є) |
cache:google.com - เปิดหน้าแคช |
ตารางที่ 2 – อักขระพิเศษสำหรับข้อความค้นหาของ Google
เครื่องหมาย |
เซนส์ |
ก้น |
“ |
วลีที่แน่นอน |
intitle:“หน้าการกำหนดค่าเราเตอร์ RouterOS” - ค้นหาเราเตอร์ |
* |
ไม่ว่าจะเป็นข้อความอะไรก็ตาม |
inurl: “bitrix*mcart” - ค้นหาไซต์บน bitrix ด้วยปลั๊กอิน mcart |
. |
เป็นสัญลักษณ์อะไร |
Index.of - คล้ายกับดัชนีของ |
- |
หมดคำพูด |
error -warning - แสดงทุกหน้า รวมถึง error มิฉะนั้นจะไม่มีการเตือน |
.. |
พิสัย |
cve 2006..2016 - แสดงผลที่ตามมาจากหินที่เริ่มตั้งแต่ปี 2549 |
| |
มันสมเหตุสมผลมากกว่า "หรือ" |
ลินุกซ์ | windows - แสดงหน้าด้านข้างโดยที่คำแรกหรือคำอื่นถูกทำให้คมขึ้น |
Varto เข้าใจว่าอะไรก็ตามที่อยู่ในระบบเรื่องตลก - ไม่มีเรื่องตลกอยู่เบื้องหลังคำพูด
มองหาสัญลักษณ์เมตาบนหน้าอย่างระมัดระวัง (เท้า คันธนู เครื่องหมายวรรคตอน ฯลฯ) ค้นหาวลีที่ตรงกันทุกประการที่เขียนอยู่ในอุ้งเท้า - ค้นหาคำ จากนั้นค้นหาวลีที่ตรงกันทุกประการในผลลัพธ์
เส้นทางทั้งหมดของ Google Hack Database ถูกแบ่งออกเป็น 14 หมวดหมู่ตามตรรกะและนำเสนอในตารางที่ 3
ตารางที่ 3 – หมวดหมู่ฐานข้อมูล Google Hack
หมวดหมู่ |
อะไรทำให้คุณรู้. |
ก้น |
ที่วางเท้า |
Web Shells ตัวจัดการไฟล์สาธารณะ |
ค้นหาไซต์ที่เป็นอันตรายทั้งหมดที่มี webshell แบบ overthe-top: (intitle:"phpshell" หรือ intitle:"c99shell" หรือ intitle:"r57shell" หรือ intitle:"PHP Shell" หรือ intitle:"phpRemoteView") `rwx` "uname" |
ไฟล์ที่มีชื่อผู้ใช้ |
ไฟล์รีจิสตรี ไฟล์การกำหนดค่า บันทึก ไฟล์สำหรับบันทึกประวัติคำสั่งที่ป้อน |
ค้นหาไฟล์รีจิสตรีทั้งหมดที่มีข้อมูลเกี่ยวกับบันทึกบนคลาวด์: ประเภทไฟล์:reg reg +intext:“ผู้จัดการบัญชีอินเทอร์เน็ต” |
ไดเรกทอรีที่ละเอียดอ่อน |
แค็ตตาล็อกที่มีข้อมูลต่างๆ (เอกสารเฉพาะ การกำหนดค่า VPN รายการพื้นที่เก็บข้อมูล ฯลฯ) |
ค้นหารายชื่อไดเรกทอรีทั้งหมดที่มีไฟล์ที่เชื่อมต่อกับ VPN: "Config" intitle: "ดัชนีของ" intext: vpn ไซต์ที่รองรับที่เก็บ git: (ข้อความ: "ดัชนีของ /.git") ("ไดเรกทอรีหลัก") |
การตรวจจับเซิร์ฟเวอร์เว็บ |
เวอร์ชันและข้อมูลอื่น ๆ เกี่ยวกับเว็บเซิร์ฟเวอร์ |
ค้นหาคอนโซลการดูแลระบบของเซิร์ฟเวอร์ JBoss: inurl:"/web-console/" intitle:"คอนโซลผู้ดูแลระบบ" |
ไฟล์ที่มีช่องโหว่ |
สคริปต์เพื่อแก้แค้นการรั่วไหล |
ค้นหาไซต์ที่เรียกใช้สคริปต์ที่อนุญาตให้คุณดาวน์โหลดไฟล์เพิ่มเติมจากเซิร์ฟเวอร์: allinurl:forcedownload.php?file= |
เซิร์ฟเวอร์ที่มีช่องโหว่ |
สคริปต์การติดตั้ง, เว็บเชลล์, คอนโซลการดูแลระบบแบบเปิด ฯลฯ |
ค้นหาคอนโซล PHPMyAdmin ที่เปิดอยู่ซึ่งทำงานเป็นรูท: intitle:phpMyAdmin "ยินดีต้อนรับสู่ phpMyAdmin ***" "ทำงานบน * ในชื่อ root@*" |
ข้อความแสดงข้อผิดพลาด |
การสังหารหมู่และความก้าวหน้าที่มักเปิดเผยข้อมูลสำคัญ - ตั้งแต่เวอร์ชัน CMS ไปจนถึงรหัสผ่าน |
ไซต์ที่สามารถช่วยคุณในการสืบค้น SQL ไปยังฐาน: "คำเตือน: mysql_query()" "แบบสอบถามไม่ถูกต้อง" |
ไฟล์ที่มีข้อมูลที่น่าสนใจ |
ใบรับรอง การสำรองข้อมูล เอกสารอิเล็กทรอนิกส์ บันทึก สคริปต์ SQL ฯลฯ |
ค้นหาสคริปต์ sql การเริ่มต้น: ประเภทไฟล์:sql และ “แทรกลงใน” -site:github.com |
ไฟล์ที่มีรหัสผ่าน |
สิ่งใดก็ตามที่สามารถแทนที่รหัสผ่านได้ - บันทึก, สคริปต์ SQL ฯลฯ |
บันทึกการเดารหัสผ่าน: ประเภทไฟล์:บันทึกข้อความ:รหัสผ่าน |ผ่าน |ปว สคริปต์ sql เพื่อกู้คืนรหัสผ่าน: ต่อ:ฐานข้อมูล SQLข้อความ:ชื่อผู้ใช้ข้อความ:รหัสผ่าน |
ข้อมูลการช็อปปิ้งออนไลน์ที่ละเอียดอ่อน |
ข้อมูลที่เกี่ยวข้องกับการซื้อออนไลน์ |
ค้นหารหัสพิน: ดีไซด=พันล้าน=เข็มหมุดรหัส= |
ข้อมูลเครือข่ายหรือช่องโหว่ |
ข้อมูลที่ไม่ได้ถ่ายโอนโดยตรงไปยังทรัพยากรบนเว็บ แต่มีข้อจำกัดหรือบริการอื่นๆ ที่ไม่ใช่บนเว็บ |
ค้นหาสคริปต์สำหรับการตั้งค่าพร็อกซีอัตโนมัติเพื่อจัดเก็บข้อมูลเกี่ยวกับเครือข่ายภายใน: inurl:พร็อกซี | inurl:wpad ต่อ:pac | ต่อ: dat findproxyforurl |
หน้าที่มีพอร์ทัลเข้าสู่ระบบ |
Storinki จะทำอย่างไรกับแบบฟอร์มเข้าสู่ระบบ |
หน้าเว็บ Saplogon: ข้อความ:"2016 SAP AG. สงวนลิขสิทธิ์." ชื่อเรื่อง:"เข้าสู่ระบบ" |
อุปกรณ์ออนไลน์ต่างๆ |
เครื่องพิมพ์ เราเตอร์ ระบบตรวจสอบ ฯลฯ |
ค้นหาแผงการกำหนดค่าเครื่องพิมพ์: ชื่อ:"แรงม้าเลเซอร์เจ็ท"ใส่ URL:เอสเอสไอ/รับรองความถูกต้อง/ชุด_กำหนดค่า_ข้อมูลอุปกรณ์.htm |
คำแนะนำและช่องโหว่ |
เว็บไซต์บน CMS เวอร์ชันต่างๆ |
ค้นหาปลั๊กอินที่คุณสามารถอัปโหลดไฟล์ขนาดใหญ่ไปยังเซิร์ฟเวอร์ได้: inurl:fckeditor -intext: "ConfigIsEnabled = False" intext: ConfigIsEnabled |
ประตูมักเน้นการค้นหาในเว็บไซต์อินเทอร์เน็ตทั้งหมด แต่การจำกัดพื้นที่การค้นหาบนเว็บไซต์หรือเว็บไซต์ใดๆ ก็ไม่สำคัญเลย
คุณสามารถค้นหา Google ได้โดยการเพิ่มคำหลัก "site:somesite.com" ลงในไซต์การค้นหาของคุณ สามารถเพิ่มคำสำคัญไปที่ประตูได้
ระบบอัตโนมัติของการตรวจจับการรั่วไหล
ดังนั้นแนวคิดนี้จึงเกิดขึ้นเพื่อเขียนยูทิลิตี้ง่ายๆ ที่ทำให้การค้นหาการลงทุนโดยอัตโนมัติโดยใช้ระบบค้นหา (google) และอิงตามฐานข้อมูล Google Hack
ยูทิลิตี้นี้เป็นสคริปต์ที่เขียนใน nodejs โดยใช้ phantomjs พูดให้ถูกก็คือ สคริปต์ถูกตีความโดยตัว Phantom นั่นเอง
Phantomjs เป็นเว็บเบราว์เซอร์เต็มรูปแบบที่ไม่มีอินเทอร์เฟซแบบกราฟิกที่ต้องอาศัยโค้ด js เพิ่มเติมและ API แบบแมนนวล
ยูทิลิตี้นี้ได้รับชื่อที่ชัดเจนอย่างสมบูรณ์ - dorks เมื่อเปิดใช้งานในบรรทัดคำสั่ง (ไม่มีตัวเลือก) คุณจะได้รับข้อมูลสรุปสั้น ๆ พร้อมก้น vikoristan จำนวนหนึ่ง:
Malyunok 1 - รายการตัวเลือกหลักๆ
ไวยากรณ์ดั้งเดิมของยูทิลิตี้คือ: รายการตัวเลือกคำสั่ง dork
คำอธิบายโดยละเอียดของตัวเลือกทั้งหมดแสดงไว้ในตารางที่ 4
ตารางที่ 4 - ไวยากรณ์ Dorks
ทีม |
ตัวเลือก |
คำอธิบาย |
ghdb |
-ล |
ป้อนรายการหมวดหมู่หมายเลขของฐานข้อมูลแฮ็ก Google ของ dorks |
-c “หมายเลขหรือชื่อหมวดหมู่” |
ป้อนแทร็กของหมวดหมู่ที่ระบุตามหมายเลขและชื่อ |
|
-q "วลี" |
เกลี้ยกล่อมพวกหมูที่พบขณะถาม |
|
-o "ไฟล์" |
บันทึกผลลัพธ์ลงในไฟล์ (พร้อมกันเท่านั้นด้วยตัวเลือก -c|-q) |
|
Google |
-d "ดอก" |
ระบุลำดับที่เพียงพอ (ตัวเลือกสามารถใช้ได้หลายครั้งสามารถใช้ร่วมกับตัวเลือก -D ได้) |
-D "ไฟล์" |
Vikorize แทร็กจากไฟล์ |
|
-s "ไซต์" |
เข้าสู่เว็บไซต์ (ตัวเลือกสามารถใช้ได้หลายครั้งสามารถใช้กับตัวเลือก -S ได้) |
|
-S "ไฟล์" |
ไซต์ Vikoristovat จากไฟล์ (การเรียงลำดับตามแทร็กจะถูกค้นหาสำหรับแต่ละไซต์โดยแยกจากกัน) |
|
-f "ตัวกรอง" |
ระบุคีย์เวิร์ดเพิ่มเติม (จะถูกเพิ่มลงในสกิน) |
|
-t "จำนวนมิลลิวินาที" |
ช่วงเวลาระหว่างข้อความค้นหากับ Google |
|
-T “จำนวนมิลลิวินาที” |
หมดเวลาเนื่องจากแคปต์ชาล้มเหลว |
|
-o "ไฟล์" |
บันทึกผลลัพธ์ลงในไฟล์ (เฉพาะไฟล์ที่พบเท่านั้นที่จะถูกบันทึก) |
ด้วยความช่วยเหลือของคำสั่ง ghdb คุณสามารถลบประตูทั้งหมดออกจาก Exploit-DB ด้วยคำสั่งเพิ่มเติมหรือป้อนหมวดหมู่ทั้งหมด หากคุณป้อนหมวดหมู่ 0 ฐานข้อมูลทั้งหมดจะถูกทำลาย (ประมาณ 4.5 พันดอลลาร์)
รายการหมวดหมู่การนำเสนอที่มีอยู่ในปัจจุบันของ Baby 2
Malyunok 2 - รายการหมวดหมู่ที่มีอยู่ของ dorks GHDB
ทีมงาน Google จะแทรกแท็กสกินลงในเครื่องมือค้นหาของ Google และวิเคราะห์ผลลัพธ์ที่ได้รับ เอกสารที่พบจะถูกบันทึกไว้ในไฟล์
ยูทิลิตี้นี้รองรับโหมดการค้นหาที่แตกต่างกัน:
1 ดอกและ 1 ไซต์;
1 ดอกและไซต์มากมาย
1 ไซต์และ dorks มากมาย
มีไซต์มากมายและมีดอร์กมากมาย
รายชื่อแทร็กและไซต์สามารถระบุได้ผ่านทางอาร์กิวเมนต์หรือผ่านไฟล์
การสาธิตหุ่นยนต์
ลองมองหารอยหกที่ก้นแล้วลองค้นหาวิธีแก้ไข สำหรับคำสั่ง: dorks ghdb –c 7 –o error.dorks จะถูกดึงดูดไปยัง dorks ทั้งหมดในหมวด “ข้อความแสดงข้อผิดพลาด” ดังที่แสดงในข้อ 3 เล็กๆ น้อยๆ
รูปที่ 3 – รายการประตูที่มองเห็นได้ทั้งหมดในหมวดหมู่ "ข้อความแสดงข้อผิดพลาด"
ประตูจะถูกเก็บรักษาและบันทึกไว้ในไฟล์ ตอนนี้คุณไม่สามารถ "สัมผัส" พวกเขาไปยังไซต์ใด ๆ อีกต่อไป (div. รูปที่ 4)
รูปที่ 4 – ค้นหาเนื้อหาเว็บไซต์ที่ขัดแย้งกันในแคชของ Google
หลังจากผ่านไปประมาณหนึ่งชั่วโมง หน้าจำนวนหนึ่งจะปรากฏบนไซต์ที่คุณกำลังติดตาม ซึ่งคุณสามารถค้นหาข้อมูลได้ (div. รูปที่ 5)
รูปที่ 5 – การแจ้งเตือนที่ทราบเกี่ยวกับการแก้ไข
ในไฟล์ result.txt คุณสามารถเลือกรายการแทร็กใหม่ที่จะเล่นก่อนที่ข้อขัดข้องจะปรากฏขึ้น
Baby 6 ตกเป็นเป้าหมายอันเป็นผลมาจากการค้นหาการแก้ไขบนเว็บไซต์
มัลยูนก 6 – ผลการสืบค้นการอภัยโทษ
แคชสำหรับเส้นทางนี้จะแสดง backtrace ใหม่ ซึ่งจะแสดงเส้นทางสัมบูรณ์ของสคริปต์ ระบบเซิร์ฟเวอร์แทนไซต์ และประเภทของฐานข้อมูล (div. รูปที่ 7)
รูปที่ 7 – การเปิดเผยข้อมูลเกี่ยวกับการควบคุมไซต์
อย่างไรก็ตาม โปรดทราบว่าไม่ใช่ทุกแทร็กที่มี GHDB จะให้ผลลัพธ์ที่เหมือนกัน Google ยังสามารถค้นหาผลลัพธ์ที่ตรงกันและแสดงผลลัพธ์ที่คล้ายกันได้
จะเป็นการฉลาดกว่าถ้า vikorist รายชื่อ dorks ส่วนตัวของคุณ ตัวอย่างเช่น ก่อนอื่น ให้ค้นหาไฟล์ที่มีนามสกุล "ไม่ได้ตั้งใจ" แต่ไฟล์เหล่านั้นจะถูกนำมาไว้ที่ 8 เพียงเล็กน้อย
รูปที่ 8 – รายการนามสกุลไฟล์ที่ไม่ปกติสำหรับแหล่งข้อมูลบนเว็บดั้งเดิม
ด้วยเหตุนี้ การปฏิบัติตามคำสั่ง dorks google –D extensions.txt –f bank จากคำขอครั้งแรก Google จึงเริ่มแสดงไซต์ที่มีนามสกุลไฟล์ "ผิดปกติ" (ส่วนที่ 9)
รูปที่ 9 – ค้นหาประเภทไฟล์ที่ “ไม่ดี” บนเว็บไซต์ธนาคาร
คุณแม่ Varto เคารพที่ Google ไม่ยอมรับการถาม 32 คำ
หากต้องการความช่วยเหลือเพิ่มเติม ให้คำสั่ง dorks google –d intext:”error|warning|notice|syntax” –f university
คุณสามารถค้นหาข้อบกพร่องของล่าม PHP ได้บนเว็บไซต์ของหัวข้อพื้นฐาน (หมายเลข 10)
รูปที่ 10 – ค้นหาการอภัยโทษ PHP เป็นเวลาหนึ่งชั่วโมง
บางครั้งมันไม่ง่ายเลยที่จะลงทุนใน dorks หนึ่งหรือสองประเภท
ตัวอย่างเช่น เห็นได้ชัดว่าไซต์ทำงานบนเอ็นจิ้น Wordpress จากนั้นแทร็กที่ต้องการจะอยู่บน Wordpress เอง ผู้ชายแบบนี้สามารถค้นหาฐานข้อมูล Google Hack ได้อย่างง่ายดาย คำสั่ง dorks ghdb –q wordpress –o wordpress_dorks.txt เพื่อนำเข้า dorks ทั้งหมดบน Wordpress ดังแสดงในข้อ 11 เล็กๆ น้อยๆ:
รูปที่ 11 – ค้นหาแทร็กที่เหมาะกับ Wordpress
กลับไปที่ธนาคารอีกครั้งแล้วใช้คำสั่ง dorks google –D wordpress_dords.txt –f bank ลองค้นหาว่ามีอะไรเชื่อมต่อกับ wordpress (div. little 12)
รูปที่ 12 – ค้นหาข้อขัดแย้งของ Wordpress
Varto โปรดทราบว่าการค้นหาในฐานข้อมูล Google Hack ไม่ยอมรับคำที่สั้นกว่า 4 ตัวอักษร ตัวอย่างเช่น เว็บไซต์ไม่สามารถมองเห็น CMS ได้ แต่ภาษาคือ PHP ในกรณีนี้ คุณสามารถกรองความต้องการได้ด้วยตนเองโดยใช้ไปป์และยูทิลิตีระบบเพิ่มเติมโดยค้นหา dorks – c all | findstr /I php > php_dorks.txt (ส่วนที่ 13):
Malyunok 13 – ค้นหาทุกที่ ปริศนา PHP อยู่ที่ไหน
ค้นหาข้อขัดแย้งหรือข้อมูลที่ละเอียดอ่อนในระบบค้นหาหลังจากค้นหาเฉพาะไซต์ที่ไซต์ใดมีดัชนีที่สำคัญ ตัวอย่างเช่น หากไซต์มีการจัดทำดัชนีไว้ 10-15 หน้า ก็ไม่สมเหตุสมผลเลยที่จะสร้างเรื่องตลกแบบนี้ ตรวจสอบขนาดของดัชนีได้ง่าย เพียงป้อนคำค้นหาของ Google “site:somesite.com” ในแถว ตัวอย่างของไซต์ที่มีดัชนีไม่เพียงพอจะแสดงบน 14 เล็กๆ
รูปที่ 14 – การตรวจสอบขนาดดัชนีไซต์
ตอนนี้เกี่ยวกับสิ่งที่ไม่เหมาะสม... ในบางครั้ง Google อาจขอแคปต์ชาจากคุณ - ไม่มีอะไรให้ทำ - คุณจะต้องป้อนมัน ตัวอย่างเช่น เมื่อค้นหาในหมวดหมู่ "ข้อความแสดงข้อผิดพลาด" (90 หน้า) แคปช่าปรากฏขึ้นมากกว่าหนึ่งครั้ง
โปรดเพิ่มว่า phantomjs รองรับโรบ็อตทั้งผ่านพร็อกซี ผ่าน http และผ่านอินเทอร์เฟซถุงเท้า หากต้องการเปิดใช้งานโหมดพร็อกซี คุณต้องยกเลิกหมายเหตุบรรทัดย่อย dorks.bat หรือ dorks.sh
เครื่องมือนี้มีให้ใช้งานตามรหัสเอาต์พุต
เมื่อเร็วๆ นี้ ฉันได้ทำงานบนเว็บไซต์ของฉัน และตัดสินใจว่าฉันต้องการสร้างสมุดเยี่ยม ฉันต้องการเพิ่มการเข้าถึงเว็บไปยังสมุดเยี่ยมชมขนาดสั้นสำหรับเว็บไซต์ของฉัน ไม่เช่นนั้นมันจะไม่วุ่นวาย ฉันคิดว่า 'เฮ้ ฉันเป็นนักพัฒนา ทำไมไม่สร้างของตัวเองขึ้นมาล่ะ'
การสร้างสมุดเยี่ยมนั้นง่ายมาก - คุณก็ทำได้เช่นกัน ในบทช่วยสอนนี้ ฉันจะแสดงให้คุณเห็นว่าทำอย่างไร ฉันจะถือว่าคุณมีความรู้กว้างขวางเกี่ยวกับพื้นฐานของการเขียนโปรแกรม ASP.NET คุณรู้จักเทคโนโลยีที่รวมอยู่ในโค้ดเบื้องหลัง และคุณมีทักษะ XML/XSL
ภาพรวม
เราต้องการอะไรเพื่อสร้างสมุดเยี่ยม? ที่นี่คุณต้องมีแบบฟอร์มสองรูปแบบ: รูปแบบหนึ่งที่ลูกค้าสามารถป้อนชื่อ ที่อยู่อีเมล และความคิดเห็นของตนได้ และรูปแบบอื่น ๆ ที่คุณต้องใช้เพื่อสร้างข้อความเหล่านี้ตามที่ลงนามในสมุดเยี่ยมชม ในหลักสูตรนี้ เราสามารถสาธิตการทำงานนี้ได้ในรูปแบบเว็บเดียว แต่ด้วยโค้ดที่สะอาด ผมจะวิเคราะห์เว็บฟอร์มสองฟอร์มด้วยไฟล์โค้ดเบื้องหลังหลายไฟล์ (ผมจะพูดถึงรายละเอียดเหล่านี้โดยละเอียดในอีกสักครู่)
เรายังจำเป็นต้องมีฐานข้อมูลเพื่อเก็บข้อมูลที่ป้อนผ่านแบบฟอร์ม ฉันใช้ไฟล์ XML แบบธรรมดา (ฐานข้อมูล) เพื่อจัดเก็บข้อมูลที่ผู้ใช้ป้อน สำหรับการแสดงภาพ XML เราจะใช้ XSL
โดยสรุปเราต้องการสิ่งต่อไปนี้:
- เว็บฟอร์มสองแบบ
- รหัสอยู่ข้างหลัง
- ฐานข้อมูล
ในสมุดเยี่ยมชม โดยปกติแล้วการจัดเก็บชื่อผู้ใช้ สถานที่ ที่อยู่อีเมล ที่อยู่เว็บไซต์ และความคิดเห็นก็เพียงพอแล้ว จากการว่ายน้ำสามารถมองทุ่งนาได้มากขึ้นแต่สำหรับกิ่งก้านของเรากลิ่นถือว่ารับได้ เราจะเก็บข้อมูลนี้ไว้ในไฟล์ XML ซึ่งจะมีลักษณะดังนี้:
ฉันหวังว่าคุณจะชอบมัน. หากต้องการดูวิธีสร้างสมุดเยี่ยมของคุณ
อ่านเรื่องราวทั้งหมดบนเว็บไซต์
การลงนามในสมุดเยี่ยม
เราจะอนุญาตให้ผู้ใช้ 'ลงชื่อ' สมุดเยี่ยมของเราโดยการพิมพ์เพลงในรูปแบบเว็บง่ายๆ - ในตัวอย่างของเรา นี่คือไฟล์ guestbook.aspx ฉันใช้ฟิลด์ต่อไปนี้ในรูปแบบเว็บ:
- ที่ตั้ง
- อีเมล
- เว็บไซต์
- ความคิดเห็น
นี่คือรหัส:
<% @Page Language="C#" Debug="true" Src="Guestbook.cs"
สืบทอด = "สมุดเยี่ยม" %>
เพื่อหลีกเลี่ยงไม่ให้คุณสับสนกับโค้ดที่ไม่จำเป็น ฉันจะลบแท็กการแสดงภาพ — รวมถึงตาราง ส่วนหัวของตาราง ฯลฯ — นี่คือคำอธิบาย (เช่นเดียวกับในหลักสูตร ทุกอย่างจะรวมอยู่ในโค้ดที่ดาวน์โหลดได้ซึ่งให้ไว้ในตอนท้ายของบทช่วยสอนนี้) เนื่องจากเราสร้างแบบฟอร์มง่ายๆ เพียงไม่กี่ช่องและปุ่ม คุณจึงใช้โค้ดโปรแกรมใดก็ได้ในไฟล์นี้ ซึ่งหมายความว่าทุกสิ่งที่มีฟังก์ชันการทำงานสูงในโค้ด
ในแถวแรกที่มีโค้ดด้านบน ฉันจะตั้งค่าแอตทริบิวต์ SRC เป็นไฟล์ ASP.NET โดยรู้ว่าเรากำลังใช้ไฟล์ codebehind Guestbook.cs ฉันได้ตั้งค่าแอตทริบิวต์ Inherits ด้วยชื่อคลาสที่เกี่ยวข้องด้วย คุณลักษณะนี้ช่วยให้ไฟล์ทราบว่าจะสืบทอดคลาสใด
ต่อไป ฉันได้ติดตั้งช่องข้อความที่จำเป็นแล้ว โปรดทราบว่าหากคุณต้องการเปลี่ยนพารามิเตอร์เดียวกันใน codebehind คุณต้องตรวจสอบให้แน่ใจว่าไฟล์ทั้งหมดมี ID เดียวกัน และไฟล์เหล่านั้นจะถือเป็นสาธารณะ
สำหรับส่วนโค้ดปัจจุบัน ฉันใช้ตัวควบคุมการตรวจสอบความถูกต้องของ ASP.NET Tsi keruvannya ตรวจสอบว่าผู้ใช้ป้อนค่าในช่องข้อความหรือไม่ ฉันจะเปิดไปยังเซิร์ฟเวอร์โดยไม่หยุดชะงัก รหัสดำเนินการบนฝั่งไคลเอ็นต์
สวัสดี ฉันใช้ปุ่มส่งกับเหตุการณ์ onClick ชื่อ Save_Comment ซึ่งหมายความว่าคุณจะต้องบันทึกข้อมูลที่ป้อนลงในไฟล์ XML โดยได้รับความช่วยเหลือจากผู้ใช้ ฟังก์ชันนี้มีอยู่ใน Guestbook.cs ฉันยังใช้ปุ่มรีเซ็ตด้วย - แค่นั้นแหละ! ไม่ต้องทำอะไรเพิ่มเติมกับแบบฟอร์มบนเว็บ ตอนนี้คุณกำลังไปที่ guestbook.aspx คุณจะต้องรับผิดชอบแบบฟอร์มบนเว็บที่มีลักษณะดังนี้:
ตอนนี้เรารู้วิธีแสดงเว็บฟอร์มแล้ว แต่เราต้องรู้เกี่ยวกับสิ่งที่จัดการกิจกรรมใน guestbooks.cs ด้วย ลองมาดูกันตอนนี้
การใช้ระบบ;
ใช้ System.Web;
โดยใช้ System.Web.UI;
vikoristychi System.Xml;
สมุดเยี่ยมชมชั้นเรียนสาธารณะ: หน้า
{
// สร้าง webcontrols ที่จำเป็นด้วยชื่อเดียวกับ
ในไฟล์ guestbook.aspx
ชื่อกล่องข้อความสาธารณะ
ตำแหน่งกล่องข้อความสาธารณะ
อีเมลกล่องข้อความสาธารณะ
เว็บไซต์กล่องข้อความสาธารณะ
ความคิดเห็นกล่องข้อความสาธารณะ;
โมฆะสาธารณะ Save_Comment (ผู้ส่งวัตถุ EventArgs e)
{
// ทุกอย่างเรียบร้อยดี เรามาบันทึกข้อมูลกันดีกว่า
ลงในไฟล์ XML
SaveXMLData();
// ลบค่าของกล่องข้อความ
ชื่อ.ข้อความ = "";
location.ข้อความ = "";
เว็บไซต์ข้อความ = "";
อีเมลข้อความ = "";
ความคิดเห็นข้อความ = "";
}
}
โมฆะส่วนตัว SaveXMLData()
{
// โหลดไฟล์ xml
XmlDocument xmldoc = XmlDocument ใหม่();
xmldoc.Load(Server.MapPath("guestbook.xml"));
//สร้างองค์ประกอบแขกใหม่และเพิ่มลงในโหนดรูท
XmlElement parentNode = xmldoc.CreateElement("แขก");
xmldoc.DocumentElement.PrependChild (parentNode);
// สร้างโหนดที่ต้องการ
XmlElement nameNode = xmldoc.CreateElement("ชื่อ");
XmlElement locationNode = xmldoc.CreateElement("ตำแหน่ง");
XmlElement emailNode = xmldoc.CreateElement("อีเมล");
XmlElement เว็บไซต์ Node = xmldoc.CreateElement("เว็บไซต์");
XmlElement commentNode = xmldoc.CreateElement("ความคิดเห็น");
//ดึงข้อความ
XmlText nameText = xmldoc.CreateTextNode(name.Text);
XmlText locationText = xmldoc.CreateTextNode(location.Text);
XmlText emailText = xmldoc.CreateTextNode(email.Text);
เว็บไซต์ XmlTextText = xmldoc.CreateTextNode(เว็บไซต์.Text);
XmlText commentText = xmldoc.CreateTextNode (comment.Text);
// ผนวกโหนดเข้ากับ parentNode โดยไม่มีค่า
parentNode.AppendChild (nameNode);
parentNode.AppendChild (locationNode);
parentNode.AppendChild (อีเมลโหนด);
parentNode.AppendChild(โหนดเว็บไซต์);
parentNode.AppendChild (commentNode);
// ปกป้องค่าของไฟล์ในโหนด
nameNode.AppendChild(nameText);
locationNode.AppendChild (ข้อความที่ตั้ง);
emailNode.AppendChild (ข้อความอีเมล);
เว็บไซต์Node.AppendChild(ข้อความเว็บไซต์);
commentNode.AppendChild (ข้อความแสดงความคิดเห็น);
//บันทึกเป็นไฟล์ XML
xmldoc.Save(Server.MapPath("guestbook.xml"));
// แสดงสมุดเยี่ยมที่ลงนามให้ผู้ใช้เห็น
Response.Redirect("viewguestbook.aspx");
}
}
ว้าว! นั่นคือไฟล์ codebehind ของเรา... แต่จะเกิดอะไรขึ้นที่นี่จริงๆ ไม่เชื่อหรอก แต่คำตอบคือ “ไม่มาก”!
ประการแรกคือการใช้เนมสเปซที่จำเป็นขั้นต่ำที่เราต้องการเพื่อทำหน้าที่สำคัญหลายประการ จากนั้นฉันสร้างคลาสใหม่ชื่อ Guestbook:
สมุดเยี่ยมชมชั้นเรียนสาธารณะ: หน้าโปรดทราบว่าเป็นคลาสนี้ที่สืบทอดมาจากไฟล์ guestbook.aspx กล่องข้อความประเภทตัวแปรสาธารณะมี 5 รายการ โปรดจำไว้ว่าที่นี่ ชื่อจะต้องเหมือนกับชื่อที่เราใช้เมื่อเราสร้างกล่องข้อความใน guestbook.aspx อย่างที่คุณทราบได้ว่าจะมีเหตุการณ์ Save_Comment ที่ถูกเลือกโดยปุ่มส่ง ซึ่งจะรวมอยู่ในไฟล์ guestbookpx ซึ่งหมายความว่าคุณกำลังใช้ vikory เพื่อบันทึกข้อมูลของคุณ
กระบวนการออมทรัพย์
ฟังก์ชัน SaveXMLData() จะให้ข้อมูลแก่เรา ขณะที่เราใช้ฐานข้อมูล XML เพื่อดึงข้อมูล เราจะใช้คลาส XmlDocument , XmlElement และ XmlText เพื่อรวบรวมฟังก์ชันทั้งหมดที่จำเป็น
ต่อไป เราสร้างออบเจ็กต์คลาส XMLDocument ใหม่และโหลดไฟล์ guestbook.xml โหนดที่ต้องการจะถูกสร้างขึ้นด้วยฟังก์ชัน CreateElement และข้อมูลที่ป้อนใน User จะถูกดึงและจัดเก็บไว้ในวัตถุของ XmlText ต่อไป เราเลือกการสร้างโหนดโดยไม่มีค่าใช้จ่ายใดๆ โดยใช้ฟังก์ชัน AppendChild ร่วมกับวัตถุ XmlDocument หลัก
ตัวอย่างเช่น ราคาจะถูกบันทึกเป็นตัวเลขที่สร้างขึ้น เรารวบรวมการเปลี่ยนแปลงทั้งหมดในไฟล์ guestbook.xml และไปที่หน้า viewguestbook.aspx ซึ่งความคิดเห็นที่เก็บไว้จะปรากฏขึ้น
การดูสมุดเยี่ยม
ในการสร้างสมุดเยี่ยมชม เราต้องสร้างเว็บฟอร์มอื่นๆ:
<% @Page Language="C#" Debug="true" Src="ViewGuestbook.cs"
สืบทอด = "ViewGuestbook" %>
อย่างที่คุณเห็น เว็บฟอร์มไม่ได้ทำอะไรมากมายขนาดนั้น นี่เป็นเรื่องง่ายที่จะเรียกไฟล์ codebehind ViewGuestbook.cs ลองมาดูไฟล์นี้กัน
การใช้ระบบ;
ใช้ System.Web;
โดยใช้ System.Web.UI;
ใช้ System.Web.UI.WebControls;
vikoristychi System.Xml;
vikoristychi System.Xml.Xsl;
ใช้ System.IO;
ViewGuestbook ชั้นเรียนสาธารณะ: หน้า
{
โมฆะส่วนตัว Page_Load (ผู้ส่งวัตถุ System.EventArgs e)
{
//โหลดไฟล์ XML
เอกสาร XmlDocument = XmlDocument ใหม่();
doc.Load(Server.MapPath("guestbook.xml"));
//โหลดไฟล์ XSL
XslTransform xslt = XslTransform ใหม่();
xslt.Load(Server.MapPath("guestbook.xsl"));
สตริง xmlQuery="//สมุดเยี่ยม";
XmlNodeList nodeList=doc.Document
องค์ประกอบ SelectNodes(xmlQuery);
MemoryStream ms=MemoryStream ใหม่();
xslt.Transform(doc, null, ms);
ms.Seek(0, SeekOrigin.Begin);
StreamReader sr = StreamReader ใหม่ (ms);
//พิมพ์ผลลัพธ์ออกมา
Response.Write(sr.ReadToEnd());
}
}
ฉันได้สร้างหมวดหมู่นี้เพื่อแสดงความคิดเห็นทั้งหมดที่โพสต์ผ่านสมุดเยี่ยมแก่สมาชิกของเรา ในการเชื่อมต่อกับสิ่งนี้ ขั้นแรกเราจะใช้เนมสเปซที่จำเป็น และในขณะที่เราใช้ XSL สำหรับการแสดงภาพ เราจะต้องรวมเนมสเปซ System.Xml.Xsl ไว้สูงสุด
พวกเขากำลังสร้างคลาสใหม่ชื่อ ViewGuestbook โดยมีฟังก์ชันในตัวส่วนตัวที่เรียกว่า Page_Load ฟังก์ชันนี้จะถูกเรียกเสมอเมื่อโหลดเพจหรือเมื่อเปลี่ยนพารามิเตอร์ ที่นี่ ฟังก์ชันจะโหลดไฟล์ guestbook.xml และในคลาส XslTranform จะถูกใช้เพื่อแปลงองค์ประกอบ XML ให้เป็น HTML ให้เป็น Wet loadt guestbook.xsl ด้วยอ็อบเจ็กต์ Help XslTransform
ต่อไป เราจะสร้างอ็อบเจ็กต์ใหม่ของคลาส XmlNodeList ซึ่งจะเต็มไปด้วยโหนดที่ต้องการที่เลือกไว้ หากคุณใช้คลาส MemoryStream ซึ่งพร้อมใช้งานผ่านเนมสเปซ System.IO ให้สร้างสตรีมซึ่งทำหน้าที่เป็นที่จัดเก็บสำรอง และฟังก์ชันการแปลง Vikory เพื่อรับข้อมูล xml สำหรับหน่วยความจำนั้น ฟังก์ชันส่วนประกอบด้วยตำแหน่งปัจจุบันสูงสุด 0
จากนั้นเราสร้างอ็อบเจ็กต์ของคลาส StreamReader ซึ่งอ่านสตรีมและพิมพ์ผลลัพธ์โดยใช้ฟังก์ชัน ReadToEnd() ฟังก์ชั่นนี้จะอ่านกระแสจากตำแหน่งปัจจุบันไปยังจุดสิ้นสุด หากคุณกำลังวางแผนที่จะเข้าถึง guestbook.aspx คุณจะต้องทราบถึงแบบฟอร์มบนเว็บดังนี้:
XSL
ตามที่ฉันได้กล่าวไปแล้ว เราใช้ XSL สำหรับการแปลงข้อมูลจาก XML เป็น HTML ฉันคิดว่าคุณคงคุ้นเคยกับ XSLT อยู่แล้ว ดังนั้นฉันจะพูดถึงเฉพาะประเด็นที่สำคัญเท่านั้น ฉันใช้ XSL สำหรับ skin exit ก่อนที่จะวนซ้ำแขกทุกคนในหนังสือเล่มนี้ ตามที่พวกเขากำหนดทุกชั่วโมง:
และในทางกลับกัน เราเรียกชื่อเทมเพลต XSL ซึ่งมีลักษณะดังนี้:
บทสรุป
อย่างที่คุณเห็น การสร้างสมุดเยี่ยมไม่ใช่เรื่องยากนัก ขอให้โชคดี! และอย่าลืม
ที่นี่เราเริ่มต้นด้วยไฟล์ "การตั้งค่า" ง่ายๆ โทรไปที่ settings.asp ไฟล์นี้จะรวมอยู่ในเพจของคุณและจะมีการตั้งค่าหลักสำหรับสมุดเยี่ยมนี้
รหัสผ่าน (รหัสเข้าสู่ระบบ) ไม่ได้อยู่ใน 데이터베이스 คุณสามารถเขียนฐานข้อมูลใน webroot ด้วยคำสั่ง mappath เพื่อให้การติดตั้งง่ายขึ้น นอกจากนี้ ตำแหน่งที่ดีที่สุดสำหรับฐานข้อมูลของคุณคือการโฮสต์เว็บไซต์ของคุณ เมื่อใดก็ตามที่คุณต้องการเปลี่ยนสตริง Database_path เป็นเส้นทางแบบเต็ม (เช่น "C:\inetpub\database\post.mdb")
สิ่งสำคัญคือต้องปรับแต่ง html หรือไม่ หลายครั้งที่ผู้คนใช้สมุดเยี่ยมในทางที่ผิดด้วยการกรอกลิงก์และกางเกงยีนส์อื่นๆ คงจะดีถ้าคุณต้องการดู html เว้นแต่ว่าคุณต้องการมันจริงๆ
การตั้งค่าภาษาเป็นเพียงการตั้งค่าตัวแปรสำหรับข้อความที่ใช้ภายในระบบ โดยแต่ละภาษาจะมีข้อความที่แตกต่างกันออกไป ง่ายมากที่จะเพิ่มภาษา "ใหม่" ให้กับระบบ
รายละเอียด
การเข้าสู่ระบบเป็นหน้าตรวจสอบการเข้าสู่ระบบแบบง่ายๆ ซึ่งจะตรวจสอบรหัสเข้าสู่ระบบที่ป้อนในแบบฟอร์ม
โดยที่เก็บไว้ในไฟล์ settings.asp
การเข้าสู่ระบบใช้ตัวแปรเซสชันเพื่อจัดเก็บข้อมูลการเข้าสู่ระบบ ดังนั้นในการออกจากระบบ เราก็จะละทิ้งเซสชันนั้น เปลี่ยนเส้นทางต่อท้ายวันที่เพื่อหลีกเลี่ยงไม่ให้เห็นหน้าเข้าสู่ระบบ "แคช" หลังจากออกจากระบบ มันไม่ปลอดภัย เพียงเพื่อความสะดวก
<% session.abandon response .redirect(" post.asp?d=" & date ) %>
รหัสหลักใหม่คือหน้า post.asp หน้านี้เหมือนกันไม่ว่าคุณจะเข้าสู่ระบบในฐานะผู้ดูแลระบบหรือเพียงผู้เยี่ยมชมที่เยี่ยมชมเพจ หากคุณเลือกที่จะให้ข้อมูลเอง คุณจะมีตัวเลือกมากมายที่คุณสามารถรับการแจ้งเตือนได้อย่างรวดเร็ว หรือคุณจะไม่สามารถดูการแจ้งเตือนได้ หรือคุณจะล้าง “ถังรีไซเคิล” (ตามที่คุณได้รับการแจ้งเตือน จนกระทั่ง คุณเคลียร์มันออก)
ดังที่คุณเห็นในโค้ดด้านล่าง เราเข้าสู่ระบบเซสชันตั้งแต่เริ่มต้น
เราสามารถแก้ไขข้อความนี้เพื่อลบสคริปต์สำหรับการแสดงข้อมูลตามสถานะของคุณในฐานะผู้ดูแลระบบหรือแขก
<% option explicit %>
span > <% LoggedIn = Session(" loginID" )เมื่อคุณเข้าสู่ระบบแล้ว คุณจะมีตัวเลือกเพิ่มเติมให้เลือก
ไฟล์จะถูกแบ่งออกเป็น "ส่วน" ขึ้นอยู่กับสตริงการสืบค้นที่ส่งผ่าน
ส่วนด้านล่างจะตรวจสอบว่าคุณได้เข้าสู่ระบบแล้วหรือไม่ จากนั้นจึงตรวจสอบว่า
คุณกำลังอ้างถึงองค์ประกอบ "แยกย่อย" ที่ว่างเปล่าจากฐานข้อมูล
ดังที่คุณทราบเกี่ยวกับโค้ด "โพสต์" หลักที่เหลือ องค์ประกอบต่างๆ สามารถเริ่มทำงานหรือดำเนินการตามสิ่งที่ถูกคลิกบนเพจ และเนื่องจากคุณไม่ได้เลือกสตริงของค่าที่คุณต้องส่งผ่านบนเพจ
" ============ ตั้งค่าตามการลบหรือยกเลิกการลบ============หากเข้าสู่ระบบแล้ว<>จากนั้น showdeleted = คำขอ .querystring(" showdeleted" ) ถ้า showdeleted = 1 ดังนั้น active = 2 Removetype = 1 Delete_text = undelete_text delimage = " undelete.gif" else active = 1 Removetype = 2 Delete_text = Delete_text delimage = " Delete.gif " end ถ้าใช้งานอยู่ = 1 สิ้นสุดถ้า " ============ลบ/ยกเลิกการลบรายการจากการแสดงสมุดเยี่ยม============ลบ = ร้องขอ .querystring(" ลบ" ) ถ้าลบ = 1 ให้ตั้งค่า dConn = Server .CreateObject ("ADODB.Connection" ) dConn.Open " ผู้ให้บริการ = MICROSOFT.JET.OLEDB.4.0; แหล่งข้อมูล = "& Database_path Removetype = คำขอ .querystring(" Removetype") mySQL = " อัปเดต tblPost SET Active = " & Removetype & " WHERE ID = " & _ ID & " ;" การตอบสนอง .write " อัปเดต" dConn.execute(mySQL) dConn.Close set dConn = ไม่มีอะไรตอบสนอง .redirect(" post.asp" ) สิ้นสุดถ้า " ============สิ้นสุดการลบส่วน============ตั้งค่า dataRS = เซิร์ฟเวอร์ .CreateObject("ADODB.RecordSet") dataSQL = "เลือกด้านบน" & show_posts & " ข้อความ, remote_addr, sysdate, " &_ " systime, id จาก tblPost โดยที่ active = "&คล่องแคล่ว&_" สั่งซื้อโดย sysdate DESC, systime DESC;""Response.Write dataSQL" ชุด response.end dConn = Server.CreateObject("ADODB.Connection") dConn.Open" ผู้ให้บริการ = MICROSOFT.JET.OLEDB.4.0; แหล่งข้อมูล = "& Database_path dataRS.Open dataSQL, dConn, 1 , 3 recordcount = dataRS.recordcount ถ้า recordcount > 0 ดังนั้น data = dataRS.GetRows() " ข้อมูลถูกดึงมาเพื่อปิดการเชื่อมต่อทั้งหมด dataRS.Close Set dataRS = Nothing dconn.close set dconn = none " การตั้งค่าสำหรับการใช้งานอาเรย์ iRecFirst = LBound (data, 2 ) iRecLast = UBound (data, 2 ) end if " ============หากเป็นการโพสต์กลับ============ message = trim (request .form("message" )) if request .form(" ispostback" ) = 1 AND (len (ข้อความ) > maximum_length) PreSubmit2(message) end if strSQL = "tblPost" "เปิดชุดระเบียน Set cRS2 = เซิร์ฟเวอร์ .CreateObject ( "ADODB.recordset" ) ตั้งค่า dConn = เซิร์ฟเวอร์ .CreateObject ( "ADODB.Connection" ) dConn.Open " ผู้ให้บริการ = MICROSOFT.JET.OLEDB.4.0; แหล่งข้อมูล = "&_database_path cRS2.Open strSQL, dConn, 1 ,3 cRS2.AddNew cRS2(" message" ) = ข้อความ cRS2(" sysdate" ) = date() cRS2(" systime" ) = time () cRS2(" remote_addr" ) = คำขอ .ServerVariables(" remote_addr" ) cRS2(" Active" ) = 1 cRS2.Update cRS2.Close Set cRS2 = Nothing dConn.Close Set dConn = Nothing response .redirect(" post.asp" ) สิ้นสุดถ้า " ============สิ้นสุดส่วน POSTBACK============ %><%=pagetitle%>