คอมพิวเตอร์ Windows อินเทอร์เน็ต

PHP สมุดเยี่ยม การเขียนสคริปต์สมุดเยี่ยม php

PHP 5.2 และสูงกว่า;
- mod_rewrite;
- ฐาน ข้อมูล MySQL 4.1 ขึ้นไป

โอกาส

ฝังไว้ใต้ไซต์ใดๆ (สิ่งที่คุณต้องทำคือแก้ไขไฟล์ top.php และ bottom.php);
- ป้องกันน้ำท่วม
- รายการห้าม;
- การนำทางหน้าของมุมมอง<< < ...| 5 | 6 | 7 ... > >>;
- การสนับสนุน BBCode;
- การแสดงอีโมติคอน;
- การแจ้งเตือนข้อความที่เพิ่มใหม่
- ความสามารถในการเพิ่มข้อความสำหรับการกลั่นกรอง;
- แผงธุรการ;
- ง่ายต่อการติดตั้งและตั้งค่า

การติดตั้ง

แกะไฟล์เก็บถาวรและคัดลอกเนื้อหาของไฟล์เก็บถาวรไปยังโฟลเดอร์ใดๆ บนเว็บเซิร์ฟเวอร์ของคุณ (เช่น "สมุดเยี่ยม") เปิดไฟล์ config / config_db.php ใน โปรแกรมแก้ไขข้อความและระบุการตั้งค่าการเชื่อมต่อ (โฮสต์ฐานข้อมูลหรือ IP ชื่อฐานข้อมูล ชื่อผู้ใช้และรหัสผ่าน) จัดสรรตารางฐานข้อมูลแบบสอบถาม MySQL SQL จากไฟล์ guestbook.sql โดยปกติในโฮสติ้งส่วนใหญ่จะทำผ่านเว็บอินเตอร์เฟสผ่าน phpMyAdmin ไปที่แผงการดูแลระบบ (http: // your_site / folder_with_script / admin /) และป้อนรหัสผ่าน 1111 จากนั้นระบุการตั้งค่าที่จำเป็น

รุ่นเชิงพาณิชย์

ตามคำขอของลูกค้า ฉันสามารถปรับสคริปต์สำหรับเงื่อนไขเฉพาะได้ สามารถเพิ่มฟังก์ชันเพิ่มเติมต่างๆ ได้

บันทึก

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

หากคุณชอบสคริปต์ของฉันและต้องการขอบคุณฉันด้วยเงินรูเบิล นี่คือรายละเอียดของฉัน:

WebMoney
U237811811298
R198597198920
Z917380288657

เงินยานเดกซ์
41001635943434

PayPal

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

»» @LexGuestbook

@lex สมุดเยี่ยม- มันว่าง PHP สมุดเยี่ยม สคริปต์สำหรับไซต์ เขียนเป็นภาษา PHP, @lex สมุดเยี่ยมติดตั้งง่ายในเวลาไม่กี่นาที ทำให้ง่ายสำหรับผู้เริ่มต้น

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

ข้อดีของสคริปต์

  • ต้องขอบคุณสกิน คุณเปลี่ยนได้ รูปร่าง @lexGuestbookสำหรับการออกแบบเว็บไซต์ของคุณ (สกินทั้งหมดถูกต้อง XHTML 1.0 เฉพาะกาล)
  • วี PHP สมุดเยี่ยมมีประมาณ 20 ภาษาในตัว
  • แต่ละประเทศมีการแสดงธงของตนเอง
  • รองรับอีโมติคอน: ความสามารถในการเพิ่มอีโมติคอนของคุณเอง ลบ แก้ไข
  • สถิติตัวละครจะปรากฏขึ้น: คุณสามารถกำหนดจำนวนตัวอักษรสูงสุดในหนึ่งข้อความ
  • เครื่องมือค้นหาภายใน
  • ความเป็นไปได้ของการประเมินโดยผู้เข้าชม การประเมินระบบ 10 จุด

ภาษาที่รองรับ

แปลให้ครบ.
ฝรั่งเศส, อังกฤษ, โปแลนด์, เยอรมัน, นอร์เวย์, อิตาลี, ดัตช์, สโลวัก, เปอร์เซีย, ตุรกี

การแปลบางส่วน บางคำยังเป็นภาษาอังกฤษ
สเปน, รัสเซีย, สวีเดน, เช็ก, โครเอเชีย, โปรตุเกส, ไอซ์แลนด์, เซอร์เบีย, เดนมาร์ก

กวดวิชาสมุดเยี่ยมชม PHP วันนี้ฉันเตรียมบทช่วยสอนใหม่ที่น่าสนใจ - ฉันจะบอกว่าคุณสามารถสร้างสมุดเยี่ยม ajax PHP ด้วยการออกแบบที่เป็นเอกลักษณ์ของตัวเองได้อย่างไร บันทึกของเราจะถูกบันทึกไว้ เป็นSQLฐานข้อมูล ตารางนี้จะมีข้อมูลถัดไป: ชื่อผู้ส่ง อีเมล บันทึกสมุดเยี่ยม วันที่-เวลาที่บันทึก และ IP ของผู้ส่ง แน่นอน เราจะใช้ jQuery ด้วย (เพื่อทำให้เป็น Ajax) หนึ่งในคุณสมบัติที่สำคัญคือการป้องกันสแปม (เราสามารถโพสต์ได้ไม่เกินหนึ่งบันทึกทุกๆ 10 นาที)!

ตอนนี้ - ดาวน์โหลดไฟล์ต้นฉบับและเริ่มเขียนโค้ดได้เลย!

ขั้นตอนที่ 1 SQL

เราจำเป็นต้องเพิ่มตารางหนึ่งตารางในฐานข้อมูลของเรา (เพื่อจัดเก็บบันทึกของเรา):

สร้างตารางหากไม่มีอยู่ `s178_guestbook` (` id` int (10) ที่ไม่ได้ลงชื่อไม่ใช่ NULL auto_increment, `ชื่อ' varchar (255) ค่าเริ่มต้น" 'อีเมล' varchar (255) ค่าเริ่มต้น "", `คำอธิบาย' varchar (255) ค่าเริ่มต้น "", `เมื่อ ' int (11) ไม่ใช่ค่าเริ่มต้น NULL" 0 ", 'ip' varchar (20) ค่าเริ่มต้น NULL, คีย์หลัก ('id')) เครื่องยนต์ = MyISAM ค่าเริ่มต้น CHARSET = utf8;

ขั้นตอนที่ 2. PHP

นี่คือซอร์สโค้ดของไฟล์หลักของเรา:

guestbook.php

= ") == 1) error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); else error_reporting (E_ALL & ~ E_NOTICE); require_once (" classes / CMySQL.php "); // รวมถึงคลาสบริการที่จะทำงานกับฐานข้อมูล // รับ ฟังก์ชั่น IP ของผู้เยี่ยมชม getVisitorIP () ($ ip = "0.0.0.0"; if ((isset ($ _ SERVER ["HTTP_X_FORWARDED_FOR"])) && (! ว่างเปล่า ($ _ SERVER ["HTTP_X_FORWARDED_FOR"])) ($ ip = $ _SERVER ["HTTP_X_FORWARDED_FOR"];)elseif ((isset ($ _ SERVER ["HTTP_CLIENT_IP"])) && (! Empty ($ _ SERVER ["HTTP_CLIENT_IP"]))) ($ ip = ระเบิด ("." , $ _ SERVER [ "HTTP_CLIENT_IP"]); $ ip = $ ip. ".". $ Ip. ".". $ Ip. ".". $ Ip;) elseif ((! Isset ($ _ SERVER [" HTTP_X_FORWARDED_FOR"])) | | (ว่างเปล่า ($ _ SERVER ["HTTP_X_FORWARDED_FOR"]))) (ถ้า ((! isset ($ _ SERVER ["HTTP_CLIENT_IP"])) && (ว่าง ($ _ SERVER ["HTTP_CLIENT_IP"] ))) ($ ip = $ _SERVER ["REMOTE_ADDR"];)) return $ ip;) // รับฟังก์ชันบันทึกสมุดเยี่ยมล่าสุด getLastRecords ($ iLimit = 3) ($ sRecords = ""; $ aRecords = $ GLOBALS [" MySQL"] -> getAll ("เลือก * จาก `s178_guestbook` ORDER BY` id' DESC LIMIT ($ iLimit) "); forea ch ($ aRecords as $ i => $ aInfo) ($ sWhen = date ("F j, Y H: i", $ aInfo ["เมื่อ"]); $ sRecords. =<<

บันทึกจาก ($ aInfo ["name"]) (($ sWhen)):

($ aInfo ["คำอธิบาย"])

อีฟ; ) ส่งคืน $ sRecords; ) ถ้า ($ _POST) (// ยอมรับบันทึกใหม่ $ sIp = getVisitorIP (); $ sName = $ GLOBALS ["MySQL"] -> หนี (strip_tags ($ _ POST ["name"])); $ sEmail = $ GLOBALS ["MySQL"] -> หลบหนี (strip_tags ($ _ POST ["name"])); $ sDesc = $ GLOBALS ["MySQL"] -> หลบหนี (strip_tags ($ _ POST ["text"])); if ($ sName && $ sEmail && $ sDesc && $ sIp) (// การป้องกันสแปม $ iOldId = $ GLOBALS ["MySQL"] -> getOne ("SELECT` id' FROM `s178_guestbook` WHERE' ip` = "($ sIp)" AND `เมื่อ `> = UNIX_TIMESTAMP () - 600 LIMIT 1"); if (! $ IoldId) (// อนุญาตให้เพิ่มความคิดเห็น $ GLOBALS ["MySQL"] -> res ("INSERT INTO` s178_guestbook` SET `name` = "($ sName)", `email` =" ($ sEmail) "," description` = "($ sDesc)", `เมื่อ '= UNIX_TIMESTAMP (),` ip` = "($ sIp) " "); // วาด 10 รายการล่าสุด $ sOut = getLastRecords (); echo $ sOut; exit;)) echo 1; exit;) // วาด 10 รายการล่าสุด $ sRecords = getLastRecords (); ob_start (); ?>

บันทึกสมุดเยี่ยม

เพิ่มบันทึกของคุณที่นี่

PHP สมุดเยี่ยม | บทช่วยสอนสคริปต์

PHP สมุดเยี่ยม

กลับไปที่บทช่วยสอนดั้งเดิมเกี่ยวกับบทช่วยสอนสคริปต์

เมื่อเราเปิดหน้านี้ เราจะเห็นหนังสือ ทางด้านซ้าย เราจะวาดรายการบันทึกสามรายการสุดท้าย ทางด้านขวา - รูปแบบการโพสต์บันทึกใหม่ เมื่อเราส่งแบบฟอร์ม - สคริปต์ส่งข้อมูล POST (ไปยังหน้า php เดียวกัน) สคริปต์บันทึกข้อมูลนี้ไปยังฐานข้อมูล และส่งคืนรายการบันทึกใหม่ 3 รายการ จากนั้น เราวาดข้อมูลที่ส่งคืนที่คอลัมน์ด้านซ้ายโดยใช้เอฟเฟกต์การซีดจาง โค้ดทั้งหมดมีความคิดเห็น - โปรดอ่านเพื่อความเข้าใจโค้ดที่ดีขึ้น ตกลง ไฟล์ PHP ถัดไปคือ:

คลาส / CMySQL.php

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

ขั้นตอนที่ 3 CSS

ตอนนี้ - สไตล์ CSS ที่ใช้ทั้งหมด:

css / main.css

* (ระยะขอบ: 0; ช่องว่างภายใน: 0;) เนื้อหา (สีพื้นหลัง: #fff; สี: #fff; แบบอักษร: 14px / 1.3 Arial, sans-serif;) ส่วนท้าย (สีพื้นหลัง: # 212121; ด้านล่าง: 0; กล่องเงา: 0 -1px 2px # 111111; จอแสดงผล: บล็อก; ความสูง: 70px; ซ้าย: 0; ตำแหน่ง: คงที่; ความกว้าง: 100%; ดัชนี z: 100;) ส่วนท้าย h2 (ขนาดแบบอักษร: 22px; แบบอักษร- น้ำหนัก: ปกติ; ซ้าย: 50%; ระยะขอบซ้าย: -400px; ช่องว่างภายใน: 22px 0; ตำแหน่ง: สัมบูรณ์; ความกว้าง: 540px;) ส่วนท้าย a.stuts, a.stuts: เยี่ยมชมแล้ว (เส้นขอบ: ไม่มี; การตกแต่งข้อความ: ไม่มี ; color: #fcfcfc; font-size: 14px; left: 50%; line-height: 31px; margin: 23px 0 0 110px; position: absolute; top: 0;) footer .stuts span (font-size: 22px; น้ำหนักแบบอักษร: ตัวหนา ระยะขอบซ้าย: 5px;) .container (พื้นหลัง: URL โปร่งใส (../ ภาพ / book_open.jpg) ตรงกลางด้านบนสุด ห้ามทำซ้ำ สี: # 000000 ความสูง: 600px ระยะขอบ: อัตโนมัติ 20px; ล้น: ซ่อน; ช่องว่างภายใน: 35px 100px; ตำแหน่ง: สัมพันธ์; ความกว้าง: 600px;) # col1, # col2 (ลอย: ซ้าย; ระยะขอบ: 0 10px; ล้น: ซ่อน; จัดข้อความ: กึ่งกลาง; ความกว้าง: 280px;) # col1 (-webkit-transform: หมุน (3deg); -moz-transform: หมุน (3deg); -ms-transform: หมุน (3deg); -o-transform: หมุน (3deg); ) #records form (ระยะขอบ: 10px 0; padding: 10px; text-align: left;) #records table td.label (color: # 000; font-size: 13px; padding-right: 3px; text-align: right ;) #records ป้ายกำกับตาราง (ขนาดตัวอักษร: 12px; แนวตั้ง-จัด: กลาง;) #records ตาราง อินพุต td.field, #records ตาราง td.field textarea (สีพื้นหลัง: rgba (255, 255, 255, 0.4) ; border: 0px solid # 96A6C5; font-family: Verdana, Arial, sans-serif; font-size: 13px; margin-top: 2px; padding: 6px; width: 190px;) #records table td.field input (พื้นหลัง -สี: rgba (200, 200, 200, 0.4); เคอร์เซอร์: ตัวชี้; float: ขวา; ความกว้าง: 100px;) #records ตาราง td.field อินพุต: โฮเวอร์ (สีพื้นหลัง: rgba (200, 200, 200, 0.8 );) #records_list (การจัดข้อความ: left;) #records_list .record (border-top: 1px solid # 000000; font-size: 13px; padding: 10px;) #records_list .record: first-child (border-top -width: 0px;) #records_list .record p: first-child (font-weight: bold; font-size: 11px;)

วันนี้ฉันจะอธิบายบางทีงานที่ดีที่สุดสำหรับผู้เริ่มต้นภาษาการเขียนโปรแกรม PHP - Guestbook ในความคิดของฉัน งานนี้ง่ายที่สุด แต่ในขณะเดียวกันก็ช่วยให้คุณเรียนรู้คุณสมบัติหลักทั้งหมดในการทำงานกับ PHP และฐานข้อมูล MySQL นอกจากนี้ งานนี้ขยายได้ไม่จำกัด ซึ่งช่วยให้คุณฝึกฝนเทคโนโลยีใหม่ๆ

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

หากคุณไม่รู้วิธีทำงานกับ PHP เลย ก่อนอื่นฉันแนะนำให้คุณอ่านโพสต์ PHP - จะเริ่มจากตรงไหน

เราจะวิเคราะห์การสร้างสมุดเยี่ยมแบบดั้งเดิมที่สุดโดยไม่มีการออกแบบและการจัดการ พูดอีกอย่างก็คือ เราจะจำกัดตัวเองให้เข้าหนังสือ ลงทะเบียน และฝากข้อความ
จากตัวงานเอง เป็นที่ชัดเจนว่าเราสามารถจำกัดตัวเองให้เหลือเพียงสามอย่างเท่านั้น ไฟล์ phpเพื่อทำภารกิจนี้ให้สำเร็จ แน่นอนว่างานการลงทะเบียนสามารถแบ่งออกเป็นสองส่วน: แบบฟอร์มการลงทะเบียนและการเพิ่มข้อมูลลงในฐานข้อมูล แต่เราจะไม่ทำเช่นนี้ เหตุผลเดียวกันนี้ใช้ได้กับขั้นตอนการแสดงความคิดเห็น ดังนั้นเราจึงสร้างไฟล์สามไฟล์: index.php, register.php, book.php

ด้วยชื่อไฟล์ คุณสามารถเข้าใจได้ทันทีว่าไฟล์เหล่านั้นจะรับผิดชอบอะไร: index.php - หน้าเข้าสู่ระบบ, register.php - หน้าลงทะเบียน, book.php - หน้าสมุดเยี่ยมชม

สิ่งที่ง่ายที่สุดในกรณีของเราคือหน้าเข้าสู่ระบบ เนื่องจากเพจมีหน้าที่ป้อนชื่อผู้ใช้และรหัสผ่าน จึงต้องมีแบบฟอร์มในการส่งข้อมูลนี้ไปยังหน้า book.php พร้อมทั้งลิงค์ไปยังหน้าลงทะเบียน เรามี:

รายการสมุดเยี่ยม

เข้าสู่ระบบ:
รหัสผ่าน:

การลงทะเบียน

นอกเรื่องเล็กน้อยสำหรับผู้ที่ไม่ชอบความหมายของโค้ดด้านบน ที่นี่เรามี HTML เปล่า จุดสำคัญคือแท็ก รูปร่างซึ่งใช้พารามิเตอร์สองตัว หนังบู๊ซึ่งรับผิดชอบที่อยู่ของหน้าที่จะเปิดขึ้นหลังจากยืนยันการป้อนข้อมูลและพารามิเตอร์ กระบวนการซึ่งเป็นคำตอบว่าข้อมูลแบบฟอร์มจะถูกส่งไปยัง หน้าที่ระบุ(ดู POST และ GET ในแง่ง่ายๆ) ภายในแท็กแบบฟอร์ม ช่องสำหรับป้อนข้อมูล (อินพุต เลือก) จะถูกระบุ ซึ่งต้องมีแอตทริบิวต์ ชื่อ... โดยค่าของแอตทริบิวต์นี้จะสามารถรับข้อมูลที่ป้อนโดยผู้ใช้ในหน้าที่ระบุในพารามิเตอร์ แบบฟอร์มการดำเนินการ... ต้องมีอินพุทที่มีชนิดอยู่ในแบบฟอร์ม ส่งซึ่งในสาระสำคัญคือปุ่มโดยคลิกที่ข้อมูลจะถูกส่งไปยังหน้าการดำเนินการ

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

ไปที่ phpMyAdmin มาสร้างฐานข้อมูลที่นั่นด้วยชื่อ gb ในฐานข้อมูลนี้ สร้างตารางผู้ใช้ด้วยฟิลด์ต่อไปนี้:

เข้าสู่ระบบ varchar (50) เฉพาะ // ชื่อผู้ใช้ รหัสผ่านเฉพาะฟิลด์ varchar (150) // รหัสผ่าน www varchar (255) // ที่อยู่เว็บไซต์

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

Id int ai (auto_increment) primary_key // หมายเลขข้อความ ตัวนับที่จะเพิ่มข้อความ mes // ข้อความของข้อความ who varchar (50) // ชื่อผู้ใช้ของผู้ที่ทิ้งข้อความไว้เมื่อประทับเวลาเริ่มต้น (ปัจจุบัน) // เวลาของ ออกจากข้อความโดยค่าเริ่มต้นคือวันที่และเวลาปัจจุบัน

ด้วยฐานข้อมูลที่แยกออกมา มาต่อกันที่ไฟล์ register.php โดยสรุปข้างต้น เรามี:

การลงทะเบียน

เข้าสู่ระบบ:
รหัสผ่าน:
รหัสผ่านอีกครั้ง:
WWW: http: //


ไปที่หลัก

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

จากนั้นเมื่อเราส่งข้อมูลนี้โดยคำขอ POST จะมีตัวแปร

$ _POST ["วาซา-เพตา"]

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

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

สมุดเยี่ยม ";) อื่น ๆ (echo" ยังไม่ได้เพิ่มข้อความของคุณ!


"; } } ?>
"name =" เข้าสู่ระบบ "/> "name =" รหัสผ่าน "/>

"; echo" Text: ". $ row [" mes "]."
";)) mysql_close ($ ลิงก์);?>

นั่นคือทั้งหมด หากรหัสใช้งานได้ 100% ก็ดี ถ้าไม่เช่นนั้นฉันแนะนำให้คุณพยายามแก้ไขข้อผิดพลาดด้วยตัวเอง ตอนนี้ส่วนที่สัญญาไว้

งานอิสระ
ดังที่กล่าวไว้ในตอนต้น วิธีแก้ปัญหานี้ "คด" ถ้าคุณยังไม่เข้าใจว่าทำไม ฉันจะอธิบายเดี๋ยวนี้ ตามที่คุณอาจสังเกตเห็นในไฟล์ book.php มีช่องที่ซ่อนอยู่หลายช่องในแบบฟอร์มสำหรับเพิ่มความคิดเห็น และสองช่องคือชื่อผู้ใช้และรหัสผ่านที่ผู้ใช้ป้อน ไม่ดีใช่มั้ย? ลองแก้ไขปัญหานี้โดยใช้เซสชัน (วิธีทำงานกับเซสชันใน PHP)
ลองตอบคำถามว่าฟังก์ชั่นต่างกันอย่างไร? ว่างเปล่า / issetและ ออก / ตาย?
เปลี่ยนคำขอดึงข้อความจากฐานข้อมูลเพื่อให้เมื่อแสดงข้อความ เว็บไซต์ของผู้เขียนข้อความจะปรากฏขึ้น
หากคุณสังเกตเห็นรหัสผ่านของผู้ใช้ในฐานข้อมูลจะถูกเก็บไว้ในข้อความที่ชัดเจนซึ่งไม่ค่อยดีนัก แก้ไขโค้ดเพื่อให้แฮชของรหัสผ่านของผู้ใช้ถูกเก็บไว้ในฐานข้อมูล (เช่น MD5 หรือ SHA1)

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

ขั้นตอนที่ 1 SQL

เพื่อให้แอปพลิเคชันของเราทำงานได้ เราต้องสร้างตาราง:

สร้างตารางหากไม่มีอยู่ `s178_guestbook` (` id` int (10) ที่ไม่ได้ลงชื่อ NOT NULL auto_increment, `name` varchar (255) ค่าเริ่มต้น" ",` อีเมล ' varchar (255) ค่าเริ่มต้น "", `คำอธิบาย' varchar (255) ค่าเริ่มต้น "", `เมื่อ ' int (11) ไม่ใช่ค่าเริ่มต้นเป็น NULL" 0 ", 'ip' varchar (20) ค่าเริ่มต้น NULL, คีย์หลัก ('id')) เครื่องยนต์ = MyISAM ค่าเริ่มต้น CHARSET = utf8;

ขั้นตอนที่ 2. PHP

ไฟล์หลักจะมีรหัสดังต่อไปนี้:

guestbook.php

= ") == 1) error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); else error_reporting (E_ALL & ~ E_NOTICE); require_once (" classes / CMySQL.php "); // รวมถึงคลาสบริการที่จะทำงานกับฐานข้อมูล // รับ ฟังก์ชัน IP ของผู้เยี่ยมชม getVisitorIP () ($ ip = "0.0.0.0"; if ((isset ($ _ SERVER ["HTTP_X_FORWARDED_FOR"])) && (! Empty ($ _ SERVER ["HTTP_X_FORWARDED_FOR"]))) ($ ip = $ _SERVER ["HTTP_X_FORWARDED_FOR"];)elseif ((isset ($ _ SERVER ["HTTP_CLIENT_IP"])) && (! Empty ($ _ SERVER ["HTTP_CLIENT_IP"]))) ($ ip = ระเบิด ("." , $ _ SERVER [ "HTTP_CLIENT_IP"]); $ ip = $ ip. ".". $ Ip. ".". $ Ip. ".". $ Ip;) elseif ((! Isset ($ _ SERVER [" HTTP_X_FORWARDED_FOR"])) | | (ว่างเปล่า ($ _ SERVER ["HTTP_X_FORWARDED_FOR"]))) (ถ้า ((! isset ($ _ SERVER ["HTTP_CLIENT_IP"])) && (ว่าง ($ _ SERVER ["HTTP_CLIENT_IP"] ))) ($ ip = $ _SERVER ["REMOTE_ADDR"];)) return $ ip;) // รับรายการสุดท้ายในฟังก์ชันสมุดเยี่ยม getLastRecords ($ iLimit = 3) ($ sRecords = ""; $ aRecords = $ GLOBALS ["MySQL"] -> getAll ( "SELECT * FROM` s178_guestbook` เรียงลำดับตาม `id' DESC L IMIT ($ iLimit) "); foreach ($ aRecords เป็น $ i => $ aInfo) ($ sWhen = date ("F j, Y H: i", $ aInfo ["เมื่อ"]); $ sRecords =<<

($ aInfo ["คำอธิบาย"])

อีฟ; ) ส่งคืน $ sRecords; ) if ($ _POST) (// ยอมรับรายการใหม่ $ sIp = getVisitorIP (); $ sName = $ GLOBALS ["MySQL"] -> Escape (strip_tags ($ _ POST ["name"])); $ sEmail = $ GLOBALS ["MySQL"] -> หนี (strip_tags ($ _ POST ["name"])); $ sDesc = $ GLOBALS ["MySQL"] -> หลบหนี (strip_tags ($ _ POST ["text"])); if ($ sName && $ sEmail && $ sDesc && $ sIp) (// Anti-spam $ iOldId = $ GLOBALS ["MySQL"] -> getOne ("SELECT` id` จาก `s178_guestbook` โดยที่` ip` = "( $ sIp) "AND` when`> = UNIX_TIMESTAMP () - 600 LIMIT 1 "); if (! $ IoldId) (// คุณสามารถเพิ่มความคิดเห็นได้ $ GLOBALS [" MySQL "] -> res (" INSERT INTO `s178_guestbook ` SET` name` = "($ sName)", `email` =" ($ sEmail) ",` description` = "($ sDesc)", `เมื่อ ' = UNIX_TIMESTAMP (),` ip` = "($ sIp)" "); // พิมพ์ 10 ระเบียนสุดท้าย $ sOut = getLastRecords (); echo $ sOut; exit;)) echo 1; exit;) // พิมพ์ 10 ระเบียนล่าสุด $ sRecords = getLastRecords (); ob_start (); ?>

สมุดเยี่ยม

เพิ่มความคิดเห็นของคุณที่นี่

PHP Guestbook

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

ใช้ไฟล์ PHP ด้วย

คลาส / CMySQL.php

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

$ this-> sDbName = "ฐานข้อมูล_NAME"; $ this-> sDbUser = "ชื่อผู้ใช้"; $ this-> sDbPass = "รหัสผ่าน";

ขั้นตอนที่ 3 CSS

และตอนนี้เรามาสร้างรูปลักษณ์ของสมุดเยี่ยมกัน:

css / main.css

* (ระยะขอบ: 0; ช่องว่างภายใน: 0;) เนื้อหา (สีพื้นหลัง: #fff; สี: #fff; แบบอักษร: 14px / 1.3 Arial, sans-serif;) ส่วนท้าย (สีพื้นหลัง: # 212121; ด้านล่าง: 0; กล่องเงา: 0 -1px 2px # 111111; จอแสดงผล: บล็อก; ความสูง: 70px; ซ้าย: 0; ตำแหน่ง: คงที่; ความกว้าง: 100%; ดัชนี z: 100;) ส่วนท้าย h2 (ขนาดแบบอักษร: 22px; แบบอักษร- น้ำหนัก: ปกติ; ซ้าย: 50%; ระยะขอบซ้าย: -400px; ช่องว่างภายใน: 22px 0; ตำแหน่ง: สัมบูรณ์; ความกว้าง: 540px;) ส่วนท้าย a.stuts, a.stuts: เยี่ยมชมแล้ว (เส้นขอบ: ไม่มี; การตกแต่งข้อความ: ไม่มี ; color: #fcfcfc; font-size: 14px; left: 50%; line-height: 31px; margin: 23px 0 0 110px; position: absolute; top: 0;) footer .stuts span (font-size: 22px; น้ำหนักแบบอักษร: ตัวหนา ระยะขอบซ้าย: 5px;) .container (พื้นหลัง: URL โปร่งใส (../ ภาพ / book_open.jpg) ตรงกลางด้านบนสุด ห้ามทำซ้ำ สี: # 000000 ความสูง: 600px ระยะขอบ: อัตโนมัติ 20px; ล้น: ซ่อน; ช่องว่างภายใน: 35px 100px; ตำแหน่ง: สัมพันธ์; ความกว้าง: 600px;) # col1, # col2 (ลอย: ซ้าย; ระยะขอบ: 0 10px; ล้น: ซ่อน; จัดข้อความ: กึ่งกลาง; ความกว้าง: 280px;) # col1 (-webkit-transform: หมุน (3deg); -moz-transform: หมุน (3deg); -ms-transform: หมุน (3deg); -o-transform: หมุน (3deg); ) #records form (ระยะขอบ: 10px 0; padding: 10px; text-align: left;) #records table td.label (color: # 000; font-size: 13px; padding-right: 3px; text-align: right ;) #records ป้ายกำกับตาราง (ขนาดตัวอักษร: 12px; แนวตั้ง-จัด: กลาง;) #records ตาราง อินพุต td.field, #records ตาราง td.field textarea (สีพื้นหลัง: rgba (255, 255, 255, 0.4) ; border: 0px solid # 96A6C5; font-family: Verdana, Arial, sans-serif; font-size: 13px; margin-top: 2px; padding: 6px; width: 190px;) #records table td.field input (พื้นหลัง -สี: rgba (200, 200, 200, 0.4); เคอร์เซอร์: ตัวชี้; float: ขวา; ความกว้าง: 100px;) #records ตาราง td.field อินพุต: โฮเวอร์ (สีพื้นหลัง: rgba (200, 200, 200, 0.8 );) #records_list (การจัดข้อความ: left;) #records_list .record (border-top: 1px solid # 000000; font-size: 13px; padding: 10px;) #records_list .record: first-child (border-top -width: 0px;) #records_list .record p: first-child (font-weight: bold; font-size: 11px;)