Man regcomp(3): ฟังก์ชันนิพจน์ทั่วไป POSIX ดาวน์โหลด Reg Organizer - การทำความสะอาดและการเพิ่มประสิทธิภาพระบบ การรายงานข้อผิดพลาด POSIX

สวัสดีทุกคน วันนี้ผมจะมาเล่าถึงโปรแกรม เร็ก ออแกไนเซอร์- เป็นโปรแกรมที่มีฟังก์ชั่นมากมายเพื่อรองรับระบบปฏิบัติการ Windows อย่างเต็มรูปแบบ Reg Organizer เหมาะสำหรับ Windows XP, Vista, 7, 8.1 และ 10 เมื่อใช้โปรแกรมนี้ คุณสามารถเพิ่มความเร็วและเพิ่มประสิทธิภาพระบบปฏิบัติการบนคอมพิวเตอร์ของคุณ และเพิ่มพื้นที่ว่างในทรัพยากรเพิ่มเติม

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

Reg Organizer ทำอะไรได้บ้าง?

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

คุณสามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับคุณสมบัติทั้งหมดของ Reg Organizer ได้ในวิดีโอของฉัน:


คุณสามารถดาวน์โหลด Reg Organizer ได้จากเว็บไซต์อย่างเป็นทางการโดยใช้ปุ่มดาวน์โหลดใดก็ได้

#รวม
#รวม
int regcomp (regex_t *ก่อนกำหนด, const ถ่าน *นิพจน์ทั่วไป,นานาชาติแฟล็ก);
int regexec(const regex_t *ก่อนกำหนด, const ถ่าน *เชือก, ขนาด_tไม่ตรงกัน,
regmatch_tจับคู่,นานาชาติธง);
ข้อผิดพลาด size_t (intรหัสผิดพลาด, const regex_t *ก่อนกำหนด, ถ่าน *ผิดพลาด,
ขนาด_terrbuf_size);
โมฆะ regfree (regex_t *ก่อนกำหนด);

คำอธิบาย

รวบรวมนิพจน์ทั่วไป POSIX

การทำงาน regcomp() ใช้เพื่อรวบรวมนิพจน์ทั่วไปให้อยู่ในรูปแบบที่เหมาะสมสำหรับการค้นหาครั้งต่อไปโดยใช้ regexec().

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

การค้นหาทั้งหมด การแสดงออกปกติจะต้องดำเนินการโดยใช้เทมเพลตบัฟเฟอร์ที่คอมไพล์แล้ว regexec() จะต้องถูกเรียกด้วยที่อยู่ของเทมเพลตบัฟเฟอร์ที่เริ่มต้นโดยฟังก์ชันเสมอ regcomp().

ความหมาย แฟล็กอาจประกอบด้วยระดับบิต หรือค่าต่อไปนี้เป็นศูนย์หรือมากกว่า:

REG_EXTENDEDใช้ไวยากรณ์นิพจน์ทั่วไปแบบขยาย POSIX ในระหว่างการตีความ นิพจน์ทั่วไป- หากไม่ได้เปิดใช้งานแฟล็กนี้ ระบบจะใช้ไวยากรณ์นิพจน์ทั่วไปแบบง่าย POSIX REG_ICASEละเว้นกรณี การค้นหาครั้งต่อไป regexec() การใช้รูปแบบบัฟเฟอร์นี้จะไม่คำนึงถึงขนาดตัวพิมพ์ REG_NOSUBไม่รายงานตำแหน่งการแข่งขัน ตัวเลือก ไม่ตรงกันและ จับคู่สำหรับ regexec() จะถูกละเว้นหากเทมเพลตบัฟเฟอร์ที่กำหนดถูกคอมไพล์โดยเปิดใช้งานแฟล็กนี้ REG_NEWLINEโอเปอเรเตอร์ที่ตรงกันกับอักขระใดๆ จะไม่ตรงกับอักขระขึ้นบรรทัดใหม่

รายการอักขระที่ไม่ตรงกัน ( [^...] ) ที่ไม่มีอักขระขึ้นบรรทัดใหม่จะไม่เหมือนกับการขึ้นบรรทัดใหม่

ตัวดำเนินการเปรียบเทียบตามจุดเริ่มต้นของสตริง ( ^ ) เกิดขึ้นพร้อมกับ บรรทัดว่างทันทีหลังจากขึ้นบรรทัดใหม่ไม่ว่าอย่างไรก็ตาม ธง, ธงการดำเนินการ regexec(), บรรจุ REG_NOTBOL.

ตัวดำเนินการเปรียบเทียบที่สิ้นสุดบรรทัด ($) จะจับคู่สตริงว่างจนถึงอักขระเริ่มต้นบรรทัด ไม่ว่าจะเกิดอะไรขึ้นก็ตาม ธงประกอบด้วย REG_NOTEOL.

เปรียบเทียบกับนิพจน์ทั่วไป POSIX

การทำงาน regexec() ใช้เพื่อเปรียบเทียบสตริงที่สิ้นสุดด้วยค่า null กับรูปแบบบัฟเฟอร์ที่ประมวลผลล่วงหน้า ก่อนกำหนด- ข้อโต้แย้ง ไม่ตรงกันและ จับคู่ใช้ในการให้ข้อมูลเกี่ยวกับตำแหน่งของการแข่งขันใดๆ ความหมาย ธงสามารถเป็นบิตได้ หรือค่าหนึ่งหรือทั้งสองค่า REG_NOTBOLและ REG_NOTEOL- ค่าเหล่านี้จะกำหนดพฤติกรรมของกระบวนการเปรียบเทียบตามที่อธิบายไว้ด้านล่าง REG_NOTBOLตัวดำเนินการเปรียบเทียบที่จุดเริ่มต้นของสตริงจะล้มเหลวเสมอ (แต่โปรดดูแฟล็กการคอมไพล์ที่อธิบายไว้ข้างต้น REG_NEWLINE- ธงนี้สามารถใช้ได้เมื่อ regexec() แยกส่วนของสตริงถูกส่ง และจุดเริ่มต้นของสตริงในกรณีนี้ไม่ควรตีความว่าเป็นจุดเริ่มต้นของบรรทัดใหม่ REG_NOTEOLตัวดำเนินการเปรียบเทียบจุดสิ้นสุดบรรทัดจะล้มเหลวเสมอ (แต่โปรดดูแฟล็กการคอมไพล์ที่อธิบายไว้ข้างต้น REG_NEWLINE).

ไบต์ออฟเซ็ต

ถ้า REG_NOSUBไม่ได้ตั้งค่าเมื่อรวบรวมเทมเพลตบัฟเฟอร์ สามารถรับข้อมูลเกี่ยวกับตำแหน่งของการจับคู่ได้ ความหมาย จับคู่จะต้องกำหนดให้มีอย่างน้อยที่สุด ไม่ตรงกันองค์ประกอบ พวกเขากำลังเติมเต็ม regexec() ที่อยู่ของการแข่งขันแบบอินไลน์ ออฟเซ็ตของนิพจน์ย่อยที่เริ่มต้นด้วย ฉัน- วงเล็บเปิดเก็บไว้ใน แมตช์[i]- ที่อยู่การจับคู่ของนิพจน์ทั่วไปทั้งหมดจะถูกเก็บไว้ใน จับคู่(โปรดทราบว่าหากต้องการคืนค่าชดเชยการจับคู่ เอ็นการแสดงออกย่อยความหมาย ไม่ตรงกันจะต้องไม่น้อย ยังไม่มี+1- องค์ประกอบโครงสร้างที่ไม่ได้ใช้จะมีค่าเป็น -1

โครงสร้าง regmatch_tซึ่งเป็นประเภท จับคู่กำหนดไว้ใน :

โครงสร้าง Typedef ( regoff_t rm_so; regoff_t rm_eo; ) regmatch_t;

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

การรายงานข้อผิดพลาด POSIX

การทำงาน ข้อผิดพลาดอีกครั้งใช้ในการแปลงรหัสข้อผิดพลาดที่อาจได้รับจาก regcomp() และ regexec() ลงในบรรทัดข้อความแสดงข้อผิดพลาด

ใน ข้อผิดพลาดอีกครั้งส่งแล้ว: รหัสข้อผิดพลาด รหัสผิดพลาด, รูปแบบบัฟเฟอร์ ก่อนกำหนดตัวชี้ไปยังบัฟเฟอร์สตริงอักขระ ผิดพลาดและขนาดบัฟเฟอร์แถว errbuf_size- ฟังก์ชันส่งคืนขนาด ผิดพลาดซึ่งจำเป็นต้องจัดเก็บข้อความแสดงข้อผิดพลาดเป็นสตริงที่สิ้นสุดด้วยค่า null ถ้าและ ผิดพลาด, และ errbuf_sizeไม่เท่ากับศูนย์แล้ว ผิดพลาดเติมก่อน errbuf_size - 1อักขระข้อความแสดงข้อผิดพลาดและลงท้ายด้วยไบต์ว่าง ("\0")

การเพิ่มบัฟเฟอร์เทมเพลต POSIX

การทำงาน ลงทะเบียนฟรี() เพิ่มหน่วยความจำที่จัดสรรให้กับเทมเพลตบัฟเฟอร์ ก่อนกำหนดระหว่างขั้นตอนการคอมไพล์โดยใช้ regcomp().

มูลค่าการส่งคืน

การทำงาน regcomp() คืนค่าศูนย์เมื่อคอมไพล์สำเร็จหรือรหัสข้อผิดพลาด

การทำงาน regexec() ส่งคืนค่าศูนย์ในการแข่งขันหรือ REG_NOMATCHหากไม่มีการแข่งขัน

ข้อผิดพลาด

การทำงาน regcomp() อาจส่งคืนข้อผิดพลาดต่อไปนี้: REG_BADBRการใช้ตัวดำเนินการลิงก์ย้อนกลับไม่ถูกต้อง REG_BADPATการใช้ตัวดำเนินการเทมเพลตไม่ถูกต้อง เช่น ตัวดำเนินการกลุ่มหรือรายการ REG_BADRPTการใช้ตัวดำเนินการซ้ำไม่ถูกต้อง เช่น การใช้ "*" เป็นอักขระตัวแรก REG_EBRACEวงเล็บที่ไม่ได้จับคู่ในตัวดำเนินการช่วงเวลา REG_EBRACKเลิกจับคู่ วงเล็บเหลี่ยมในคำสั่งรายการ REG_ECOLLATEองค์ประกอบการเรียงลำดับไม่ถูกต้อง REG_ECTYPEชื่อคลาสตัวละครที่ไม่รู้จัก REG_EENDข้อผิดพลาดที่อาจเกิดขึ้น ไม่ได้กำหนดไว้ใน POSIX.2 REG_EESCAPEแบ็กสแลชต่อท้าย REG_EPARENวงเล็บที่ไม่ได้จับคู่ในตัวดำเนินการจัดกลุ่ม REG_ERANGEการใช้ตัวดำเนินการพื้นที่ไม่ถูกต้อง: ตัวอย่างเช่น จุดสิ้นสุดของพื้นที่ปรากฏขึ้นก่อนจุดเริ่มต้น REG_ESIZEนิพจน์ทั่วไปที่คอมไพล์แล้วต้องมีรูปแบบบัฟเฟอร์ที่มีขนาดใหญ่กว่า 64 KB สิ่งนี้ไม่ได้กำหนดไว้ใน POSIX.2 REG_ESPACEรูทีนนิพจน์ทั่วไปมีหน่วยความจำไม่เพียงพอ REG_ESUBREGการอ้างอิงย้อนกลับไปยังนิพจน์ย่อยไม่ถูกต้อง

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

1. เริ่มต้นด้วยการสร้างตารางผู้ใช้ในฐานข้อมูล- มันจะมีข้อมูลผู้ใช้ (เข้าสู่ระบบและรหัสผ่าน) ไปที่ phpmyadmin กัน (หากคุณกำลังสร้างฐานข้อมูลบนพีซีของคุณ) http://localhost/phpmyadmin/- สร้างตาราง ผู้ใช้มันจะมี 3 ช่อง

ฉันสร้างมันขึ้นมาใน ฐานข้อมูล mysqlคุณสามารถสร้างในฐานข้อมูลอื่นได้ จากนั้นตั้งค่าตามในรูป:

2. จำเป็นต้องมีการเชื่อมต่อกับตารางนี้มาสร้างไฟล์ bd.php- เนื้อหา:

$db = mysql_connect("เซิร์ฟเวอร์ MySQL ของคุณ", "เข้าสู่ระบบสำหรับเซิร์ฟเวอร์นี้", "รหัสผ่านสำหรับเซิร์ฟเวอร์นี้");
mysql_select_db ("ชื่อฐานข้อมูลที่เรากำลังเชื่อมต่อ", $db);
?>

ในกรณีของฉันดูเหมือนว่านี้:

$db = mysql_connect("localhost", "ผู้ใช้", "1234");
mysql_select_db("mysql",$db);
?>

บันทึก bd.php.
ยอดเยี่ยม! เรามีตารางในฐานข้อมูลและการเชื่อมต่อกับมัน ตอนนี้คุณสามารถเริ่มสร้างเพจที่ผู้ใช้จะทิ้งข้อมูลไว้

3. สร้างไฟล์ reg.php พร้อมเนื้อหา (ความคิดเห็นทั้งหมดภายใน):



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


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


















4. สร้างไฟล์ซึ่งจะป้อนข้อมูลลงในฐานข้อมูลและบันทึกผู้ใช้ save_user.php(ความคิดเห็นภายใน):



{
}
//หากมีการเข้าสู่ระบบและรหัสผ่าน เราจะประมวลผลเพื่อให้แท็กและสคริปต์ไม่ทำงาน คุณไม่มีทางรู้ว่าคนอื่นจะป้อนข้อมูลอะไร


//ลบช่องว่างเพิ่มเติม
$login = ตัด($login);
$password = ตัด($password);
//เชื่อมต่อกับฐานข้อมูล
// ตรวจสอบการมีอยู่ของผู้ใช้ที่มีการเข้าสู่ระบบเดียวกัน
$result = mysql_query("เลือก id จากผู้ใช้ WHERE login="$login"",$db);
ถ้า (!empty($myrow["id"])) (
exit("ขออภัย ข้อมูลเข้าสู่ระบบที่คุณป้อนมีการลงทะเบียนแล้ว กรุณาป้อนข้อมูลเข้าสู่ระบบอื่น");
}
// หากไม่มีสิ่งนั้นให้บันทึกข้อมูล
$result2 = mysql_query("INSERT INTO users (login,password) VALUES("$login","$password")");
//ตรวจสอบว่ามีข้อผิดพลาดหรือไม่
ถ้า ($result2=="TRUE")
{
echo "คุณลงทะเบียนสำเร็จแล้ว! ตอนนี้คุณสามารถเข้าสู่เว็บไซต์ หน้าแรก";
}
อื่น(
echo "เกิดข้อผิดพลาด! คุณยังไม่ได้ลงทะเบียน";
}
?>

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

// ขั้นตอนทั้งหมดทำงานในเซสชัน เป็นที่เก็บข้อมูลของผู้ใช้ในขณะที่เขาอยู่ในไซต์ มันสำคัญมากที่จะเปิดตัวตั้งแต่ต้นหน้า!!!
session_start();
?>


หน้าแรก


หน้าแรก











ลงทะเบียน



// ตรวจสอบว่าตัวแปรล็อกอินและรหัสผู้ใช้ว่างเปล่าหรือไม่
ถ้า (ว่างเปล่า($_SESSION["เข้าสู่ระบบ"]) หรือว่างเปล่า($_SESSION["id"]))
{
// ถ้าว่างแล้วเราจะไม่แสดงลิงค์
echo "คุณเข้าสู่ระบบในฐานะแขก
ลิงค์นี้ใช้ได้เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้น";
}
อื่น
{

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

6. มีไฟล์เหลือพร้อมการยืนยันการเข้าสู่ระบบและรหัสผ่านที่ป้อน testreg.php (ความคิดเห็นภายใน):

session_start();// ขั้นตอนทั้งหมดทำงานในเซสชัน เป็นที่เก็บข้อมูลของผู้ใช้ในขณะที่เขาอยู่ในไซต์ มันสำคัญมากที่จะเปิดตัวตั้งแต่ต้นหน้า!!!
if (isset($_POST["login"])) ( $login = $_POST["login"]; if ($login == "") ( unset($login);) ) //ป้อนข้อมูลเข้าสู่ระบบที่ป้อนโดย ผู้ใช้เข้าสู่ตัวแปร $login หากว่างเปล่าให้ทำลายตัวแปร
if (isset($_POST["password"])) ( $password=$_POST["password"]; if ($password =="") ( unset($password);) )
//ใส่รหัสผ่านที่ผู้ใช้ป้อนลงในตัวแปร $password หากว่างเปล่าให้ทำลายตัวแปร
if (empty($login) or Empty($password)) //หากผู้ใช้ไม่ได้เข้าสู่ระบบหรือรหัสผ่าน เราจะแสดงข้อผิดพลาดและหยุดสคริปต์
{
exit("คุณไม่ได้กรอกข้อมูลทั้งหมด กลับไปกรอกข้อมูลให้ครบทุกช่อง!");
}
//หากมีการเข้าสู่ระบบและรหัสผ่าน เราจะประมวลผลเพื่อให้แท็กและสคริปต์ไม่ทำงาน คุณไม่มีทางรู้ว่าคนอื่นจะป้อนข้อมูลอะไร
$login = แถบสแลช($login);
$login = htmlspecialchars($login);
$password = แถบสแลช($password);
$password = htmlspecialchars($รหัสผ่าน);
//ลบช่องว่างเพิ่มเติม
$login = ตัด($login);
$password = ตัด($password);
//เชื่อมต่อกับฐานข้อมูล
include("bd.php");// ไฟล์ bd.php จะต้องอยู่ในโฟลเดอร์เดียวกันกับไฟล์อื่นๆ ทั้งหมด หากไม่เป็นเช่นนั้น ให้เปลี่ยนพาธ

$result = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //ดึงข้อมูลจากฐานข้อมูลทั้งหมดเกี่ยวกับผู้ใช้ที่มีการเข้าสู่ระบบที่ป้อน
$myrow = mysql_fetch_array($ผลลัพธ์);
ถ้า (ว่าง($myrow["รหัสผ่าน"]))
{
//หากไม่มีผู้ใช้ที่มีการเข้าสู่ระบบที่ป้อน
}
อื่น(
//ถ้ามีอยู่ให้ตรวจสอบรหัสผ่าน
ถ้า ($myrow["รหัสผ่าน"]==$รหัสผ่าน) (
//หากรหัสผ่านตรงกัน เราจะเปิดเซสชันสำหรับผู้ใช้! ขอแสดงความยินดีด้วย เขาเข้าแล้ว!
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//ข้อมูลนี้ถูกใช้บ่อยมาก ดังนั้นผู้ใช้ที่เข้าสู่ระบบจะ “นำติดตัวไปด้วย”
echo "คุณเข้าสู่เว็บไซต์สำเร็จแล้ว! หน้าแรก";
}
อื่น(
//หากรหัสผ่านไม่ตรงกัน

ออก ("ขออภัย การเข้าสู่ระบบหรือรหัสผ่านที่คุณป้อนไม่ถูกต้อง");
}
}
?>

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

ฉันตรวจสอบทุกอย่างแล้ว มันใช้งานได้ดี!

ขั้นแรก เราจะปรับปรุงหน้าการลงทะเบียนโดยเพิ่มความสามารถในการอัปโหลดอวตาร รูปภาพต้นฉบับจะต้องอยู่ในรูปแบบ jpg, gif หรือ png และไม่ควรเกิน 2 MB ไม่ต้องกังวล หลังจากที่สคริปต์ถูกบีบอัด ขนาดอวตารจะอยู่ที่ประมาณ 3 kb และรูปแบบ jpg เปิดหน้า เร็กPHPและเพิ่มลงในแท็ก < รูปร่าง> เส้น enctype="หลายส่วน/แบบฟอร์มข้อมูล"ดังตัวอย่าง:


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










ตอนนี้มาบันทึกกันเถอะ reg.php

2.จากนั้นคุณจะต้องสร้างฟิลด์อื่นในตาราง ผู้ใช้- ไปกันเลย phpmyadmin.php, เลือก ฐานข้อมูลที่ต้องการและโต๊ะ


เราตั้งค่าทั้งหมดตามในรูป:

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

3.ไปที่ไฟล์ บันทึก_ ผู้ใช้. PHPและเพิ่มรหัสต่อไปนี้หลังจากลบช่องว่างออกจากข้อมูลเข้าสู่ระบบและรหัสผ่าน:

//ลบช่องว่างเพิ่มเติม
$login = ตัด($login);

// เพิ่มใหม่ ********************************************

//เพิ่มการตรวจสอบความยาวของการเข้าสู่ระบบและรหัสผ่าน
ถ้า (strlen($เข้าสู่ระบบ)< 3 or strlen($login) > 15) {
exit("การเข้าสู่ระบบต้องประกอบด้วยอักขระอย่างน้อย 3 ตัวและไม่เกิน 15 ตัว");
}
ถ้า (strlen($รหัสผ่าน)< 3 or strlen($password) > 15) {
exit("รหัสผ่านต้องมีอย่างน้อย 3 ตัวอักษรและไม่เกิน 15 ตัว");
}

if (!empty($_POST["fupload"])) //ตรวจสอบว่าผู้ใช้ส่งรูปภาพไปแล้วหรือไม่
{
$fupload=$_POST["fupload"]; $fupload = ตัดแต่ง($fupload);
ถ้า ($fupload =="" หรือว่าง($fupload)) (
unset($fupload);// ถ้าตัวแปร $fupload ว่างเปล่า ให้ลบออก
}
}
ถ้า (!isset($fupload) หรือว่าง($fupload) หรือ $fupload =="")
{
// หากไม่มีตัวแปร (ผู้ใช้ไม่ได้ส่งรูปภาพ) ให้กำหนดรูปภาพที่เตรียมไว้พร้อมข้อความว่า "ไม่มีรูปประจำตัว"
$avatar = "อวตาร/net-avatara.jpg"; //คุณสามารถวาด net-avatara.jpg หรือนำมาจากแหล่งที่มาก็ได้
}
อื่น
{
//มิฉะนั้น - โหลดรูปภาพของผู้ใช้
$path_to_90_directory = "avatars/";//โฟลเดอร์ที่จะโหลดรูปภาพเริ่มต้นและสำเนาที่บีบอัด

ถ้า(preg_match("/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/",$_FILES["fupload"]["name"])) //ตรวจสอบรูปแบบภาพต้นฉบับ
{
$filename = $_FILES["fupload"]["name"];
$source = $_FILES["fupload"]["tmp_name"];
$target = $path_to_90_directory $ชื่อไฟล์;
move_uploaded_file($source, $target);//อัพโหลดต้นฉบับไปยังโฟลเดอร์ $path_to_90_directory
if(preg_match("/[.](GIF)|(gif)$/", $ชื่อไฟล์)) (
$im = imagecreatefromgif($path_to_90_directory.$filename) ; //หากต้นฉบับอยู่ในรูปแบบ GIF ให้สร้างรูปภาพในรูปแบบเดียวกัน จำเป็นสำหรับการบีบอัดในภายหลัง
}
ถ้า(preg_match("/[.](PNG)|(png)$/", $ชื่อไฟล์)) (
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//หากต้นฉบับอยู่ในรูปแบบ PNG ให้สร้างรูปภาพในรูปแบบเดียวกัน จำเป็นสำหรับการบีบอัดในภายหลัง
}

If(preg_match("/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/", $ชื่อไฟล์)) (
$im = imagecreatefromjpeg($path_to_90_directory.$filename); //ถ้ามีต้นฉบับอยู่ รูปแบบ JPGจากนั้นเราก็สร้างภาพในรูปแบบเดียวกัน จำเป็นสำหรับการบีบอัดในภายหลัง
}
// การสร้างภาพสี่เหลี่ยมจัตุรัสและการบีบอัดที่ตามมาซึ่งนำมาจากเว็บไซต์ www.codenet.ru
// สร้างสี่เหลี่ยมจัตุรัสขนาด 90x90
// dest - รูปภาพผลลัพธ์
// w - ความกว้างของภาพ
// อัตราส่วน - สัมประสิทธิ์สัดส่วน
$w = 90; // สี่เหลี่ยมจัตุรัส 90x90. สามารถจัดหาในขนาดอื่นได้
// สร้างภาพต้นฉบับตาม
// ไฟล์ต้นฉบับและกำหนดขนาดของมัน
$w_src = รูปภาพ x($im); //คำนวณความกว้าง
$h_src = ภาพ($im); //คำนวณความสูงของภาพ
// สร้างภาพสี่เหลี่ยมจัตุรัสว่าง
// truecolor มีความสำคัญ! ไม่เช่นนั้นเราจะได้ผลลัพธ์แบบ 8 บิต
$dest = imagecreatetruecolor($w,$w);
// ตัดจุดศูนย์กลางสี่เหลี่ยมออกตาม x หากรูปภาพอยู่ในแนวนอน
ถ้า ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
รอบ((สูงสุด($w_src,$h_src)-นาที($w_src,$h_src))/2),
0, $w, $w, นาที($w_src,$h_src), นาที($w_src,$h_src));
// ตัดส่วนบนของสี่เหลี่ยมออกตาม y
// หากภาพถ่ายเป็นแนวตั้ง (แม้ว่าคุณจะใช้ตรงกลางก็ได้)
ถ้า ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
นาที($w_src,$h_src), นาที($w_src,$h_src));
// ภาพสี่เหลี่ยมจัตุรัสถูกปรับขนาดโดยไม่มีการตัดทอน
ถ้า ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
$วันที่=เวลา(); //คำนวณเวลาปัจจุบัน
imagejpeg($dest, $path_to_90_directory.$date".jpg");//บันทึกรูปภาพในรูปแบบ jpg ไปยังโฟลเดอร์ที่ต้องการ โดยชื่อจะเป็นเวลาปัจจุบัน สร้างขึ้นเพื่อป้องกันไม่ให้อวตารมีชื่อเหมือนกัน
//ทำไมต้องเป็น jpg? ใช้พื้นที่น้อยมาก + ภาพเคลื่อนไหวของภาพ GIF ซึ่งทำให้ผู้ใช้เสียสมาธิถูกทำลาย การอ่านความคิดเห็นของเขาไม่ใช่เรื่องน่ายินดีเมื่อคุณสังเกตเห็นการเคลื่อนไหวบางอย่างจากหางตาของคุณ
$avatar = $path_to_90_directory.$date".jpg";//ใส่พาธไปยังอวาตาร์ลงในตัวแปร
$delfull = $path_to_90_directory.$ชื่อไฟล์;
unlink ($delfull);//ลบรูปภาพต้นฉบับที่อัปโหลด เราไม่ต้องการมันอีกต่อไป ภารกิจคือการได้รับของจิ๋ว
}
อื่น
{
//ในกรณีที่รูปแบบไม่ตรงกัน ให้ส่งข้อความที่เกี่ยวข้อง
exit("รูปประจำตัวต้องอยู่ในรูปแบบ JPG, GIF หรือ PNG");
}
//สิ้นสุดกระบวนการโหลดและกำหนดที่อยู่ของตัวแปร $avatar ที่โหลด ava
}



// เพิ่มใหม่ ********************************************** **
// ถัดไปคือทุกอย่างจากส่วนแรกของบทความ แต่คุณต้องเพิ่มการเปลี่ยนแปลงในการสืบค้นฐานข้อมูล
//เชื่อมต่อกับฐานข้อมูล
// ตรวจสอบการมีอยู่ของผู้ใช้ที่มีการเข้าสู่ระบบเดียวกัน
$result = mysql_query("เลือก id จากผู้ใช้ WHERE login="$login"",$db);
ถ้า (!empty($myrow["id"])) (
exit("ขออภัย ข้อมูลเข้าสู่ระบบที่คุณป้อนมีการลงทะเบียนแล้ว กรุณาป้อนข้อมูลเข้าสู่ระบบอื่น");
}
// หากไม่มีสิ่งนั้นให้บันทึกข้อมูล
$result2 = mysql_query("INSERT INTO users (login,password,avatar) VALUES("$login","$password","$avatar")");
//ตรวจสอบว่ามีข้อผิดพลาดหรือไม่
ถ้า ($result2=="TRUE")
{
echo "คุณลงทะเบียนสำเร็จแล้ว! ตอนนี้คุณสามารถเข้าสู่เว็บไซต์ หน้าแรก";
}
อื่น(
echo "เกิดข้อผิดพลาด! คุณยังไม่ได้ลงทะเบียน";
}
?>

4. คุณต้องเพิ่มหนึ่งตารางลงในฐานข้อมูลเดียวกัน มันจะจัดเก็บที่อยู่ IP ที่เกิดข้อผิดพลาดเมื่อเข้าสู่ระบบ ด้วยวิธีนี้เราสามารถจำกัดการเข้าถึงผู้ที่ทำผิดพลาดมากกว่าสามครั้งติดต่อกันได้ประมาณ 15 นาที ฉันคิดว่าโปรแกรมที่เลือกรหัสผ่านจะต้องแก้ไขเป็นเวลานาน
ไปที่ phpmyadmin และสร้างตารางใหม่ที่มี 3 ฟิลด์:


ไอพี - ที่อยู่ IP
วันที่ - วันที่เข้าสู่ระบบไม่สำเร็จในช่วง 15 นาทีสุดท้ายสำหรับผู้ใช้ที่มี ip นี้ col - จำนวนข้อผิดพลาดในช่วง 15 นาทีที่ผ่านมาสำหรับผู้ใช้ที่มี IP นี้
ยอดเยี่ยม! เสร็จแล้ว เรามาเปลี่ยนไฟล์การเข้าสู่ระบบและการยืนยันรหัสผ่านกันดีกว่า เพราะตอนนี้รหัสผ่านของเราได้รับการเข้ารหัสแล้ว เปิด testreg.php และลบทุกอย่างนอกเหนือจากการลบช่องว่างออกจากข้อมูลเข้าสู่ระบบและรหัสผ่าน ต่อไปเราจะเพิ่มรหัสต่อไปนี้:

//ลบช่องว่างเพิ่มเติม
$login = ตัด($login);
$password = ตัด($password);

// แทนที่ด้วยอันใหม่ ******************************************* *******
//เชื่อมต่อกับฐานข้อมูล
include("bd.php");// ไฟล์ bd.php จะต้องอยู่ในโฟลเดอร์เดียวกันกับไฟล์อื่นๆ ทั้งหมด หากไม่เป็นเช่นนั้น ให้เปลี่ยนพาธ
// มินิตรวจสอบการเลือกรหัสผ่าน
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=="unknown") ( $ip=getenv("REMOTE_ADDR"); )//แยก ip
mysql_query ("ลบจาก oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 900");//ลบที่อยู่ IP ของผู้ใช้ที่ทำผิดพลาดเมื่อเข้าสู่ระบบหลังจาก 15 นาที
$result = mysql_query("SELECT col FROM oshibka WHERE ip="$ip"",$db); // ดึงข้อมูลจำนวนครั้งในการเข้าสู่ระบบที่ไม่สำเร็จจากฐานข้อมูลในช่วง 15 ครั้งล่าสุดสำหรับผู้ใช้ที่มี IP ที่กำหนด
$myrow = mysql_fetch_array($ผลลัพธ์);
ถ้า ($myrow["col"] > 2) (
//หากมีข้อผิดพลาดมากกว่าสองรายการ เช่น สามรายการ เราจะส่งข้อความแจ้ง
exit("คุณป้อนชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง 3 ครั้ง โปรดรอ 15 นาทีก่อนลองอีกครั้ง");
}
$password = md5($password);//เข้ารหัสรหัสผ่าน
$password = strrev($password);// เพื่อความน่าเชื่อถือ ให้เพิ่ม Reverse
$password = $password"b3p6f";
//คุณสามารถเพิ่มตัวละครของคุณเองสองสามตัวตามรสนิยมของคุณได้ เช่น โดยการป้อน "b3p6f" หากรหัสผ่านนี้ถูกแฮ็กโดยใช้กำลังดุร้ายบนเซิร์ฟเวอร์ md5 เดียวกัน เห็นได้ชัดว่าไม่มีอะไรดีเกิดขึ้น แต่ฉันแนะนำให้คุณใส่อักขระอื่น ๆ อาจจะอยู่ต้นบรรทัดหรือตรงกลาง
//ในกรณีนี้จำเป็นต้องเพิ่มความยาวของฟิลด์รหัสผ่านในฐานข้อมูล รหัสผ่านที่เข้ารหัสอาจมีขนาดใหญ่กว่ามาก

$result = mysql_query("SELECT * FROM users WHERE เข้าสู่ระบบ="$login" AND รหัสผ่าน="$password"",$db); //ดึงข้อมูลจากฐานข้อมูลทั้งหมดเกี่ยวกับผู้ใช้ด้วยการเข้าสู่ระบบและรหัสผ่านที่ป้อน
$myrow = mysql_fetch_array($ผลลัพธ์);
ถ้า (ว่าง($myrow["id"]))
{
//หากไม่มีผู้ใช้ที่มีการเข้าสู่ระบบและรหัสผ่านที่ป้อน
// เราบันทึกว่า ip นี้ไม่สามารถเข้าสู่ระบบได้
$select = mysql_query("SELECT ip FROM oshibka WHERE ip="$ip"");
$tmp = mysql_fetch_row($เลือก);
if ($ip == $tmp) (//ตรวจสอบว่าผู้ใช้อยู่ในตาราง "oshibka" หรือไม่
$result52 = mysql_query("เลือกคอลัมน์จาก oshibka WHERE ip="$ip"",$db);
$myrow52 = mysql_fetch_array($ผล52);
$col = $myrow52 + 1;//เพิ่มความพยายามในการเข้าสู่ระบบที่ไม่สำเร็จอีกครั้งหนึ่ง
mysql_query("ข้อผิดพลาดการอัปเดต SET col=$col,date=NOW() WHERE ip="$ip"");
}
อื่น(
mysql_query("INSERT INTO oshibka (ip,date,col) VALUES ("$ip",NOW(),"1")");
//หากไม่มีข้อผิดพลาดในช่วง 15 นาทีที่ผ่านมา ให้แทรก รายการใหม่ไปที่โต๊ะ "oshibka"
}

exit("ขออภัย ชื่อผู้ใช้หรือรหัสผ่านที่คุณป้อนไม่ถูกต้อง");
}
อื่น(
nbsp; //หากรหัสผ่านตรงกัน เราจะเปิดเซสชันสำหรับผู้ใช้! ขอแสดงความยินดีด้วย เขาเข้าแล้ว!
$_SESSION["รหัสผ่าน"]=$myrow["รหัสผ่าน"];
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//ข้อมูลนี้ถูกใช้บ่อยมาก ดังนั้นผู้ใช้ที่เข้าสู่ระบบจะ “นำติดตัวไปด้วย”

//ต่อไปเราจะบันทึกข้อมูลในคุกกี้สำหรับการเข้าสู่ระบบครั้งต่อไป
//ความสนใจ!!! ดำเนินการนี้ตามดุลยพินิจของคุณเนื่องจากข้อมูลถูกเก็บไว้ในคุกกี้โดยไม่มีการเข้ารหัส
ถ้า ($_POST["บันทึก"] == 1) (
//หากผู้ใช้ต้องการให้ข้อมูลของเขาถูกบันทึกไว้สำหรับการเข้าสู่ระบบครั้งต่อไป เราจะบันทึกไว้ในคุกกี้ของเบราว์เซอร์ของเขา
setcookie("เข้าสู่ระบบ", $_POST["เข้าสู่ระบบ"], เวลา()+9999999);
setcookie("รหัสผ่าน", $_POST["รหัสผ่าน"], เวลา()+9999999);
}}
เสียงสะท้อน " ";//เราเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าหลัก ซึ่งเราจะแจ้งให้เขาทราบเมื่อเข้าสู่ระบบสำเร็จ
?>

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

// ขั้นตอนทั้งหมดทำงานในเซสชัน เป็นที่เก็บข้อมูลของผู้ใช้ในขณะที่เขาอยู่ในไซต์ มันสำคัญมากที่จะเปิดตัวตั้งแต่ต้นหน้า!!!
session_start();
include("bd.php");// ไฟล์ bd.php จะต้องอยู่ในโฟลเดอร์เดียวกันกับไฟล์อื่นๆ ทั้งหมด หากไม่เป็นเช่นนั้น ให้เปลี่ยนพาธ
if (!empty($_SESSION["login"]) และ !empty($_SESSION["password"]))
{
//หากมีการเข้าสู่ระบบและรหัสผ่านในเซสชัน ให้ตรวจสอบและดึงข้อมูลประจำตัว
$เข้าสู่ระบบ = $_SESSION["เข้าสู่ระบบ"];
$รหัสผ่าน = $_SESSION["รหัสผ่าน"];
$result = mysql_query("SELECT id,avatar จากผู้ใช้ WHERE เข้าสู่ระบบ="$login" และรหัสผ่าน="$password"",$db);
$myrow = mysql_fetch_array($ผลลัพธ์);
//ดึงข้อมูลผู้ใช้ที่จำเป็น
}
?>


หน้าแรก


หน้าแรก

if (!isset($myrow["avatar"]) หรือ $myrow["avatar"]=="") (
//ตรวจสอบว่าข้อมูลผู้ใช้ถูกแยกออกจากฐานข้อมูลหรือไม่ ถ้าไม่เช่นนั้น แสดงว่าเขาไม่ได้เข้าสู่ระบบ หรือรหัสผ่านในเซสชันไม่ถูกต้อง เราแสดงหน้าต่างเข้าสู่ระบบ แต่เราจะไม่แสดงให้คนที่เข้ามาเขาไม่ต้องการอีกต่อไป
พิมพ์<<


ที่นี่;

If (isset($_COOKIE["login"])) //มีตัวแปรที่มีการล็อกอินใน COOKIE หรือไม่ ควรเป็นเช่นนั้นหากผู้ใช้คลิกช่องทำเครื่องหมาย "จดจำฉัน" ระหว่างการเข้าสู่ระบบครั้งก่อน
{
//ถ้าใช่ ให้ใส่ค่าลงในแบบฟอร์ม ในกรณีนี้ ผู้ใช้จะแสดงให้เห็นว่ามีการเข้าสู่ระบบของเขาในคอลัมน์ที่ต้องการแล้ว
echo " value="".$_COOKIE["เข้าสู่ระบบ"]"">";
}

พิมพ์<<




ที่นี่;

If (isset($_COOKIE["password"]))//ว่ามีตัวแปรที่มีรหัสผ่านอยู่ใน COOKIE หรือไม่ ควรเป็นเช่นนั้นหากผู้ใช้คลิกช่องทำเครื่องหมาย "จดจำฉัน" ระหว่างการเข้าสู่ระบบครั้งก่อน
{
//ถ้าใช่ ให้ใส่ค่าลงในแบบฟอร์ม ในกรณีนี้ ผู้ใช้จะพบว่ารหัสผ่านของเขาถูกป้อนลงในคอลัมน์ที่ต้องการแล้ว
echo " value="".$_COOKIE["รหัสผ่าน"]"">";
}

พิมพ์<<



จำฉันไว้.






ลงทะเบียน



คุณเข้าสู่ระบบในฐานะแขก

ที่นี่;
}
อื่น
{
//หากเข้าสู่ระบบสำเร็จ ผู้ใช้จะได้รับทุกสิ่งด้านล่างระหว่างเครื่องหมายดอกจัน

พิมพ์<<
คุณเข้าสู่ระบบไซต์ด้วย $_SESSION (ออก)


ลิงค์นี้มีให้สำหรับผู้ใช้ที่ลงทะเบียนเท่านั้น

อวตารของคุณ:




ที่นี่;

//************************************************************************************
//หากเข้าสู่ระบบสำเร็จ ผู้ใช้จะได้รับทุกสิ่งที่อยู่เหนือระหว่างเครื่องหมายดอกจัน
}
?>



6. จำเป็นต้องทำให้ผู้ใช้ที่เข้าสู่ระบบสามารถออกจากระบบได้ บน หน้าแรกมีลิงก์ไปยังทางออกอยู่แล้ว แต่ไฟล์นี้ยังไม่มีอยู่ เรามาสร้างกัน ไฟล์ใหม่ exit.phpด้วยรหัส:

session_start();
ถ้า (ว่างเปล่า($_SESSION["เข้าสู่ระบบ"]) หรือว่างเปล่า($_SESSION["รหัสผ่าน"]))
{
//หากไม่มีเซสชันที่มีการเข้าสู่ระบบและรหัสผ่าน แสดงว่าไฟล์นี้ถูกเข้าถึงโดยผู้ใช้ที่ไม่ได้เข้าสู่ระบบ เขาไม่อยู่ที่นี่ เราออกข้อความแสดงข้อผิดพลาดและหยุดสคริปต์
exit ("การเข้าถึงหน้านี้ทำได้เฉพาะผู้ใช้ที่ลงทะเบียนแล้วเท่านั้น หากคุณได้ลงทะเบียนแล้วให้เข้าสู่ระบบไซต์โดยใช้ชื่อผู้ใช้และรหัสผ่านของคุณ
หน้าแรก");
}

unset($_SESSION["รหัสผ่าน"]);
unset($_SESSION["เข้าสู่ระบบ"]);
unset($_SESSION["id"]);// ทำลายตัวแปรในเซสชัน
ออก(" ");
// ส่งผู้ใช้ไปที่หน้าหลัก
?>

นั่นคือทั้งหมด! สนุกกับมันเพื่อสุขภาพของคุณ! ขอให้โชคดี!

เนื้อหา

เช่น

ereg - ค่าที่จับคู่ของนิพจน์ทั่วไป
คำอธิบาย
int ereg (รูปแบบสตริง, สตริงสตริง, อาร์เรย์ );

ค้นหาค่าที่จับคู่ เชือกในนิพจน์ทั่วไปที่ระบุใน ลวดลาย .

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

$regs จะมีสตริงย่อยที่ขึ้นต้นด้วยวงเล็บที่สอง ฯลฯ $regs จะมีสำเนา

การค้นหาจะคำนึงถึงขนาดตัวพิมพ์

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

รหัสต่อไปนี้แยกวันที่ในรูปแบบ ISO และส่งออกในรูปแบบ DD.MM.YYYY:

ถ้า (ereg("((4))-((1,2))-((1,2))", $date, $regs)) ( echo "$regs.$regs.$regs"; ) อื่น ๆ ( echo "รูปแบบวันที่ไม่ถูกต้อง: $date"; )

ereg_แทนที่

ereg_replace -- แทนที่นิพจน์ทั่วไป
คำอธิบาย
สตริง ereg_replace (รูปแบบสตริง, การแทนที่สตริง, สตริงสตริง);

ฟังก์ชั่นนี้จะสแกน เชือกถึงค่าที่จับคู่ k ลวดลายจากนั้นแทนที่ข้อความที่พบด้วย การทดแทน .

ถ้า ลวดลายมีสตริงย่อยอยู่ในวงเล็บแล้ว การทดแทนอาจมีสตริงย่อยเช่น \\ ตัวเลขซึ่งจะถูกแทนที่ด้วยข้อความที่ตรงกับสตริงย่อยที่เป็นตัวเลขในวงเล็บ \\0 จะประมวลผลเนื้อหาทั้งหมดของสตริง สามารถใช้สตริงย่อยได้สูงสุด 9 รายการ วงเล็บสามารถจัดกลุ่มได้ ในกรณีนี้จะถูกนับด้วยวงเล็บเปิด ตัวอย่างเช่น รหัสต่อไปนี้จะพิมพ์ "นี่คือการทดสอบ" สามครั้ง:

ตัวอย่างที่ 1. ereg_replace()

$string = "นี่คือการทดสอบ"; echo ereg_replace(" คือ", "เป็น", $string); echo ereg_replace("()is", "\\1was", $string); echo ereg_replace("(()is)", "\\2was", $string);

ดูเพิ่มเติม , , และ

เอเรกี

eregi - ค้นหาค่าที่จับคู่โดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ในนิพจน์ทั่วไป
คำอธิบาย
int eregi (รูปแบบสตริง, สตริงสตริง, อาร์เรย์ );

eregi_แทนที่

eregi_replace -- การแทนที่นิพจน์ทั่วไปที่ไม่คำนึงถึงขนาดตัวพิมพ์
คำอธิบาย
string eregi_replace (รูปแบบสตริง, การแทนที่สตริง, สตริงสตริง);

แยก

แยก -- แยกสตริงออกเป็นอาร์เรย์โดยใช้นิพจน์ทั่วไป
คำอธิบาย
การแยกอาร์เรย์ (รูปแบบสตริง, สตริงสตริง, int );

ส่งกลับอาร์เรย์ของสตริง ซึ่งแต่ละสตริงเป็นสตริงย่อยของสตริง ที่เกิดขึ้นจากการแยกสตริงนั้นออกเป็นส่วนต่างๆ ที่แยกจากกัน ลวดลาย- หากเกิดข้อผิดพลาด ฟังก์ชันจะส่งกลับค่าเท็จ

หากต้องการรับ 5 ฟิลด์แรกจากบรรทัดใน /etc/passwd:

จะมีการออก.

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



2024 wisemotors.ru. วิธีนี้ทำงานอย่างไร. เหล็ก. การทำเหมืองแร่ สกุลเงินดิจิทัล