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

นี่คือทั้งหมดที่คุณต้องทำ:
1) ดาวน์โหลดไฟล์ php และ html ทั้งหมด 7 ไฟล์ (พอผมใช้ตรรกะ ผมออกมามี 7 ไฟล์!! :(/> ทั้งหมดเป็นโค้ดเล็กๆ พวกคุณสามารถทำให้มันเป็นโปรแกรมเดียวได้ 555)
2) เรียกใช้ createatabase.php ก่อนเพื่อสร้างฐานข้อมูล
3) ใช้ wamp หรือ xampp หรืออะไรก็ตามที่คุณต้องคอมไพล์ php และเปิด homepage.html
4) ใช่แล้ว คุณต้องลงทะเบียนก่อนจึงจะเข้าสู่ระบบได้
5) คุณอาจต้องเปลี่ยนรายละเอียด mysql_connect ใน login.php และ signup.php ฉันใช้ localhost เริ่มต้น รูท (ไม่มีรหัสผ่าน) เพื่อเชื่อมต่อ

หรือหากคุณไม่ต้องการดาวน์โหลดเพียงดูรหัสด้านล่างนี้:

สร้างฐานข้อมูล.php

นี่คือแบบฟอร์มที่มีแบบฟอร์มเข้าสู่ระบบและลงทะเบียน
เว็บไซต์ UBER COOL

เว็บไซต์ UBER COOL

ลงชื่อ

ชื่อผู้ใช้:
รหัสผ่าน:
ยืนยันรหัสผ่าน:
 

เข้าสู่ระบบ

ชื่อผู้ใช้:
รหัสผ่าน:
 


"; else echo "ชื่อผู้ใช้ไม่ถูกต้อง
"; echo " กลับไปที่หน้าเข้าสู่ระบบ "; ) /* 1) เราไม่ควรอนุญาตให้ใช้ชื่อผู้ใช้ที่คล้ายกัน (Y) 2) ทำให้การกลับไปที่หน้าเข้าสู่ระบบใช้งานได้ (Y) 3) เราไม่ควรอนุญาตให้ใช้ชื่อผู้ใช้และรหัสผ่านที่เป็นโมฆะ ( ญ) */ ?>

กลับไปที่หน้าเข้าสู่ระบบ "; ) else ( $_SESSION["access"]=1; $_SESSION["user"]=$_POST; header("Location: website.php"); ) mysql_close($con); / * 1) ขณะนี้ มีเพียงข้อความจะถูกพิมพ์เมื่อคุณพิมพ์รหัสผ่านที่ถูกต้อง และอีกข้อความหนึ่งเมื่อรหัสผ่านผิด ยังไงก็ตาม หากเป็นรหัสผ่านที่ถูกต้อง หากลิงก์ไปยังหน้านั้นเขียนโดยตรงโดยไม่ต้องเข้าสู่ระบบ คุณจะ เปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบ ) ให้รหัสผ่านไปยังเซิร์ฟเวอร์ 3) หน้าใหม่ที่ผู้ใช้ไปเมื่อพิมพ์รหัสผ่านที่ถูกต้องคือโปรไฟล์ผู้ใช้ 4) ควรมีตัวเลือกสำหรับการลบโปรไฟล์ในหน้าโปรไฟล์ คุณยังสามารถอัปโหลดรูปภาพที่แสดง เขียนเกี่ยวกับฉัน และสิ่งต่างๆ ได้*/ ?>

การเข้าถึง.php

Website.php (เว็บไซต์ที่ผู้ใช้ที่เข้าสู่ระบบเชื่อมต่ออยู่ นอกจากนี้ยังมีปุ่มออกจากระบบด้วย

เว็บไซต์ UBER COOL

ยินดีต้อนรับสู่เว็บไซต์ uber-cool-



ขอบคุณมากสำหรับทุกคนที่ทักทายในกระทู้นี้:D/>

ในช่วงไม่กี่ปีที่ผ่านมา เว็บโฮสติ้งมีการเปลี่ยนแปลงอย่างมาก บริการเว็บโฮสติ้งได้เปลี่ยนแปลงวิธีการทำงานของเว็บไซต์ มีบริการหลายประเภท แต่วันนี้เราจะมาพูดถึงตัวเลือกที่มีให้สำหรับผู้ให้บริการโฮสติ้งผู้ค้าปลีก พวกเขาคือโฮสติ้งผู้ค้าปลีก Linux และโฮสติ้งผู้ค้าปลีก Windows ก่อนที่เราจะเข้าใจความแตกต่างพื้นฐานระหว่างทั้งสอง เรามาดูกันว่าโฮสติ้งผู้ค้าปลีกคืออะไร

ตัวแทนจำหน่ายโฮสติ้ง

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

ผู้ใช้เว็บไซต์ส่วนใหญ่ใช้ Linux หรือ Windows สิ่งนี้เกี่ยวข้องกับสถานะการออนไลน์ ทั้งสองแพลตฟอร์มช่วยให้มั่นใจได้ว่าเว็บไซต์ของคุณใช้งานได้ 99%

1.การปรับแต่ง

ความแตกต่างหลักประการหนึ่งระหว่าง Linux Reseller Hostingplan และแผนให้บริการโดย Windows คือการปรับแต่ง แม้ว่าคุณจะสามารถทดลองใช้เครื่องเล่นทั้งสองได้หลายวิธี แต่ Linux ก็สามารถปรับแต่งได้ดีกว่า Windows มาก อย่างหลังมีคุณสมบัติมากกว่าคู่ต่อสู้และนั่นคือสาเหตุที่นักพัฒนาและผู้ดูแลระบบจำนวนมากพบว่า Linux เป็นมิตรกับลูกค้ามาก

2. การใช้งาน

บริการโฮสติ้งของผู้ค้าปลีกแต่ละรายมีการใช้งานที่แตกต่างกัน ทั้ง Linux และ Windows มีแอพพลิเคชั่นเป็นของตัวเอง แต่อย่างหลังมีความได้เปรียบในเรื่องตัวเลขและความคล่องตัว สิ่งนี้เกี่ยวข้องกับธรรมชาติของโอเพ่นซอร์สของ Linux นักพัฒนาทุกคนสามารถอัปโหลดแอปของเขาบนแพลตฟอร์ม Linux และทำให้เป็นผู้ให้บริการโฮสติ้งที่น่าดึงดูดสำหรับเจ้าของเว็บไซต์หลายล้านราย

อย่างไรก็ตาม โปรดทราบว่าหากคุณใช้ Linux สำหรับเว็บโฮสติ้ง แต่ในขณะเดียวกันก็ใช้ Windows OS แอปพลิเคชันบางตัวอาจไม่ทำงานเพียงอย่างเดียว

3.ความมั่นคง

แม้ว่าทั้งสองแพลตฟอร์มจะเสถียร แต่ Linux Reseller Hosting ก็มีความเสถียรมากกว่าในทั้งสองแพลตฟอร์ม เป็นแพลตฟอร์มโอเพ่นซอร์ส สามารถทำงานได้ในหลายสภาพแวดล้อม แพลตฟอร์มนี้สามารถแก้ไขและพัฒนาได้เป็นระยะๆ

ความเข้ากันได้ 4.NET

ไม่ใช่ว่า Linux เหนือกว่า Windows ในทุกด้าน เมื่อพูดถึงความเข้ากันได้ของ .NET Windows จะขโมยจุดเด่นไป เว็บแอปพลิเคชันสามารถพัฒนาได้อย่างง่ายดายบนแพลตฟอร์มโฮสติ้ง Windows

5.ข้อดีด้านต้นทุน

ทั้งสองแพลตฟอร์มโฮสติ้งมีราคาไม่แพง แต่ถ้าคุณประสบปัญหาทางการเงิน คุณควรเลือกใช้ Linux ใช้งานได้ฟรีและนั่นคือเหตุผลว่าทำไมนักพัฒนาและผู้ดูแลระบบจำนวนมากทั่วโลกจึงเลือกใช้

6.ความง่ายในการติดตั้ง

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

7 การรักษาความปลอดภัย

เลือกใช้โฮสติ้งตัวแทนจำหน่าย Linux เนื่องจากมีความปลอดภัยมากกว่า Windows สิ่งนี้ถือเป็นจริงโดยเฉพาะสำหรับผู้ที่ดำเนินธุรกิจอีคอมเมิร์ซ

บทสรุป

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



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

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

จากสิ่งที่ฉันเข้าใจ คุณต้องการโฆษณา Google บนไซต์ของคุณ แต่คุณยังต้องการให้บริษัทและเอเจนซี่ขนาดใหญ่อื่นๆ ทำโฆษณาด้วยเช่นกัน ด้วยวิธีนี้ คุณจะเพิ่มความต้องการและรายได้ให้สูงสุด

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

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

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

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

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

ไมโครคอมพิวเตอร์ที่ก่อตั้งโดยมูลนิธิ Raspberry Pi ในปี 2012 ประสบความสำเร็จอย่างมากในการจุดประกายความคิดสร้างสรรค์ให้กับเด็กเล็ก และบริษัทในสหราชอาณาจักรแห่งนี้ได้เริ่มเสนอโปรแกรมเริ่มต้นการเรียนรู้การเขียนโค้ด เช่น pi-top และ Kano ขณะนี้มีสตาร์ทอัพใหม่ที่ใช้อุปกรณ์อิเล็กทรอนิกส์ Pi และอุปกรณ์ดังกล่าวรู้จักกันในชื่อ Pip คอนโซลมือถือที่มีหน้าจอสัมผัส พอร์ตหลายพอร์ต ปุ่มควบคุม และลำโพง แนวคิดเบื้องหลังอุปกรณ์นี้คือการมีส่วนร่วมของคนหนุ่มสาวด้วยอุปกรณ์เกมย้อนยุค แต่จะมอบประสบการณ์การเรียนรู้โค้ดผ่านแพลตฟอร์มบนเว็บด้วย

แพลตฟอร์มซอฟต์แวร์ที่น่าทึ่งที่นำเสนอด้วย Pip จะให้โอกาสในการเริ่มเขียนโค้ดใน Python, HTML/CSS, JavaScript, Lua และ PHP อุปกรณ์นี้มีคำแนะนำแบบทีละขั้นตอนเพื่อให้เด็กๆ เริ่มเขียนโค้ดและแม้แต่สร้างไฟ LED ขึ้นมาด้วย แม้ว่า Pip จะยังเป็นต้นแบบอยู่ แต่ก็จะต้องได้รับความนิยมอย่างมากในอุตสาหกรรมอย่างแน่นอน และจะดึงดูดเด็กๆ ที่สนใจในการเขียนโค้ด และจะมอบการศึกษาและทรัพยากรที่จำเป็นในการเริ่มต้นการเขียนโค้ดตั้งแต่อายุยังน้อย

อนาคตของการเข้ารหัส

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

Pip มีส่วนร่วมกับเด็กๆ อย่างไร

เมื่อพูดถึงโอกาสในการเรียนรู้การเขียนโค้ด เด็กๆ มีทางเลือกมากมาย มีอุปกรณ์และฮาร์ดแวร์จำนวนหนึ่งที่สามารถซื้อได้ แต่ Pip ใช้แนวทางที่แตกต่างกับอุปกรณ์ของพวกเขา ความสะดวกในการพกพาของอุปกรณ์และหน้าจอสัมผัสทำให้ได้เปรียบสำหรับอุปกรณ์เข้ารหัสอื่นๆ ที่มีอยู่ในตลาด Pip จะเข้ากันได้อย่างสมบูรณ์กับชิ้นส่วนอิเล็กทรอนิกส์ นอกเหนือจากระบบ Raspberry Pi HAT อุปกรณ์นี้ใช้ภาษามาตรฐานและมีเครื่องมือพื้นฐานและเป็นอุปกรณ์ที่สมบูรณ์แบบสำหรับผู้เขียนโค้ดมือใหม่ เป้าหมายคือการขจัดอุปสรรคระหว่างแนวคิดและการสร้างสรรค์ และทำให้เครื่องมือพร้อมใช้งานทันที ข้อดีที่ยอดเยี่ยมอีกประการหนึ่งของ Pip คือมันใช้การ์ด SD ดังนั้นจึงสามารถใช้เป็นคอมพิวเตอร์เดสก์ท็อปได้เช่นเดียวกับเมื่อเชื่อมต่อกับจอภาพและเมาส์
อุปกรณ์ Pip จะช่วยให้เด็กๆ และมือใหม่ที่สนใจเขียนโค้ดมีความกระตือรือร้นในการเรียนรู้และฝึกฝนการเขียนโค้ด ด้วยการเสนอการผสมผสานระหว่างการทำงานให้เสร็จสิ้นและการซ่อมแซมเพื่อแก้ไขปัญหา อุปกรณ์นี้จะดึงดูดคนรุ่นใหม่อย่างแน่นอน จากนั้นอุปกรณ์จะอนุญาตให้ผู้เขียนโค้ดรุ่นเยาว์เหล่านี้ก้าวไปสู่ระดับขั้นสูงของการเขียนโค้ดในภาษาต่างๆ เช่น JavaScript และ HTML/CSS เนื่องจากอุปกรณ์ดังกล่าวจำลองมาจากคอนโซลเกม จึงดึงดูดความสนใจของเด็ก ๆ ได้ทันที และจะกระตุ้นให้พวกเขาเรียนรู้เกี่ยวกับการเขียนโค้ดตั้งแต่อายุยังน้อย นอกจากนี้ยังมาพร้อมกับเกมที่โหลดไว้ล่วงหน้าบางเกมเพื่อดึงดูดความสนใจ เช่น Pac-Man และ Minecraft

นวัตกรรมที่กำลังจะมา

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

ในบทช่วยสอนนี้ เราจะสร้างแบบฟอร์มลงทะเบียนผู้ใช้ที่เพิ่มผู้ใช้ลงในฐานข้อมูล จากนั้นส่งอีเมลยืนยันที่ผู้ใช้ต้องคลิกก่อนที่บัญชีของพวกเขาจะเปิดใช้งาน

ต้องการความช่วยเหลือ?

บทช่วยสอนนี้จะแนะนำคุณตลอดกระบวนการตั้งแต่ต้น แต่ถ้าคุณต้องการ คุณสามารถใช้หนึ่งในแบบฟอร์มลงทะเบียนอีเมลสำเร็จรูปบน Envato Market ได้ นี่คือตัวเลือกยอดนิยมบางส่วน

1.

ปลั๊กอิน jQuery แบบฟอร์มลงทะเบียนอย่างง่ายจะรวบรวมที่อยู่อีเมลของผู้เข้าชมบนเว็บไซต์ของคุณอย่างมีประสิทธิภาพและดึงดูดความสนใจ มีตัวเลือกการปรับแต่งเพิ่มเติมมากมายที่คุณสามารถตั้งค่าได้ภายในไม่กี่นาที

2. Hype: แบบฟอร์มลงทะเบียน SmartR

Hype คือแบบฟอร์มลงทะเบียน SmartR ที่ได้รับการกำหนดค่าล่วงหน้าและเพิ่มไปยังหน้าใดๆ ได้ในคลิกเดียว ควบคุมพลังของผู้ใช้และเครือข่ายของพวกเขาเพื่อเพิ่มการลงทะเบียนและขยายฐานผู้ใช้ของคุณแบบทวีคูณ

3. แบบฟอร์มลงทะเบียนอีเมลเบต้า Splash Page

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

การติดตั้งทำได้รวดเร็วและไม่เจ็บปวด แบบฟอร์มนี้ไม่จำเป็นต้องมีฐานข้อมูลเนื่องจากจะสร้างและจัดเก็บข้อมูลอินพุตไว้ในไฟล์ CSV

ดังนั้นเราจึง "ล้างตัวแปรของเราแล้ว ตอนนี้เรามาตรวจสอบดูว่าผู้ใช้ลืมช่องใดหรือไม่

If(empty($username))( //ใส่โค้ดในตัวฉันหน่อยสิ ) if(empty($password))( //ใส่โค้ดในตัวฉันหน่อยสิ ) if(empty($email))( //ใส่โค้ดในตัวฉันหน่อยสิ )

ตอนนี้เรามีสามคำสั่ง if ที่กำลังตรวจสอบว่าแต่ละฟิลด์ว่างเปล่าหรือไม่ หากฟิลด์ว่างเปล่าเราจะกำหนดตัวแปรบางตัว

เพื่อทำให้ทุกอย่างสะอาดขึ้น เราจะสร้างอาร์เรย์ที่จะเก็บสถานะของกระบวนการสมัครใช้งานตลอดจนข้อความใด ๆ ที่เราต้องแสดงให้ผู้ใช้เห็น

เหนือโค้ดนั้น มาสร้างอาร์เรย์และตัวแปรสองสามตัวกัน

$การกระทำ = อาร์เรย์(); $การกระทำ["ผลลัพธ์"] = null; $ข้อความ = อาร์เรย์();

ขั้นแรกเรากำลังสร้างอาร์เรย์ว่างที่เรียกว่า action จากนั้นตั้งค่าอาร์เรย์ของผลลัพธ์ ผลลัพธ์จะเก็บค่าของความสำเร็จหรือข้อผิดพลาด ต่อไปเราจะสร้างอาร์เรย์ว่างอีกอันที่เรียกว่าข้อความ นี่จะเก็บข้อความใดๆ ที่เราต้องการแสดงให้ผู้ใช้เห็นระหว่างการสมัคร

ตอนนี้ คำสั่ง if ของเราที่กำลังตรวจสอบตัวแปรของเราไม่ได้รันโค้ดใดๆ ดังนั้น เรามาใส่โค้ดบางส่วนไว้ในคำสั่ง if ลำดับแรกกันดีกว่า

ใส่รหัสนี้ไว้ในชื่อผู้ใช้คำสั่ง if

$action["result"] = "ข้อผิดพลาด"; array_push($text,"คุณลืมชื่อผู้ใช้");

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

จากนั้นเราจะใช้ array_push() เพื่อใส่ข้อความลงในอาร์เรย์ข้อความของเรา เราจะใช้โค้ดชิ้นเดียวกันนี้กับคำสั่ง "if" สองคำสั่งสุดท้าย ดังนั้นให้คัดลอกและวางโค้ดนั้นลงในคำสั่ง if สองคำสั่งสุดท้าย คุณอาจต้องการเปลี่ยนข้อความให้ตรงกับคำสั่ง if ปัจจุบัน

หมายเหตุ: เรากำลังใช้ array_push() ในกรณีที่เรามีข้อผิดพลาดหลายประการในการส่งแบบฟอร์ม หากดำเนินการคำสั่ง all if อาร์เรย์ข้อความจะมีลักษณะดังนี้:

Array( => "คุณลืมชื่อผู้ใช้ของคุณ", => "คุณลืมรหัสผ่าน", => "คุณลืมอีเมลของคุณ")

ตอนนี้เราจำเป็นต้องตรวจสอบว่าเรามีข้อผิดพลาดหรือไม่ เพื่อให้เราสามารถดำเนินการตามขั้นตอนการสมัครต่อไปได้

ขั้นตอนที่ 6: ไม่มีข้อผิดพลาด มาลงทะเบียนผู้ใช้กันเถอะ

เราจะตรวจสอบเพื่อดูว่าค่าผลลัพธ์ของอาร์เรย์การกระทำของเราถูกตั้งค่าเป็นข้อผิดพลาดหรือไม่

If($action["result"] != "error")( //ไม่มีข้อผิดพลาด, ลงทะเบียนต่อ $password = md5($password); ) $action["text"] = $text;

เรายังใช้รหัสผ่านของเราผ่านฟังก์ชัน md5() ใช้รหัสผ่านและส่งกลับสตริงอักขระ 32 ตัวที่มีลักษณะดังนี้: แนวทางปฏิบัติที่ดีในการเรียกใช้รหัสผ่านผ่านฟังก์ชันแฮชบางประเภทก่อนที่จะใส่ลงในฐานข้อมูล วิธีนี้จะป้องกันไม่ให้ผู้อื่นดูรหัสผ่านของผู้ใช้หากฐานข้อมูลของคุณถูกแฮ็ก

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

ส่วนสุดท้ายของโค้ดนี้ เราจะใส่ค่าของอาร์เรย์ข้อความของคุณลงในอาร์เรย์การกระทำของเรา

ขั้นตอนที่ 7: การเพิ่มผู้ใช้ไปยังฐานข้อมูล

วางโค้ดนี้ไว้ในคำสั่ง if สุดท้ายของเรา

หากคำสั่งตรวจสอบข้อผิดพลาด ... //เพิ่มลงในฐานข้อมูล $add = mysql_query("INSERT INTO `users` VALUES(NULL,"$username","$password","$email",0)"); if($add)( //ผู้ใช้ถูกเพิ่มไปยังฐานข้อมูล )else( $action["result"] = "error"; array_push($text,"ไม่สามารถเพิ่มผู้ใช้ลงในฐานข้อมูลได้ เหตุผล: " . mysql_error ()); = )

เราใช้ mysql_query() และ INSERT เพื่อแทรกข้อมูลผู้ใช้ลงในฐานข้อมูล ต่อไป เราจะสร้างคำสั่ง if ขึ้นมาใหม่เพื่อตรวจสอบดูว่าผู้ใช้ถูกเพิ่มลงในฐานข้อมูลหรือไม่ เราทำเช่นนี้โดยการตรวจสอบว่าตัวแปร $add เป็นจริงหรือเท็จ

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

เมื่อทำงานกับการสืบค้น MySQL เราจะใช้ฟังก์ชัน mysql_error() หากเป็นข้อผิดพลาด เนื่องจากจะช่วยแก้ไขจุดบกพร่องในการสืบค้นของคุณ มันจะแสดงผลข้อผิดพลาดข้อความเมื่อมีบางอย่างผิดปกติ ดีจัง!

ขั้นตอนที่ 8: จำเป็นต้องมีการยืนยัน

ผู้ใช้ได้ส่งแบบฟอร์ม ตรวจสอบทุกอย่างแล้ว และพวกเขา "อยู่ในฐานข้อมูลแล้ว เราต้องการให้ผู้ใช้สามารถใช้บัญชีของตนได้ ดังนั้นเรามาตั้งค่าการยืนยันกันดีกว่า"

หากเพิ่มให้ตรวจสอบ ... //รับรหัสผู้ใช้ใหม่ $userid = mysql_insert_id(); //สร้างคีย์สุ่ม $key = $username $อีเมล์ วันที่("ของฉัน"); $คีย์ = md5($คีย์); //เพิ่มแถวยืนยัน $confirm = mysql_query("INSERT INTO `confirm` VALUES(NULL,"$userid","$key","$email")"); if($confirm)( //let"s send the email )else( $action["result"] = "error"; array_push($text,"Confirm row is not added to the Database. เหตุผล: " . mysql_error( )); )

เพื่อให้สิ่งต่าง ๆ ง่ายขึ้น มากำหนด ID ผู้ใช้ใหม่ให้กับตัวแปรเพื่อให้เราสามารถใช้ในภายหลังได้ เราทำสิ่งนี้โดยใช้ m ysql_insert_id() สิ่งนี้จะตั้งค่า $userid ให้กับ ID ของผู้ใช้ใหม่

ต่อไปเราจะสร้างคีย์สุ่มสำหรับผู้ใช้รายนั้น เราสร้างตัวแปรชื่อคีย์และกรอกค่าชื่อผู้ใช้ อีเมล และวันที่ สตริงจะมีลักษณะเช่นนี้ [ป้องกันอีเมล]. หลังจากนั้นเราใช้ฟังก์ชัน md5() เพื่อแปลงเป็นสตริงสุ่มที่ไม่ซ้ำกับผู้ใช้รายนั้น

เมื่อใช้ mysql_query() และ INSERT อีกครั้ง เราจะใส่ ID ผู้ใช้ใหม่ คีย์ และอีเมลของผู้ใช้ลงในฐานข้อมูล

ขั้นตอนที่ 9: การตั้งค่าเทมเพลตอีเมล

เราจะพักจากการเขียนโค้ด PHP และสร้างไฟล์ใหม่สองไฟล์ เพื่อความรวดเร็วและง่ายดาย เราจะใช้เทมเพลตสองแบบที่ฉันรวมไว้ในบทช่วยสอนนี้ ไฟล์สองไฟล์ที่เราจะดูคือ signup_template.html และ signup_template.txt Swift ช่วยให้เรากำหนด HTML รวมถึงเวอร์ชัน TXT ของอีเมลได้ ในกรณีที่ไคลเอ็นต์อีเมลของผู้ใช้ไม่รองรับอีเมล HTML

เปิด signup_template.html หมายเหตุ: คุณสามารถอ่าน HTML ในอีเมลได้ที่ carsonified เราจะไม่แก้ไขไฟล์นี้ ฉันแค่จะอธิบายว่าเกิดอะไรขึ้น จากนั้นคุณค่อยลองเล่นดูเมื่อบทช่วยสอนเสร็จสิ้น ส่วนที่สำคัญที่สุดของไฟล์นี้คือแท็กที่มีลักษณะดังนี้ (USERNAME) และยืนยัน.php?email=(EMAIL)&key=(KEY) เราจะเขียนฟังก์ชันที่ใช้เทมเพลตนี้และแทนที่แท็กเหล่านั้นด้วยตัวแปรจากแบบฟอร์มของเรา

ขั้นตอนที่ 10: ฟังก์ชั่นเทมเพลต

เปิด inc/php/functions.php แล้ววางโค้ดนี้ไว้ข้างใน

ฟังก์ชัน format_email($info, $format)( //set the root $root = $_SERVER["DOCUMENT_ROOT"]."/dev/tutorials/email_signup"; //grab the template content $template = file_get_contents($root" /signup_template.".$format); //แทนที่แท็กทั้งหมด $template = ereg_replace("(USERNAME)", $info["username"], $template); $template = ereg_replace("(EMAIL)", $ ข้อมูล ["อีเมล"], $template); $template = ereg_replace("(KEY)", $info["key"], $template); $template = ereg_replace("(SITEPATH)","http:// site-path.com", $template); //ส่งคืน html ของเทมเพลต return $template; )

format_email() ใช้ตัวแปรสองตัวที่จะใช้ใน index.php อันแรกคืออาร์เรย์ข้อมูลแบบฟอร์มของเรา และอันที่สองคือรูปแบบ เรามีตัวแปรรูปแบบเพื่อให้สามารถใช้อาร์เรย์นี้ซ้ำกับเทมเพลตทั้งเวอร์ชัน HTML และ TXT

ขั้นแรกเราตั้งค่ารูต ซึ่งชี้ไปยังโฟลเดอร์ที่โฮสต์เทมเพลต

ต่อไปเราจะเปิดเนื้อหาของเทมเพลตของเราและกำหนดให้กับตัวแปร

ตอนนี้เราจะใช้ ereg_replace() เพื่อแทนที่แท็ก (USERNAME) ของเราในเทมเพลตด้วยเนื้อหาจากแบบฟอร์มของเรา โดยพื้นฐานแล้วมันเป็นเพียงระบบเทมเพลตที่เรียบง่ายสุด ๆ

สุดท้ายเราจะส่งคืนตัวแปรเทมเพลตที่เก็บ html ทั้งหมด

คำอธิบาย: โดยสรุป format_email() จะเปิดไฟล์เทมเพลตของเรา รับ HTML และกำหนดให้กับตัวแปรของเรา นี่เป็นเพียงวิธีที่สะอาดกว่าในการกำหนด HTML ทั้งหมดในฟังก์ชันนั้นเอง

ขั้นตอนที่ 11: การส่งอีเมล

เราจะเขียนฟังก์ชันอื่นเพื่อจัดการกับ Swift และส่งอีเมล

ฟังก์ชั่น send_email($info)( //จัดรูปแบบอีเมลแต่ละฉบับ $body = format_email($info,"html"); $body_plain_txt = format_email($info,"txt"); //ตั้งค่าเมล $transport = Swift_MailTransport::newInstance (); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance(); $message ->setSubject("ยินดีต้อนรับสู่ชื่อไซต์"); $message ->setFrom(array(" [ป้องกันอีเมล]" => "ชื่อเว็บไซต์")); $message ->setTo(array($info["email"] => $info["username"])); $message ->setBody($body_plain_txt); $message - >addPart($body, "text/html"); $result = $mailer->send($message); return $result; )

เช่นเดียวกับ format_email() send_email() ใช้อาร์เรย์ข้อมูลของเราเป็นตัวแปร ส่วนแรกของฟังก์ชันเรากำหนดตัวแปรสองตัวคือ $body และ $body_plain_text เรากำลังใช้ format_email() เพื่อกำหนดค่า HTML ของเทมเพลตของเราให้กับตัวแปรแต่ละตัว ตอนนี้มาถึงส่วนที่ดี เราได้ตั้งค่าอินสแตนซ์ที่รวดเร็วโดยใช้ Swift_MailTransport:newInstance() จากนั้นตั้งค่าเมลโดยใช้ Swift_Mailer::newInstance($transport) ;

เราสร้างอินสแตนซ์ใหม่ของข้อความ Swift และเริ่มกำหนดตัวแปรบางตัวให้กับอินสแตนซ์นี้ เรากำหนดหัวเรื่องจากอีเมลและที่อยู่อีเมล จากนั้นใช้ setBody() เพื่อกำหนดเวอร์ชันข้อความของอีเมลให้กับอินสแตนซ์ของเมล ในการเพิ่มเวอร์ชัน HTML เราใช้ addPart() ฟังก์ชัน send() จะดูแลการส่งอีเมล จากนั้นเราจะส่งคืนผลลัพธ์ เอาล่ะ เราได้เขียนฟังก์ชันสร้างและส่งอีเมลแล้ว กลับไปที่ index.php และเริ่มสรุปการสมัครหลักกัน

ขั้นตอนที่ 12: เราส่งหรือไม่ เราจะยืนยันหรือไม่?

บิตสุดท้ายของเราควรเป็นคำสั่ง if เพื่อตรวจสอบว่าแถวยืนยันถูกสร้างขึ้นหรือไม่

มาส่งอีเมลและตรวจสอบว่าทุกอย่างเป็นไปด้วยดีหรือไม่

หากยืนยัน ... //รวมคลาส Swift include_once "inc/php/swift/swift_required.php"; //ใส่ข้อมูลลงในอาร์เรย์เพื่อส่งไปยังฟังก์ชัน $info = array("username" => $username, "email" => $email, "key" => $key); //send the email if(send_email($info))( //email send $action["result"] = "success"; array_push($text,"ขอบคุณสำหรับการสมัคร กรุณาตรวจสอบอีเมลของคุณเพื่อยืนยัน!") ; )else( $action["result"] = "error"; array_push($text,"ไม่สามารถส่งอีเมลยืนยันได้"); )

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

เรารวมฟังก์ชัน send_email() ของเราไว้ในคำสั่ง if อีกอันหนึ่ง เช่นเดียวกับการส่งผ่านอาร์เรย์ $info หากมีการส่งอีเมล เราจะกำหนดคุณค่าของความสำเร็จและขอขอบคุณผู้ใช้ที่ลงทะเบียน หากมีข้อผิดพลาด เราจะใช้ตัวแปรที่คุ้นเคย ตอนนี้เราเกือบจะเสร็จสิ้นการสมัครใช้งานแล้ว เหลือเพียงฟังก์ชันสุดท้ายเดียวที่จำเป็นต้องสร้างขึ้น แม้ว่าเราจะกำหนดตัวแปรข้อผิดพลาด/ความสำเร็จและข้อความเหล่านี้ทั้งหมด แต่เราก็ไม่ได้แสดงข้อมูลนี้แก่ผู้ใช้

ย้ายกลับไปที่ Functions.php และวางโค้ดนี้

//ล้างข้อผิดพลาด ฟังก์ชัน show_errors($action)( $error = false; if(!empty($action["result"]))( $error = "

    "."\n"; if(is_array($action["text"]))( //วนซ้ำแต่ละข้อผิดพลาด foreach($action["text"] as $text)( $error .= ""."\ n"; ) )else( //ข้อผิดพลาดเดียว $error .= "

    $การกระทำ

    "; ) $error .= "
"."\n"; ) ส่งคืน $error; )

สิ่งนี้อาจดูน่าสับสน แต่จริงๆ แล้วเป็นเพียงการทำให้ความสำเร็จ/ข้อผิดพลาดของเราดูดีเท่านั้น

ขั้นแรกให้ตรวจสอบว่าอาร์เรย์ว่างเปล่าหรือไม่ เพื่อที่เราจะได้ไม่ต้องรันโค้ดเมื่อไม่จำเป็น

ถัดไปจะสร้างแท็ก ul และใช้ผลลัพธ์เป็นคลาส นี่จะเป็นความสำเร็จหรือข้อผิดพลาดและเป็นความสวยงามเท่านั้น

จากนั้นเราตรวจสอบว่าตัวแปรข้อความเป็นอาร์เรย์หรือเพียงแค่สตริง หากเป็นสตริง เราจะล้อมมันด้วย li หากเป็นอาร์เรย์ เราจะวนซ้ำแต่ละรายการในอาร์เรย์และล้อมมันด้วย li

สุดท้ายเราปิด ul และส่งคืนสตริงทั้งหมด

หากเราย้ายกลับไปที่ index.php และวางโค้ดนี้ทันทีหลังจากรวม header.php แล้ว เราก็จะสามารถสรุปส่วนนี้ได้

ส่วนหัวประกอบด้วย...

คำอธิบายเล็ก ๆ น้อย ๆ อย่างรวดเร็ว เรากำลังนำค่าทั้งหมดของอาร์เรย์การกระทำของเราและส่งผ่านไปยังฟังก์ชัน show_errors() หากมีเนื้อหาใด ๆ ก็จะส่งคืนรายการที่ไม่เรียงลำดับที่ดี

ขั้นตอนที่ 13: การยืนยันผู้ใช้

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

เปิด Confirm.php และวางสิ่งนี้ไว้ระหว่างส่วนหัวรวมและฟังก์ชัน show_errors() ของคุณ

//ตั้งค่าตัวแปร $action = array(); $การกระทำ["ผลลัพธ์"] = null; //การตรวจสอบอย่างรวดเร็ว/ง่าย if(empty($_GET["email"]) || Empty($_GET["key"]))( $action["result"] = "error"; $action["text" ] = "เราขาดตัวแปร โปรดตรวจสอบอีเมลของคุณอีกครั้ง"; ) if($action["result"] != "error")( //ล้างตัวแปร $email = mysql_real_escape_string($_GET["email"] ); $key = mysql_real_escape_string($_GET["key"]); // ตรวจสอบว่าคีย์อยู่ในฐานข้อมูลหรือไม่ $check_key = mysql_query("SELECT * FROM `confirm` WHERE `email` = "$email" AND `key ` = "$key" LIMIT 1") or die(mysql_error()); if(mysql_num_rows($check_key) != 0)( //รับข้อมูลยืนยัน $confirm_info = mysql_fetch_assoc($check_key); //ยืนยันอีเมล และอัพเดตฐานข้อมูลผู้ใช้ $update_users = mysql_query("UPDATE `users` SET `active` = 1 WHERE `id` = "$confirm_info" LIMIT 1") or die(mysql_error()); //ลบแถวยืนยัน $delete = mysql_query("DELETE FROM `confirm` WHERE `id` = "$confirm_info" LIMIT 1") or die(mysql_error()); if($update_users)( $action["result"] = "success"; $action ["text"] = "ผู้ใช้ได้รับการยืนยันแล้ว ขอบคุณ!"; )else( $action["result"] = "error"; $action["text"] = "ไม่สามารถอัปเดตผู้ใช้ได้ เหตุผล: ".mysql_error();; ) )else( $ action["result"] = "error"; $action["text"] = "รหัสและอีเมลไม่อยู่ในฐานข้อมูลของเรา"; ) )

สิ่งเหล่านี้ส่วนใหญ่ควรดูคุ้นเคยมาก ดังนั้นฉันจะข้ามไปข้างหน้าและตรวจสอบว่ารหัสอยู่ในส่วนฐานข้อมูลหรือไม่

ขอย้ำอีกครั้งว่า เราใช้ mysql_query() เพื่อรับแถวใดๆ ในฐานข้อมูลที่อีเมลและคีย์เท่ากับคีย์ที่อีเมลผู้ใช้ให้มา

เราใช้ mysql_num_rows() เพื่อตรวจสอบว่าจำนวนแถวที่ส่งคืนมากกว่า 0 หรือไม่

หากอีเมลและคีย์อยู่ในฐานข้อมูล เราจะดึงข้อมูลทั้งหมดจากฐานข้อมูลโดยใช้ mysql_fetch_assoc()

ขณะนี้ผู้ใช้ได้ยืนยันบัญชีของเขาแล้ว เราจำเป็นต้องอัปเดตฐานข้อมูลและตั้งค่าแถวที่ใช้งานอยู่เป็น 1

เราใช้ mysql_query() อีกครั้ง แต่แทนที่จะใช้ INSERT เราใช้ UPDATE เพื่ออัปเดตแถวที่ใช้งานอยู่เป็น 1 โดยที่ ID ผู้ใช้เหมือนกับ ID ผู้ใช้ปัจจุบันของเรา

เพื่อล้างข้อมูลทุกอย่าง เราใช้ mysql_query() และ DELETE เพื่อลบแถวการยืนยันออกจากฐานข้อมูล ซึ่งจะทำให้แน่ใจได้ว่าผู้ใช้ไม่สามารถกลับมาที่หน้านี้และยืนยันอีกครั้งได้ และยังช่วยรักษาฐานข้อมูลให้สวยงามและสะอาดอีกด้วย

บทสรุป

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

บันทึกสุดท้าย

  • ฉันใช้ Swift Mailer เป็นสคริปต์การปรับใช้อีเมลซึ่งสามารถดาวน์โหลดได้ที่นี่: http://swiftmailer.org/
  • ฉันยังใช้รูปแบบปุ่มที่ Zurb มอบให้ อย่าลืมลองดูและมอบความรักให้พวกเขาบ้าง http://www.zurb.com/blog_uploads/0000/0485/buttons-02.html

ขอบคุณสำหรับการอ่านและอย่าลืมเยี่ยมชมฉันใน

มาสร้างหน้าลงทะเบียนหลายไซต์ของเราเองแทน wp-signup.php มาตรฐาน

ในการติดตั้ง WordPress ทั่วไป หน้าลงทะเบียน (เข้าสู่ระบบ รีเซ็ตรหัสผ่าน) จะแสดงในไฟล์ wp-login.php

  • /wp-login.php - การอนุญาต
  • /wp-login.php?action=register - การลงทะเบียน
  • /wp-login.php?action=lostpassword - รีเซ็ตรหัสผ่าน

มีเงื่อนไขแยกต่างหากสำหรับหลายไซต์ใน wp-login.php ดังนั้น เมื่อคุณคลิกที่ /wp-login.php?action=register บนหลายไซต์ WordPress จะเปลี่ยนเส้นทางไปยังหน้า /wp-signup.php ในหลายธีม หน้าเว็บดูไม่น่าดึงดูดนัก ดังนั้นเราจะสร้างธีมขึ้นมาเอง

เว็บไซต์หลักของเครือข่าย

ตามค่าเริ่มต้น WordPress จะเปิดหน้าลงทะเบียน (wp-signup.php) บนโดเมนหลัก (เว็บไซต์) ของเว็บ อย่างไรก็ตาม คุณสามารถสร้างหน้าลงทะเบียนแยกกันสำหรับแต่ละไซต์ในเครือข่ายได้ แม้ว่าจะมีธีมที่แตกต่างกันก็ตาม เราจะพิจารณากรณีที่ไซต์ทั้งหมดในเครือข่ายมีหน้าการลงทะเบียนของตนเอง แต่ใช้ธีมเดียวกันและไซต์ต่างกันเพียงภาษาเท่านั้น หากใช้ธีมที่แตกต่างกัน จะต้องมีโค้ดเพิ่มเติม

ฟังก์ชั่น.php?

เลขที่ ดูเหมือนว่าชื่อของไฟล์นี้จะถูกกล่าวถึงในทุกบทความ WordPress ในกรณีของเรา เมื่อคำนึงถึงข้อเท็จจริงที่ว่าฟังก์ชันการลงทะเบียนได้รับการออกแบบมาสำหรับหลาย ๆ ไซต์ จึงสมเหตุสมผลที่จะย้ายไปยังปลั๊กอิน MU ที่โหลดเมื่อเปิดไซต์ใด ๆ

การพูดนอกเรื่องโคลงสั้น ๆ

เป็นที่น่าสังเกตว่ามีการโหลดปลั๊กอิน MU ก่อนปลั๊กอินปกติและก่อนที่แกน WordPress จะโหลดเต็ม ดังนั้นการเรียกใช้ฟังก์ชันบางอย่างอาจทำให้เกิดข้อผิดพลาดร้ายแรงใน PHP ได้ การโหลด "แต่เนิ่นๆ" นี้มีข้อดี สมมติว่าภายในธีมใดๆ ที่คุณไม่สามารถยึดติดกับการกระทำบางอย่างที่ได้ผลก่อนที่ไฟล์ function.php จะถูกโหลดจากธีมเสียอีก ตัวอย่างนี้คือการดำเนินการจากปลั๊กอิน Jetpack ในรูปแบบ jetpack_module_loaded_ related-posts (โพสต์ที่เกี่ยวข้องคือชื่อของโมดูล) ซึ่งเป็นไปได้ที่จะติดตามกิจกรรมของโมดูลใน Jetpack การดำเนินการนี้ไม่สามารถ "แนบ" จากไฟล์ธีมได้ เนื่องจากการดำเนินการได้เริ่มทำงานแล้วก่อนที่จะโหลดธีม - ปลั๊กอินจะถูกโหลดก่อนธีม คุณสามารถดูรูปภาพทั่วไปของลำดับการโหลด WordPress ได้ที่หน้าการอ้างอิงการดำเนินการใน codex

สั่งซื้อไฟล์

ปลั๊กอิน MU สามารถมีไฟล์จำนวนเท่าใดก็ได้และโครงสร้างใดๆ ก็ตามที่ดูสมเหตุสมผลสำหรับคุณ ฉันตามลำดับชั้นเช่นนี้:

|-mu-plugins |-|-load.php |-|-|-selena-network |-|-|-|-signup |-|-|-|-|-plugin.php |-|-|-| -|-... |-|-|-|-jetpack |-|-|-|-|-plugin.php

ในไฟล์ load.php มี "ปลั๊กอิน" ที่จำเป็นทั้งหมดสำหรับเครือข่ายของเราเชื่อมต่ออยู่:

// โหลด Traslates สำหรับส่วนเสริมทั้งหมด load_muplugin_textdomain("selena_network", "/selena-network/ languages/"); // การลงทะเบียนเครือข่ายต้องใช้ WPMU_PLUGIN_DIR "/selena-network/signup/plugin.php"; // ปลั๊กอินอื่น // ต้องการ WPMU_PLUGIN_DIR ...

โฟลเดอร์ปลั๊กอินจะถูกจัดเก็บไว้ในโฟลเดอร์ selena-network โดยแต่ละโฟลเดอร์จะมี Plugin.php ของตัวเอง ซึ่งเรารวมไว้ใน load.php สิ่งนี้ให้ความยืดหยุ่นและความสามารถในการปิดใช้งานและเปิดใช้งานบางสิ่งได้อย่างรวดเร็ว

URL หน้าลงทะเบียน

ตัวกรอง wp_signup_location ใช้เพื่อระบุที่อยู่หน้าลงทะเบียน สามารถพบได้ในไฟล์ wp-login.php และมีหน้าที่เปลี่ยนเส้นทางไปยัง wp-signup.php

กรณี "register" : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))); ออก;

มาเพิ่มฟังก์ชันของเราใน mu-plugins/selena-network/signup/plugin.php ซึ่งจะให้ที่อยู่ของหน้าการลงทะเบียนบนไซต์ปัจจุบัน:

ฟังก์ชั่น selena_network_signup_page ($url) ( return home_url () . "/signup/"; ) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network เป็นคำนำหน้าที่ฉันใช้ในชื่อของฟังก์ชันทั้งหมดภายในปลั๊กอิน MU บนไซต์ของฉันเพื่อหลีกเลี่ยงการชนกัน ควรแทนที่ด้วยคำนำหน้าเฉพาะของคุณเอง เพิ่มลำดับความสำคัญของตัวกรอง 99 เนื่องจากปลั๊กอินบางตัว เช่น bbPress และ BuddyPress สามารถเขียนทับที่อยู่นี้ด้วยตนเองได้ (ปลั๊กอิน MU ถูกโหลดก่อนปลั๊กอินปกติ ดูด้านบน) โปรดทราบว่า home_url() ถูกใช้แทน network_site_url() เพื่อให้ผู้เข้าชมอยู่ในโดเมนเดียวกัน URL ใดก็ได้ที่สามารถใช้เป็นที่อยู่ได้

การสร้างเพจ

ตอนนี้เรามาสร้างเพจด้วยที่อยู่ site.com/signup/ ผ่านอินเทอร์เฟซปกติ และในโฟลเดอร์ธีมย่อย เทมเพลตสำหรับเพจใหม่ของเราคือ page-signup.php แทนที่จะใช้คำว่า "สมัคร" คุณสามารถใช้ ID ที่ไม่ซ้ำใครได้

ภายในเทมเพลตใหม่ คุณต้องเรียกใช้ฟังก์ชัน selena_network_signup_main() ซึ่งจะแสดงแบบฟอร์มลงทะเบียน

เป็นที่น่าสังเกตว่ากระบวนการทั้งหมดที่มีเทมเพลตนั้นเป็นทางเลือกและคุณสามารถสร้างรหัสย่อของคุณเองแทน ซึ่งจะเรียกใช้ฟังก์ชัน selena_network_signup_main()

wp-signup.php และ wp-activate.php

ตอนนี้เรามาสร้างฟังก์ชั่นที่จะแสดงแบบฟอร์มลงทะเบียนกันดีกว่า ในการดำเนินการนี้ ให้คัดลอกไฟล์ wp-signup.php และ wp-activate.php จากรูทของ WordPress ไปยัง mu-plugings/selena-network/signup/ (และอย่าลืมรวมไว้ใน mu-plugins/selena-network /signup/plugin.php) . การจัดการไฟล์เพิ่มเติมเป็นเรื่องยากมากและอธิบายได้ยาวนาน ดังนั้นคุณจะต้องดำเนินการด้วยตนเอง ฉันจะอธิบายสิ่งที่ต้องทำและเผยแพร่ไฟล์ต้นฉบับของโครงการของฉัน:

  1. ที่จุดเริ่มต้นของไฟล์ ลบทั้งหมด need การเรียกใช้ฟังก์ชัน และโค้ดอื่น ๆ ที่อยู่นอกฟังก์ชัน
  2. เปลี่ยนชื่อฟังก์ชันทั้งหมดโดยเพิ่มคำนำหน้าเฉพาะให้กับชื่อ
  3. ล้อมส่วนล่างของโค้ด wp-signup.php ในฟังก์ชัน selena_network_signup_main และเขียน global $active_signup ที่จุดเริ่มต้น .
  4. แทนที่เค้าโครงด้วยเค้าโครงของคุณเองในตำแหน่งที่ถูกต้อง

ภายใน wp-activate.php คุณต้องทำสิ่งเดียวกัน:

  1. ลบโค้ดทั้งหมดที่อยู่นอกฟังก์ชัน ตัดเค้าโครงในฟังก์ชันแยกต่างหาก
  2. เปลี่ยนเค้าโครงตามความจำเป็น

ไฟล์ wp-activate.php มีหน้าที่รับผิดชอบในหน้าการเปิดใช้งานบัญชี เช่นเดียวกับหน้าการลงทะเบียน คุณจะต้องสร้างเทมเพลตแยกต่างหาก ซึ่งภายในนั้นคุณต้องเรียกใช้ฟังก์ชันจากไฟล์ wp-activate.php

การส่งอีเมลเปิดใช้งาน

หน้าลงทะเบียนจะส่งอีเมลไปยังผู้เยี่ยมชมพร้อมลิงก์เพื่อเปิดใช้งานบัญชี ตามค่าเริ่มต้น สิ่งนี้จะถูกจัดการโดยฟังก์ชัน wpmu_signup_user_notification() จากไฟล์ ms-functions.php ฟังก์ชั่นของมันสามารถยืมมาเพื่อฟังก์ชั่นของมันได้ เหตุผลที่คุณต้องหยุดใช้คุณสมบัตินี้ก็คือมันส่งลิงก์เปิดใช้งานบัญชีจาก wp-activate.php คุณสามารถ "ปิด" ฟังก์ชั่นนี้ได้โดยใช้ตัวกรอง wpmu_signup_user_notification โดยกำหนดให้เป็นเท็จ (หากยังไม่เสร็จสิ้น จดหมายเปิดใช้งานจะถูกส่งสองครั้ง โอเค จริง ๆ แล้วมีตัวอักษรสองตัวที่แตกต่างกัน)

ฟังก์ชั่น armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // รหัสจาก wpmu_signup_user_notification() ฟังก์ชั่น wp_mail($user_email, wp_specialchars_decode($subject), $message, $message_headers) ; กลับเท็จ; ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

ด้วยเหตุนี้ หน้าลงทะเบียนในธีม Selena จึงดูสะอาดตาและเป็นระเบียบมากขึ้น

บทสรุป

มีวิธีอื่น ๆ อีกมากมายที่ไม่ถูกต้องบนอินเทอร์เน็ตว่าจะทำสิ่งเดียวกันได้อย่างไร - การเปลี่ยนเส้นทาง Apache, แบบฟอร์ม AJAX ที่จะไม่ทำงานหากไม่มี Java Script เป็นต้น ฉันไม่ชอบทั้งหมดนี้เลยดังนั้นฉันจึงพยายามทำอย่างถูกต้องเหมือน เป็นไปได้บนเว็บไซต์ของฉันเอง

ฉันทราบว่าคุณควรแก้ไขไฟล์อย่างระมัดระวังและพยายามอย่าเบี่ยงเบนไปจากไฟล์ต้นฉบับมากเกินไป ดังนั้นในอนาคตหาก WordPress เปลี่ยนไฟล์ wp-signup.php และ wp-activate.php การเปรียบเทียบจะง่ายกว่า พวกเขาเพื่อค้นหาการเปลี่ยนแปลง

อย่าลืมดูซอร์สโค้ดของฟังก์ชันทั้งหมดที่อธิบายไว้ข้างต้น เพื่อทำความเข้าใจอย่างถ่องแท้ว่าเกิดอะไรขึ้นภายในโค้ดและอย่างไร

โบนัส. การป้องกันสแปมเมอร์

แม้แต่ไซต์ WordPress ที่เล็กที่สุดก็มักจะถูกโจมตีด้วยการลงทะเบียนสแปม คุณสามารถเขียนเงื่อนไขที่ไม่มีที่สิ้นสุดสำหรับการกรองบอท ซึ่งมักจะเหมือนกับความพยายามในการสร้างปัญญาประดิษฐ์ 🙂 ในกรณีของหลายไซต์ การเปลี่ยนเส้นทางตามปกติใน Apache ช่วยฉันได้มาก โดยที่ฉันขอให้ออก 404 เมื่อเปิด /wp-signup php และ /wp-acitvate.php (ฉันไม่ใช่ผู้เชี่ยวชาญด้านการตั้งค่า Apache ดังนั้นกฎของฉันจึงอาจไม่ถูกต้องนัก)

RewriteEngine บน RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # กฎเริ่มต้นของ WordPress :) # ... # END WordPress

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

โฆษณา