เราลบโปรแกรมแก้ไขภาพ การเลือกโทนสี และรายละเอียดอื่นๆ ในพื้นที่ผู้ดูแลระบบ WordPress เราลบโปรแกรมแก้ไขภาพ การเลือกโทนสี และรายละเอียดอื่น ๆ ในแผงผู้ดูแลระบบ WordPress เราซ่อน "ปุ่มลัด"

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

ตอนนี้เรามาสร้างหน้าโปรไฟล์กันดีกว่า โปรไฟล์.phpและเพิ่มลงในเพจ ดัชนี.phpเชื่อมโยงกับมัน

เอคโค่"
โปรไฟล์ของฉัน"; ตอนนี้เป็นโค้ดสำหรับเพจนั้นเองprofile.php

ประวัติโดยย่อ<?php echo $login; ?>

ประวัติโดยย่อ



"; เอคโค่" ".$array["name_user"]" ".$array["นามสกุล"]"
"; switch ($array["birthdate_month"])(// แปลงหมายเลขเดือนเป็นชื่อ case "1" : $month = "January"; break; case "2" : $month = "February"; break; case "3" : $month = "March"; case "4" : $month = "April"; "มิถุนายน"; หยุด; กรณี "7" : $เดือน = "กันยายน"; 10" : $month = "ตุลาคม"; break; case "11" : $month = "November"; break; $month = "December"; echo "วันที่ลงทะเบียน: ".$array[" reg_date"]"
"; echo "เพศ: ".$array["sex"]"
; echo "วันเกิด: ".$array["birthdate_day"]" ".$เดือน" ".$array["birthdate_year"]"
; echo "ประเทศ: ".$array["ประเทศ"]"
"; echo "เมือง: ".$array["เมือง"]"
"; if($_GET["id"] == $id_user)(//เฉพาะเจ้าของเท่านั้นที่สามารถแก้ไขโปรไฟล์ echo "แก้ไขโปรไฟล์"; ) )else( พิมพ์<<ทางเข้า:
เข้าสู่ระบบ: รหัสผ่าน:
การลงทะเบียนกู้คืนรหัสผ่าน ที่นี่; -

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

รูปแบบอื่นๆ ทั้งหมดจะคล้ายกันและจะอ้างอิงถึงตัวจัดการเดียว save_edit.phpซึ่งจะทำการเปลี่ยนแปลงฐานข้อมูล นอกจากนี้ยังมีโค้ดที่ค่อนข้างใหญ่ และฉันจะไม่นำเสนอที่นี่เช่นกัน แต่จะบอกคุณเพียงเล็กน้อยเกี่ยวกับสิ่งที่เกิดขึ้นในนั้น (คุณสามารถค้นหาโค้ดแบบเต็มได้ในไฟล์ต้นฉบับ) ก่อนอื่น เราสร้างอวตารขึ้นมา หากผู้ใช้อัปโหลดไว้ ไม่เช่นนั้น เราก็จะทิ้งอวตารมาตรฐานไว้ หากเป็นกรณีนี้ ก่อนอื่นให้ดาวน์โหลดลงในโฟลเดอร์ก่อน อวตาร(โดยวิธีการสร้างโฟลเดอร์นี้และให้สิทธิ์ในการเขียน 755) หลังจากตรวจสอบด้วยส่วนขยายที่อนุญาต จากนั้นภาพใหม่จะถูกสร้างขึ้นด้วยรูปแบบขึ้นอยู่กับโหมดที่เลือก: $เรซิม = 1มีการสร้างภาพสี่เหลี่ยมจัตุรัส $เรซิม = 2ภาพที่ได้สัดส่วนกับภาพต้นฉบับ คุณต้องกำหนดความกว้างของรูปภาพที่สร้างขึ้นด้วย $wและคุณภาพ $คุณภาพ- เราบันทึกรูปภาพที่สร้างในรูปแบบ jpg โดยใช้ฟังก์ชัน รูปภาพjpegและสร้างชื่อแบบสุ่มให้กับมัน ตอนนี้คุณต้องลบอิมเมจเก่าและอัพเดตในฐานข้อมูลด้วยอิมเมจใหม่ นั่นคือทั้งหมดสำหรับภาพ

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

ฉันเขียนเกี่ยวกับผู้ใช้ WordPress แล้ว (ดูลิงก์) แต่เช่นเดียวกับเครื่องมืออื่นๆ (ยกเว้นค้อนขนาดใหญ่) Adminimize ไม่เหมาะและไม่สามารถลบทุกอย่างออกได้ทั้งหมด แม้ว่านี่จะต้องขอบคุณโปรแกรมเมอร์ WordPress เท่านั้นก็ตาม

โพสต์นี้เกิดขึ้นเอง คุณสามารถพูดขอบคุณแขกรับเชิญได้ ส่วนสำคัญของคำถามของเขาคือสิ่งนี้ (เหมือนกับคำถามชุดหนึ่ง):

1. วิธีซ่อน "การเลือก" โทนสี» สำหรับผู้ใช้?

2. จะซ่อน “ปุ่มลัด” และ “ตัวแก้ไขภาพ” ในแผง WordPress ได้อย่างไร

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

สำหรับ “โปรไฟล์” นี่คือไฟล์ ผู้ใช้-edit.phpซึ่งอยู่ในโฟลเดอร์ wp-ผู้ดูแลระบบคุณต้องแก้ไขอย่างระมัดระวัง ไม่เช่นนั้นคุณจะ "จ่าย" ได้ดีสำหรับการทดสอบของคุณ

โซลูชัน (แบบครบวงจร):

1. ดาวน์โหลดไฟล์ลงในพีซีของคุณและทำสำเนา (ปลอดภัย....)

2. เรากำลังมองหาโค้ด HTML ที่ทำหน้าที่แสดงข้อมูลที่เราต้องการ

3. แสดงความคิดเห็นอย่างระมัดระวังและ "เติม" กลับมาพร้อมกับสิ่งทดแทน

ตอนนี้ฝึกฝน (แก้ไข User-edit.php):

จริงๆ แล้วฉันจำไม่ได้ว่าฉันมี WP เวอร์ชันใดในเว็บไซต์ทดสอบ แต่ก็ไม่ต่ำกว่า 2.8.2 แน่นอน

ขั้นแรก ฉันดาวน์โหลดไฟล์ลงในพีซีและดูโค้ดโดยใช้ Chrome Code Viewer และพบโค้ดที่ต้องการใน Notepad++

(มีขีดกลางสองขีดในแต่ละด้าน “-”)

1. ซ่อน “โปรแกรมแก้ไขภาพ”

เปลี่ยนเป็นรหัส:

—>

PS: อย่าคัดลอกโค้ดนี้ แต่ให้เปลี่ยนด้วยตัวเอง - มีโอกาสเกิดข้อผิดพลาดสูง!!!

2. ซ่อน “เลือกโทนสี”

ฉันหวังว่าคุณจะสังเกตเห็นความแตกต่างระหว่างรหัส - มีการเพิ่มอักขระทั้งหมด 7 ตัว เพื่อซ่อนรายการนี้ที่เรากำลังมองหา ถ้า (นับ($_wp_admin_css_colors) > 1)และแสดงความคิดเห็นใต้บรรทัดโค้ดทั้งหมดระหว่าง ถึง

3. ซ่อน “ปุ่มลัด”

ในบทที่สอง เราจะเขียนอีกสองคลาสและจบส่วนภายในของสคริปต์ให้สมบูรณ์

วางแผน

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

เล็กน้อยเกี่ยวกับการตั้งชื่อชั้นเรียน

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

เป็นเรื่องปกติที่จะเพิ่ม .class หรือ .inc ต่อท้ายชื่อไฟล์คลาส วิธีนี้ทำให้เรากำหนดวัตถุประสงค์ของไฟล์ได้อย่างชัดเจน และสามารถใช้ .htaccess เพื่อจำกัดการเข้าถึงไฟล์เหล่านี้ได้

คลาสผู้ใช้ (User.class.php)

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

ตัวสร้าง

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

need_once "DB.class.php"; ผู้ใช้คลาส ( public $id; public $username; public $hashedPassword; public $email;
สาธารณะ $joinDate;
//ตัวสร้างจะถูกเรียกเมื่อมีการสร้างวัตถุใหม่//รับอาร์เรย์ที่เชื่อมโยงกับแถว DB เป็นอาร์กิวเมนต์ ฟังก์ชั่น __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" ชื่อผู้ใช้"])) ? $data["ชื่อผู้ใช้"] : ""; $this->hashedPassword = (isset($data["password"])) ? $data["password"] : ""; $this- >อีเมล = (isset($data["อีเมล"])) ? $data["email"] : ""; $this->joinDate = (isset($data["join_date"])) $data[" join_date "] : ""; )
ฟังก์ชั่นสาธารณะบันทึก($isNewUser = false) ( //สร้างวัตถุฐานข้อมูลใหม่ $db = new DB(); //หากผู้ใช้ได้ลงทะเบียนแล้วและเราจะ"//เพียงอัปเดตข้อมูลของพวกเขา if(!$isNewUser ) ( //ตั้งค่าอาร์เรย์ข้อมูล $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"อีเมล" => ""$this->อีเมล"");
//อัพเดตแถวในฐานข้อมูล $db->update($data, "users", "id = ".$this->id); )else ( //หากผู้ใช้ลงทะเบียนเป็นครั้งแรก $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"" , "email" => ""$this->email"", "join_date" => """.date("Y-m-d H:i:s",time())."""); id = $db ->insert($data, "users"); $this->joinDate = time(); -

คำอธิบาย

ส่วนแรกของโค้ดที่อยู่นอกโซนคลาส ทำให้แน่ใจว่าคลาสเชื่อมต่อกับฐานข้อมูล (เนื่องจากคลาส User มีฟังก์ชันที่ต้องใช้คลาสนี้)

แทนที่จะเป็นตัวแปรของคลาส "protected" (ใช้ในบทเรียนที่ 1) เรากำหนดให้ตัวแปรเหล่านี้เป็น "public" ซึ่งหมายความว่าโค้ดใดๆ ที่อยู่นอกคลาสจะสามารถเข้าถึงตัวแปรเหล่านี้ได้เมื่อทำงานกับออบเจ็กต์ User

ตัวสร้างรับอาร์เรย์ที่คอลัมน์ในตารางเป็นคีย์ เรากำหนดตัวแปรคลาสโดยใช้ $this->variablename ในตัวอย่างของคลาสนี้ เราจะตรวจสอบก่อนว่าค่าของคีย์บางตัวนั้นมีอยู่หรือไม่ ถ้าใช่ เราจะตั้งค่าตัวแปรคลาสให้เป็นค่านั้น มิฉะนั้นจะเป็นสตริงว่าง รหัสจะใช้รูปแบบย่อของสัญกรณ์หาก:

$มูลค่า = (3 == 4) ? "ก" : "ข";

ใน ในตัวอย่างนี้เราตรวจสอบว่า 3 เท่ากับสี่หรือไม่! ถ้าใช่ - ดังนั้น $value = “A”, ไม่ใช่ - $value = “B” ในตัวอย่างของเรา ผลลัพธ์คือ $value = “B”

เราบันทึกข้อมูลเกี่ยวกับผู้ใช้ในฐานข้อมูล

ฟังก์ชั่นบันทึกใช้เพื่อทำการเปลี่ยนแปลงตารางฐานข้อมูลด้วยค่าปัจจุบันในวัตถุผู้ใช้ ฟังก์ชันนี้ใช้คลาสฐานข้อมูลที่เราสร้างขึ้นในบทช่วยสอนแรก การใช้ตัวแปรคลาส $data อาร์เรย์จะถูกตั้งค่า หากข้อมูลผู้ใช้ถูกบันทึกเป็นครั้งแรก $isNewUser จะถูกส่งผ่านเป็น $true (เท็จตามค่าเริ่มต้น) ถ้า $isNewUser = $true ฟังก์ชัน insert() ของคลาส DB จะถูกเรียก มิฉะนั้นจะเรียกฟังก์ชัน update() ในทั้งสองกรณี ข้อมูลจากออบเจ็กต์ผู้ใช้จะถูกจัดเก็บไว้ในฐานข้อมูล

คลาส UserTools.class.php

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

//UserTools.class.php need_once "User.class.php"; need_once "DB.class.php";
คลาส UserTools(
//เข้าสู่ระบบผู้ใช้ ขั้นแรกให้ตรวจสอบเพื่อดูว่า //ชื่อผู้ใช้และรหัสผ่านตรงกับแถวในฐานข้อมูลหรือไม่ //หากสำเร็จ ให้ตั้งค่าตัวแปรเซสชัน //และเก็บอ็อบเจ็กต์ผู้ใช้ไว้ภายใน
เข้าสู่ระบบฟังก์ชั่นสาธารณะ ($ชื่อผู้ใช้, $รหัสผ่าน)
{
$hashedPassword = md5($รหัสผ่าน); $result = mysql_query("SELECT * จากผู้ใช้ โดยที่ชื่อผู้ใช้ = "$ชื่อผู้ใช้" และรหัสผ่าน = "$hashedPassword""); if(mysql_num_rows($result) == 1) ( $_SESSION["user"] = serialize(ผู้ใช้ใหม่(mysql_fetch_assoc($result))); $_SESSION["login_time"] = time(); $_SESSION["logged_in "] = 1; return true; )else( return false; ) )
//ออกจากระบบผู้ใช้ ทำลายตัวแปรเซสชัน ฟังก์ชันสาธารณะออกจากระบบ() ( unset($_SESSION["user"]); unset($_SESSION["login_time"]); unset($_SESSION["logged_in"]); session_destroy(); ) //ตรวจสอบว่า มีชื่อผู้ใช้อยู่แล้ว //สิ่งนี้ถูกเรียกระหว่างการลงทะเบียนเพื่อให้แน่ใจว่าชื่อผู้ใช้ทั้งหมดไม่ซ้ำกัน ฟังก์ชั่นสาธารณะ checkUsernameExists($username) ( $result = mysql_query("select id from users when username="$username""); if(mysql_num_rows($result) == 0) ( return false; )else( return true; )
}
// รับผู้ใช้ // ส่งคืนวัตถุผู้ใช้ รับ ID ผู้ใช้เป็นฟังก์ชันสาธารณะอินพุต get($id) ( $db = new DB(); $result = $db->select("users", "id = $id"); return new User($result ); ) )
?>

ฟังก์ชั่นเข้าสู่ระบบ ()

ฟังก์ชั่นล็อกอิน () มีความชัดเจนตามชื่อ ใช้อาร์กิวเมนต์ผู้ใช้ $username และ $password และตรวจสอบว่าตรงกัน หากทุกอย่างตรงกัน ให้สร้างออบเจ็กต์ User พร้อมข้อมูลทั้งหมดและบันทึกไว้ในเซสชัน โปรดทราบว่าเราใช้เฉพาะฟังก์ชัน PHP serialize() เท่านั้น มันสร้างเวอร์ชันที่เก็บไว้ของออบเจ็กต์ที่สามารถยกเลิกการซีเรียลไลซ์ได้อย่างง่ายดายโดยใช้ unserialize() นอกจากนี้เวลาในการเข้าสู่ระบบก็จะถูกบันทึกไว้ด้วย สามารถใช้ในภายหลังเพื่อให้ข้อมูลเกี่ยวกับระยะเวลาที่อยู่ในไซต์แก่ผู้ใช้

คุณอาจสังเกตเห็นว่าเราตั้งค่า $_SESSION["logged_in"] เป็น 1 ซึ่งช่วยให้เราสามารถตรวจสอบแต่ละหน้าได้อย่างง่ายดายว่าผู้ใช้เข้าสู่ระบบหรือไม่ ตรวจสอบเฉพาะตัวแปรนี้ก็เพียงพอแล้ว

ฟังก์ชันออกจากระบบ ()

นอกจากนี้ยังมีฟังก์ชันง่ายๆ ฟังก์ชัน PHP unset() จะล้างตัวแปรในหน่วยความจำ ในขณะที่ session_destroy() จะลบเซสชัน

ฟังก์ชัน checkUsernameExists()

ใครก็ตามที่รู้ภาษาอังกฤษจะเข้าใจฟังก์ชั่นนี้ได้อย่างง่ายดาย เพียงถามฐานข้อมูลว่ามีการใช้การเข้าสู่ระบบที่คล้ายกันหรือไม่

รับ () ฟังก์ชั่น

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

ฉันสามารถใช้สิ่งนี้ได้ที่ไหน? ตัวอย่างเช่น หากคุณสร้างเพจที่ต้องแสดงโปรไฟล์ผู้ใช้ที่เฉพาะเจาะจง คุณจะต้องดึงข้อมูลนี้แบบไดนามิก นี่คือวิธีที่คุณสามารถทำได้: (สมมติว่า URL คือ http://www.website.com/profile.php?userID=3)

//หมายเหตุ: คุณจะต้องเปิดการเชื่อมต่อฐานข้อมูลก่อน //ดูส่วนที่ 1 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำเช่นนั้น //คุณจะต้องตรวจสอบให้แน่ใจว่าคุณได้รวมไฟล์คลาสแล้ว
$tools = เครื่องมือผู้ใช้ใหม่(); $user = $tools->get($_REQUEST["userID"]); echo "ชื่อผู้ใช้: ".$user->ชื่อผู้ใช้""; echo "เข้าร่วมเมื่อ: ".$user->joinDate"";

อย่างง่ายดาย! มันเป็นเรื่องจริงเหรอ?

สัมผัสสุดท้ายบนฝั่งเซิร์ฟเวอร์: global.inc.php

global.inc.php เป็นสิ่งจำเป็นสำหรับทุกหน้าบนเว็บไซต์ ทำไม ด้วยวิธีนี้เราจะวางการดำเนินการตามปกติทั้งหมดที่เราต้องการไว้บนหน้า ตัวอย่างเช่น เราจะเริ่ม session_start() การเชื่อมต่อฐานข้อมูลจะเปิดขึ้นด้วย

need_once "คลาส/UserTools.class.php";
need_once "คลาส/DB.class.php";
//เชื่อมต่อกับฐานข้อมูล $db = new DB(); $db->เชื่อมต่อ();
// เริ่มต้นวัตถุ UserTools $userTools = new UserTools(); //เริ่มเซสชัน
session_start();
//รีเฟรชตัวแปรเซสชันหากเข้าสู่ระบบ if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> รับ($ผู้ใช้->id) ) ?>

เขากำลังทำอะไรอยู่?

มีหลายสิ่งที่เกิดขึ้นที่นี่ ก่อนอื่นเราเปิดการเชื่อมต่อกับฐานข้อมูล

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

ต่อไปเราจะตรวจสอบว่าผู้ใช้เข้าสู่ระบบหรือไม่ หากเป็นเช่นนั้น เราจะอัปเดต $_SESSION["user"] เพื่อให้สอดคล้องกับข้อมูลผู้ใช้ล่าสุด ตัวอย่างเช่น หากผู้ใช้เปลี่ยนอีเมล อีเมลเก่าจะถูกเก็บไว้ในเซสชัน แต่ด้วยการอัปเดตอัตโนมัติสิ่งนี้จะไม่เกิดขึ้น

นี่เป็นการสรุปส่วนที่สอง! ติดตามบทเรียนสุดท้ายในหัวข้อนี้พรุ่งนี้

ขอให้ดีที่สุด!

คำถามทั่วไป

ถาม:ตัวสร้างโปรไฟล์แสดงกิจกรรมของเซิร์ฟเวอร์ แต่ไม่แสดงคำขอและเซสชันทั้งหมด

ตอบ:อย่าลืมคลิกปุ่มเริ่มเพื่อเริ่มบันทึกเซสชัน

ถาม:ฉันจัดการเพื่อเชื่อมต่อกับ MySQL แต่เซสชันไม่แสดง

ตอบ: Neor Profile SQL ทำงานเป็นพร็อกซีเซิร์ฟเวอร์ ซึ่งหมายความว่าสามารถแสดงเฉพาะเซสชันที่ผ่านตัวสร้างโปรไฟล์เท่านั้น แอปพลิเคชันของคุณ (หรือเว็บไซต์) จะต้องเชื่อมต่อกับตัวสร้างโปรไฟล์เสมือนว่าเป็นเซิร์ฟเวอร์ MySQL ทั่วไป ตัวสร้างโปรไฟล์ใช้การเชื่อมต่อขาเข้า TCP เท่านั้น จากนั้นคุณจะเห็นผลลัพธ์ในแท็บเซสชัน

ถาม:เหตุใดบางเซสชันจึงมีคำขอโดยมีเวลาเป็นศูนย์

ตอบ:การสืบค้นแบบ Zero-time จะดำเนินการอย่างรวดเร็วมากโดยไม่มีเวลาแฝง การสืบค้นดังกล่าวอาจแคชไว้โดย DBMS หรือดำเนินการอย่างรวดเร็ว เช่น หากคุณมีเซิร์ฟเวอร์ที่มีประสิทธิภาพและตารางที่ได้รับการปรับปรุงอย่างเหมาะสม

ถาม:% หมายถึงอะไรในเวลาและระยะเวลาในเซสชัน?

ตอบ:"เวลา %" คือเปอร์เซ็นต์ของเวลาดำเนินการเซสชันทั้งหมด "ระยะเวลา %" คือเปอร์เซ็นต์ของคำขอที่ยาวที่สุดในเซสชัน (อัตราส่วนต่อคำขอที่ยาวที่สุด)

ถาม:ฉันใช้ JetProfiler และตั้งค่าได้ง่ายกว่า

ตอบ: JetProfiler รับข้อมูลจาก เซิร์ฟเวอร์ MySQLผ่านคำสั่ง "แสดงสถานะ" และไม่สามารถรับข้อมูลทั้งหมดบนเซิร์ฟเวอร์ได้เนื่องจากทำงานแยกกัน Neor Profile SQL แสดงคำสั่งทั้งหมดไปยังฐานข้อมูลอย่างแน่นอน และสิ่งนี้จำเป็นต้องกำหนดค่าแอปพลิเคชันของคุณเพื่อกำหนดเส้นทางโฟลว์คำขอผ่านตัวสร้างโปรไฟล์

ถาม:ปุ่มโปรไฟล์ในแท็บ SQL ไม่แสดงผลลัพธ์

ตอบ:คุณลักษณะการทำโปรไฟล์ในโปรแกรมแก้ไข SQL ทำงานผ่านคำสั่ง SHOW PROFILES ซึ่งเพิ่มลงใน MySQL Community Server โดยเริ่มจากเวอร์ชัน 5.0.37 ตรวจสอบเวอร์ชันเซิร์ฟเวอร์ MySQL ของคุณ

ถาม:เป็นไปได้ไหมที่จะสร้างคอนโซลแบบสร้างโปรไฟล์?

ตอบ:สำหรับคอนโซล ให้ใช้บันทึก DBMS และส่วนท้ายรวมกัน หรือเครื่องมือคอนโซลพิเศษซึ่งมีอยู่ไม่มากนัก Neor Profile SQL เป็นแอปพลิเคชันระบบปฏิบัติการแบบหน้าต่างที่ออกแบบมาเพื่อวางบนระบบของผู้พัฒนา

ถาม: Profiler ใช้งานได้ แต่ด้วยเหตุผลบางอย่างจึงไม่แสดงกราฟสถิติหลัก

ตอบ:กราฟหลักใช้คำสั่ง SHOW STATUS สำหรับเซิร์ฟเวอร์หลัก คุณอาจไม่ได้รับอนุญาตให้เรียกใช้คำสั่งนี้บนเซิร์ฟเวอร์ ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์สำหรับคำสั่งนี้

ถาม:จะรันตัวติดตั้งในโหมดเงียบได้อย่างไร?

ตอบ: sqlprofiler-4.1.1.exe /S /D:C:ไฟล์โปรแกรม (x86)Neor Profile SQL

หน้าต่าง

ถาม:จะตรวจสอบการเชื่อมต่อ Profiler ได้อย่างไร?

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

ลินุกซ์

ถาม:ฉันไม่สามารถเชื่อมต่อผ่าน localhost ได้

ตอบ: Linux พยายามเชื่อมโยง localhost กับการเชื่อมต่อซ็อกเก็ต แต่ Neor Profile SQL ใช้งานได้กับการเชื่อมต่อ TCP เท่านั้น ตั้งค่าที่อยู่เซิร์ฟเวอร์ในตัวสร้างโปรไฟล์เป็น 127.0.0.1 แทนที่จะเป็น localhost คุณสามารถทำเช่นเดียวกันได้ในการตั้งค่าแอปพลิเคชันของคุณ
ตัวอย่างเช่น:
mysql --host=127.0.0.1 --user=เข้าสู่ระบบ --password=PASSWORD --port=4040

ถาม:ฉันไม่สามารถเชื่อมต่อกับ 127.0.0.1 ได้

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

ถาม:จะติดตั้ง Neor Profile SQL ภายใต้ OpenSUSE ได้อย่างไร

ตอบ:ขณะนี้เรารองรับเฉพาะแพ็คเกจ DEB ซึ่งทำงานบน Ubuntu, Debian และรุ่นที่เข้ากันได้ การแจกแจงลินุกซ์- คุณสามารถสร้างไฟล์ RPM ด้วยตัวเองและช่วยได้

ถาม:เหตุใดฉันจึงไม่สามารถสกัดกั้นคำขอของ Sysbench ได้

ตอบ:ตัวสร้างโปรไฟล์ใช้การเชื่อมต่อขาเข้า TCP เท่านั้น รัน Sysbench ด้วยพารามิเตอร์โฮสต์และพอร์ต:
sysbench --test=oltp --mysql-โฮสต์=127.0.0.1 --mysql-พอร์ต=4040--mysql-user=root --mysql-password=รหัสผ่าน เตรียม

แมค โอเอส เอ็กซ์

ถาม:ตัวสร้างโปรไฟล์ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MAMP MySQL

ตอบ:ปัญหา การเชื่อมต่อเครือข่ายในการกำหนดค่า MySQL:

  1. แมมร์
    รุ่นฟรี– คัดลอกการกำหนดค่า MySQL มาตรฐานไปยังโฟลเดอร์
    /Applications/MAMP/conf/my.cnf
    รุ่นโปร – เปิดเมนู ไฟล์ – แก้ไข – เทมเพลต MySQL
  2. ในการกำหนดค่า my.cnf ให้ลบบรรทัดข้ามเครือข่ายออก
  3. ในการตั้งค่า Profiler ให้เปลี่ยนที่อยู่โฮสต์ฐานข้อมูลจาก localhost เป็น 127.0.0.1

การเปลี่ยนพอร์ต MySQL ในสคริปต์ของคุณ

ใน Neor Profile SQL พอร์ตเริ่มต้นคือ 4040 หากต้องการรวบรวมคำสั่ง SQL คุณต้องเปลี่ยนค่าเริ่มต้นสำหรับการเชื่อมต่อกับโฮสต์ MySQL และพอร์ต 3306 ในสคริปต์ของคุณ ด้านล่างนี้เป็นตัวอย่างวิธีดำเนินการ

สตริง connStr = " เซิร์ฟเวอร์=127.0.0.1;พอร์ต=4040;ฐานข้อมูล=ฐานข้อมูลของคุณ;ผู้ใช้=ของคุณ_USER;รหัสผ่าน=ของคุณ_รหัสผ่าน;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html


การเปลี่ยนพอร์ตใน CMS ยอดนิยม

เวิร์ดเพรส

ไฟล์: wp-config.php
รหัส: กำหนด ("DB_HOST", "localhost :4040 ");

เพรสต้าช็อป

ไฟล์: config/settings.inc.php
รหัส: กำหนด("_DB_SERVER_", "localhost :4040 ");

OpenCart

ไฟล์: config.php
รหัส: กำหนด ("DB_HOSTNAME", "localhost :4040 ");