Đã chạm vào hồ sơ người dùng php. Chúng tôi xóa trình chỉnh sửa trực quan, lựa chọn bảng màu và các chi tiết khác trong khu vực quản trị WordPress. Anh ta đang làm gì vậy

Tôi muốn dành bài học này để tạo hồ sơ cá nhân cho người dùng đã đăng ký (bổ sung cho bài học Tạo đăng ký người dùng trên trang web). Giờ đây, người dùng sẽ có thể thêm hình đại diện, thay đổi họ và tên, thêm nơi cư trú và ngày sinh của họ. Để làm điều này, trong bảng người dùng hãy thêm một vài trường:

Bây giờ hãy tạo một trang hồ sơ hồ sơ.php và thêm nó vào trang chỉ mục.php liên kết đến nó

Tiếng vang"
Hồ sơ của tôi"; Bây giờ là mã cho chính trang đó profile.php

Hồ sơ<?php echo $login; ?>

Hồ sơ



"; tiếng vang" ".$array["name_user"]." ".$array["họ"]."
"; switch ($array["birthdate_month"])(//Chuyển số tháng thành dạng tên "1" : $month = "January"; break; case "2" : $month = "February"; break; trường hợp " 3" : $month = "tháng 3"; trường hợp "4" : $month = "tháng 4"; trường hợp "5" : $month = "tháng 5"; "Tháng 6"; trường hợp "7" : $month = "Tháng 7"; trường hợp "8" : $month = "tháng 8"; 10" : $month = "Tháng 10"; break; trường hợp "11" : $month = "Tháng 11"; break; $month = "Tháng 12"; echo "Ngày đăng ký: ".$array[" reg_date"]."
"; echo "Giới tính: ".$array["sex"]."
"; echo "Sinh nhật: ".$array["birthdate_day"]." ".$tháng." ".$array["birthdate_year"]."
"; echo "Quốc gia: ".$array["country"]."
"; echo "Thành phố: ".$array["city"]."
"; if($_GET["id"] == $id_user)(//Chỉ chủ sở hữu mới có thể chỉnh sửa hồ sơ echo "Chỉnh sửa hồ sơ"; ) )else( print<<Cổng vào:
Đăng nhập: Mật khẩu:
Đăng ký Khôi phục mật khẩu TẠI ĐÂY; ) ?>

Đương nhiên vào trang này chúng ta sẽ thấy avatar chuẩn noAvatar.jpg và có thể là họ và tên, nếu người dùng chỉ ra khi đăng ký thì các mục còn lại sẽ trống. Ở cuối trang này có một liên kết đến trang chỉnh sửa hồ sơ chỉnh sửa.php. Mã cho trang này rất nhẹ và bao gồm các biểu mẫu nhập dữ liệu. Do dung lượng khá lớn nên tôi sẽ không cung cấp đầy đủ ở đây mà chỉ cung cấp một phần; có thể lấy đầy đủ ở các tệp nguồn.

Tất cả các biểu mẫu khác đều tương tự và sẽ đề cập đến một trình xử lý save_edit.php, sẽ thực hiện các thay đổi đối với cơ sở dữ liệu. Nó cũng có một mã khá lớn và tôi cũng sẽ không trình bày nó ở đây mà sẽ chỉ cho bạn biết một chút về những gì xảy ra trong đó (bạn cũng có thể tìm thấy mã đầy đủ trong các tệp nguồn). Trước hết, chúng ta tạo một ảnh đại diện, tất nhiên nếu người dùng đã tải lên, nếu không thì chúng ta để nguyên ảnh đại diện. Nếu đúng như vậy thì trước hết chúng ta tải nó về thư mục hình đại diện(nhân tiện, hãy tạo thư mục này và cấp cho nó quyền ghi 755) sau khi kiểm tra các tiện ích mở rộng được phép. Sau đó, một hình ảnh mới được tạo với định dạng tùy thuộc vào chế độ đã chọn: $rezim = 1 một hình ảnh vuông được tạo ra, $rezim = 2 hình ảnh tỷ lệ thuận với hình ảnh gốc. Bạn cũng cần thiết lập chiều rộng của hình ảnh được tạo $w và chất lượng $chất lượng. Chúng tôi lưu hình ảnh đã tạo ở định dạng jpg bằng chức năng hình ảnh jpeg và tạo một tên ngẫu nhiên cho nó. Bây giờ bạn cần xóa hình ảnh cũ và cập nhật nó vào cơ sở dữ liệu bằng hình ảnh mới. Đó là tất cả cho hình ảnh.

Tất cả các mục khác trong tệp này nhằm mục đích cập nhật dữ liệu cá nhân về người dùng và là các truy vấn đơn giản tới cơ sở dữ liệu để cập nhật các trường. Trước khi cập nhật, sự tồn tại của các biến đến và độ an toàn của chúng được kiểm tra bằng cách sử dụng dấu gạch chéohtmlđặc biệt. Nếu cập nhật thành công, chúng tôi sẽ chuyển hướng người dùng ngay đến trang hồ sơ.
Bây giờ hãy đảm bảo rằng người dùng đã đăng nhập có thể nhìn thấy tất cả những người dùng đã đăng ký khác. Để làm điều này, hãy tạo một trang người dùng.php, sẽ hiển thị tất cả người dùng trong một vòng lặp.

Các vấn đề chung

Hỏi: Trình lược tả hiển thị hoạt động của máy chủ nhưng không hiển thị tất cả các yêu cầu và phiên.

MỘT:Đừng quên nhấp vào nút Bắt đầu để bắt đầu ghi lại các phiên.

Hỏi: Tôi đã cố gắng kết nối với MySQL nhưng Phiên không được hiển thị.

MỘT: Neor Profile SQL hoạt động như một máy chủ proxy. Điều này có nghĩa là chỉ những phiên đi qua trình lược tả mới có thể được hiển thị. Ứng dụng (hoặc trang web) của bạn phải được kết nối với trình lược tả như thể nó là một máy chủ MySQL thông thường. Trình lược tả chỉ sử dụng các kết nối đến TCP. Và sau đó bạn sẽ thấy kết quả trong tab Phiên.

Hỏi: Tại sao một số phiên có yêu cầu với thời gian bằng 0?

MỘT: Các truy vấn không có thời gian được thực hiện cực kỳ nhanh chóng mà không có độ trễ. Các truy vấn như vậy có thể được DBMS lưu vào bộ nhớ đệm hoặc được thực thi rất nhanh, chẳng hạn như nếu bạn có một máy chủ mạnh và các bảng được tối ưu hóa tốt.

Hỏi:% có ý nghĩa gì về thời gian và thời lượng trong một phiên?

MỘT:"% thời gian" là phần trăm của tổng thời gian thực hiện phiên. "Duration %" là phần trăm yêu cầu dài nhất trong phiên (tỷ lệ với yêu cầu dài nhất).

Hỏi: Tôi sử dụng JetProfiler và nó dễ cài đặt hơn.

MỘT: JetProfiler nhận thông tin từ máy chủ MySQL thông qua lệnh "hiển thị trạng thái" và không thể lấy tất cả thông tin trên máy chủ vì nó hoạt động riêng biệt. Neor Profile SQL hiển thị hoàn toàn tất cả các truy vấn tới cơ sở dữ liệu. Và điều này đòi hỏi phải định cấu hình ứng dụng của bạn để định tuyến luồng yêu cầu thông qua trình lược tả.

Hỏi: Nút Profile trong tab SQL không hiển thị kết quả

MỘT: Tính năng lược tả trong SQL Editor hoạt động thông qua lệnh SHOW PROFILES, lệnh này đã được thêm vào Máy chủ cộng đồng MySQL bắt đầu từ phiên bản 5.0.37. Kiểm tra phiên bản máy chủ MySQL của bạn.

Hỏi: Có thể tạo bảng điều khiển hồ sơ dựa trên không?

MỘT:Đối với bảng điều khiển, hãy sử dụng kết hợp nhật ký và đuôi DBMS hoặc các công cụ bảng điều khiển đặc biệt, trong đó có khá nhiều công cụ. Neor Profile SQL là một ứng dụng hệ điều hành cửa sổ được thiết kế để đặt trên hệ thống của nhà phát triển.

Hỏi: Trình lược tả hoạt động nhưng vì lý do nào đó nó không hiển thị biểu đồ thống kê chính?

MỘT: Biểu đồ chính sử dụng lệnh SHOW STATUS cho máy chủ chính. Bạn có thể không có quyền chạy lệnh này trên máy chủ. Hãy chắc chắn rằng bạn có quyền cho lệnh này.

Hỏi: Làm cách nào để chạy trình cài đặt ở chế độ im lặng?

MỘT: sqlprofiler-4.1.1.exe /S /D:C:Program Files (x86)Neor Profile SQL

các cửa sổ

Hỏi: Làm cách nào để kiểm tra kết nối Profiler?

MỘT: Sử dụng máy khách bảng điều khiển MySQL để kết nối với trình lược tả. Nếu bạn thấy phiên của mình trong tab Phiên, điều này có nghĩa là mọi thứ đều được định cấu hình chính xác.
Ví dụ:
Sau đó chạy một lệnh SQL đơn giản:
hiển thị bảng;
Và xem điều gì đã xảy ra trong tab Phiên trong trình lược tả.

Linux

Hỏi: Tôi không thể kết nối qua localhost.

MỘT: Linux cố gắng liên kết localhost với kết nối socket, nhưng Neor Profile SQL chỉ hoạt động với kết nối TCP. Đặt địa chỉ máy chủ trong trình lược tả thành 127.0.0.1 thay vì localhost. Bạn có thể làm tương tự trong cài đặt ứng dụng của mình.
Ví dụ:
mysql --host=127.0.0.1 --user=ĐĂNG NHẬP --password=MẬT KHẨU --port=4040

Hỏi: Tôi không thể kết nối với 127.0.0.1.

MỘT: Kiểm tra loại kết nối trong ứng dụng của bạn. Bạn cũng có thể sử dụng loại kết nối ổ cắm cục bộ mà không yêu cầu bạn nhập giá trị cổng.

Hỏi: Làm cách nào để cài đặt Neor Profile SQL trong OpenSUSE?

MỘT: Hiện tại chúng tôi chỉ hỗ trợ gói DEB chạy trên Ubuntu, Debian và các bản phân phối Linux tương thích. Bạn có thể tự tạo một tệp RPM và nhờ đó sẽ hữu ích.

Hỏi: Tại sao tôi không thể chặn các yêu cầu của Sysbench?

MỘT: Trình lược tả chỉ sử dụng các kết nối đến TCP. Chạy Sysbench với thông số máy chủ và cổng:
sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=4040--mysql-user=root --mysql-password=chuẩn bị mật khẩu

Mac OS X

Hỏi: Trình hồ sơ không thể kết nối với máy chủ MAMP MySQL.

MỘT: Sự cố kết nối mạng trong cấu hình MySQL:

  1. MAMR
    Phiên bản miễn phí– sao chép cấu hình MySQL tiêu chuẩn vào thư mục
    /Ứng dụng/MAMP/conf/my.cnf
    Phiên bản chuyên nghiệp– mở menu FILE – EDIT – Mẫu MySQL
  2. trong cấu hình my.cnf, hãy xóa dòng bỏ qua mạng
  3. trong Cài đặt hồ sơ, thay đổi địa chỉ máy chủ cơ sở dữ liệu từ localhost thành 127.0.0.1

Thay đổi cổng MySQL trong tập lệnh của bạn

Trong Neor Profile SQL, cổng mặc định là 4040. Để thu thập các truy vấn SQL, bạn phải thay đổi các giá trị mặc định để kết nối với máy chủ MySQL và cổng 3306 trong tập lệnh của mình.

chuỗi connStr = " máy chủ=127.0.0.1;port=4040; cơ sở dữ liệu=YOUR_DATABASE;user=YOUR_USER;password=YOUR_PASSWORD;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html


Thay đổi cổng trong CMS phổ biến

Wordpress

Tập tin: wp-config.php
Mã: xác định ("DB_HOST", "localhost :4040 ");

PrestaCửa hàng

Tập tin: config/settings.inc.php
Mã: xác định ("_DB_SERVER_", "localhost :4040 ");

OpenCart

Tập tin: config.php
Mã: xác định ("DB_HOSTNAME", "localhost :4040 ");

Tôi đã viết về người dùng WordPress (xem liên kết). Nhưng giống như bất kỳ công cụ nào (ngoại trừ búa tạ), Adminimize không lý tưởng và nó không thể xóa hoàn toàn mọi thứ, mặc dù điều này chỉ nhờ vào các lập trình viên WordPress.

Bài này ra đời một cách tự phát, có thể nói là nhờ khách Blow. Ý chính của câu hỏi của anh ấy là thế này (giống như một loạt câu hỏi):

1. Làm cách nào để ẩn "Lựa chọn lược đồ màu" cho người dùng?

2. Làm cách nào để ẩn “Phím nóng” và “Trình chỉnh sửa trực quan” trong bảng điều khiển WordPress?

Tôi sẽ đi thẳng vào vấn đề. Sử dụng phương pháp này, bạn có thể ẩn bất kỳ thành phần nào của người dùng trong hồ sơ của họ cũng như trên các trang khác. Cách dễ nhất là chỉnh sửa tập tin hiển thị!

Đối với “Hồ sơ” đây là một tập tin người dùng-edit.php, nằm trong thư mục wp-admin. Bạn cần phải chỉnh sửa nó thật cẩn thận, nếu không bạn có thể “trả giá” hậu hĩnh cho những thử nghiệm của mình.

Giải pháp (thống nhất):

1. Tải tệp xuống PC của bạn và tạo một bản sao của nó (an toàn....)

2. Chúng tôi đang tìm kiếm mã HTML chịu trách nhiệm hiển thị thông tin chúng tôi cần.

3. Nhận xét cẩn thận về nó và “lấp đầy” nó bằng một vật thay thế.

Bây giờ hãy thực hành (chỉnh sửa User-edit.php):

Thành thật mà nói, tôi không nhớ mình có phiên bản WP nào trên trang web thử nghiệm, nhưng nó chắc chắn không thấp hơn 2.8.2.

Đầu tiên, tôi tải tệp xuống PC của mình và xem mã bằng Trình xem mã Chrome và tìm thấy mã được yêu cầu trong Notepad++.

(hai dấu gạch ngang mỗi bên “-”)

1. Ẩn “Trình chỉnh sửa trực quan”

Thay đổi mã:

—>

ps: đừng sao chép mã này mà hãy tự thay đổi nó - khả năng xảy ra lỗi rất cao!!!

2. Ẩn “Chọn bảng màu”.

Tôi hy vọng bạn nhận thấy sự khác biệt giữa các mã - tổng cộng 7 ký tự đã được thêm vào. Để ẩn mục này, chúng tôi đang tìm kiếm nếu (đếm($_wp_admin_css_colors) > 1) và bình luận bên dưới dòng tất cả mã giữa trước

3. Ẩn “Phím nóng”.

Ở bài thứ hai chúng ta sẽ viết thêm hai lớp nữa và hoàn thành xong phần nội bộ của script.

Kế hoạch

Mục tiêu của loạt bài hướng dẫn này là tạo ra một ứng dụng đơn giản cho phép người dùng đăng ký, đăng nhập, đăng xuất và thay đổi cài đặt. Lớp chứa tất cả thông tin về người dùng sẽ được gọi là Người dùng và nó sẽ được định nghĩa trong tệp User.class.php. Lớp chịu trách nhiệm về đầu vào/đầu ra sẽ được gọi là UserTools (UserTools.class.php).

Một chút về cách đặt tên lớp

Nghi thức đúng đắn là đặt tên các tệp mô tả một lớp có cùng tên với chính lớp đó. Điều này giúp dễ dàng xác định mục đích của từng tệp trong thư mục lớp.

Người ta cũng thường thêm .class hoặc .inc vào cuối tên tệp lớp. Bằng cách này, chúng tôi xác định rõ ràng mục đích của tệp và có thể sử dụng .htaccess để hạn chế quyền truy cập vào các tệp này.

Lớp người dùng (User.class.php)

Lớp này sẽ xác định từng người dùng. Khi ứng dụng này phát triển, định nghĩa về "Người dùng" có thể thay đổi đáng kể. May mắn thay, lập trình OOP giúp dễ dàng thêm các thuộc tính người dùng bổ sung.

Người xây dựng

Trong lớp này chúng ta sẽ sử dụng hàm tạo - đây là hàm được gọi tự động khi tạo bản sao tiếp theo của lớp. Điều này cho phép chúng tôi tự động xuất bản một số thuộc tính sau khi dự án được tạo. Trong lớp này, hàm tạo sẽ lấy một đối số duy nhất: một mảng kết hợp chứa một hàng từ bảng người dùng trong cơ sở dữ liệu của chúng ta.

require_once "DB.class.php"; Người dùng lớp ( public $id; public $username; public $hashedPassword; public $email;
công khai $joinDate;
//Hàm tạo được gọi khi một đối tượng mới được tạo// Lấy một mảng kết hợp với hàng DB làm đối số. hàm __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" tên người dùng"])) ? $data["username"] : ""; $this->hashedPassword = (isset($data["password"])) ? $data["password"] : ""; $this- >email = (isset($data["email"])) ? $data["email"] : ""; $this->joinDate = (isset($data["join_date"])) $data[" join_date "] : ""; )
public function save($isNewUser = false) ( //tạo một đối tượng cơ sở dữ liệu mới. $db = new DB(); //nếu người dùng đã đăng ký và chúng tôi //chỉ cập nhật thông tin của họ. if(!$isNewUser ) ( //đặt mảng dữ liệu $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"email" => ""$this->email"");
//cập nhật hàng trong cơ sở dữ liệu $db->update($data, "users", "id = ".$this->id); )else ( //nếu người dùng được đăng ký lần đầu tiên. $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(); ) ) ?>

Giải trình

Phần đầu tiên của mã, nằm ngoài vùng lớp, đảm bảo rằng lớp được kết nối với cơ sở dữ liệu (vì lớp Người dùng có chức năng yêu cầu lớp này).

Thay vì các biến thuộc lớp “được bảo vệ” (được sử dụng trong bài học đầu tiên), chúng tôi định nghĩa chúng là “công khai”. Điều này có nghĩa là bất kỳ mã nào bên ngoài lớp đều có quyền truy cập vào các biến này khi làm việc với đối tượng Người dùng.

Hàm tạo lấy một mảng trong đó các cột trong bảng là khóa. Chúng ta định nghĩa một biến lớp bằng cách sử dụng $this->variablename. Trong ví dụ về lớp này, trước tiên chúng ta kiểm tra xem giá trị của một khóa nhất định có tồn tại hay không. Nếu có thì chúng ta đặt biến lớp thành giá trị đó. Ngược lại, chuỗi trống. Mã sử ​​dụng dạng ký hiệu ngắn nếu:

Giá trị $ = (3 == 4)? “A” : “B”;

Trong ví dụ này chúng ta đang kiểm tra xem 3 có bằng 4 không! Nếu có - thì $value = “A”, không - $value = “B”. Trong ví dụ của chúng tôi, kết quả là $value = “B”.

Chúng tôi lưu thông tin về Người dùng trong cơ sở dữ liệu

Hàm save dùng để thực hiện các thay đổi đối với bảng cơ sở dữ liệu với các giá trị hiện tại trong đối tượng User. Hàm này sử dụng lớp DB mà chúng ta đã tạo trong hướng dẫn đầu tiên. Sử dụng các biến lớp, mảng dữ liệu $ được thiết lập. Nếu dữ liệu người dùng được lưu lần đầu tiên thì $isNewUser sẽ được chuyển thành $true (false theo mặc định). Nếu $isNewUser = $true thì hàm chèn() của lớp DB sẽ được gọi. Ngược lại, hàm update() sẽ được gọi. Trong cả hai trường hợp, thông tin từ đối tượng người dùng sẽ được lưu vào cơ sở dữ liệu.

Lớp UserTools.class.php

Lớp này sẽ chứa các hàm liên quan đến người dùng: login(), logout(), checkUsernameExists() và get(). Nhưng với việc mở rộng ứng dụng này, bạn có thể bổ sung thêm nhiều thứ khác.

//UserTools.class.php require_once "User.class.php"; require_once "DB.class.php";
lớp UserTools(
// Đăng nhập người dùng. Đầu tiên kiểm tra xem //tên người dùng và mật khẩu có khớp với một hàng trong cơ sở dữ liệu hay không. //Nếu thành công, hãy đặt các biến phiên // và lưu trữ đối tượng người dùng bên trong.
đăng nhập chức năng công cộng ($ tên người dùng, $ mật khẩu)
{
$hashedPassword = md5($password); $result = mysql_query("CHỌN * TỪ người dùng WHERE tên người dùng = "$username" VÀ mật khẩu = "$hashedPassword""); if(mysql_num_rows($result) == 1) ( $_SESSION["user"] = serialize(new User(mysql_fetch_assoc($result))); $_SESSION["login_time"] = time(); $_SESSION["logged_in "] = 1; trả về true; )else( trả về false; ) )
// Đăng xuất người dùng. Phá hủy các biến phiên. public function logout() ( unset($_SESSION["user"]); unset($_SESSION["login_time"]); unset($_SESSION["logged_in"]); session_destroy(); ) // Kiểm tra xem có một tên người dùng tồn tại. // Điều này được gọi trong quá trình đăng ký để đảm bảo tất cả tên người dùng là duy nhất. chức năng công khai checkUsernameExists($username) ( $result = mysql_query("select id from user which username="$username""); if(mysql_num_rows($result) == 0) ( return false; )else( return true; )
}
//lấy một người dùng //trả về một đối tượng Người dùng. Lấy id người dùng làm hàm công khai đầu vào get($id) ( $db = new DB(); $result = $db->select("users", "id = $id"); return new User($result ); ) )
?>

hàm đăng nhập()

Hàm login() đã rõ ràng ngay từ tên của nó. Nó lấy các đối số người dùng $username và $password và kiểm tra xem chúng có khớp không. Nếu mọi thứ khớp, hãy tạo một đối tượng Người dùng với tất cả thông tin và lưu nó vào phiên. Xin lưu ý rằng chúng tôi chỉ sử dụng hàm PHP serialize(). Nó tạo ra một phiên bản được lưu trữ của đối tượng có thể dễ dàng hủy tuần tự hóa bằng cách sử dụng unserialize(). Ngoài ra, thời gian đăng nhập sẽ được lưu lại. Điều này có thể được sử dụng sau này để cung cấp cho người dùng thông tin về thời gian lưu trú trên trang web.

Bạn cũng có thể nhận thấy rằng chúng tôi đặt $_SESSION["logged_in"] thành 1. Điều này cho phép chúng tôi dễ dàng kiểm tra trên mỗi trang xem người dùng đã đăng nhập hay chưa. Chỉ cần kiểm tra biến này là đủ.

hàm đăng xuất()

Cũng là một chức năng đơn giản. Hàm PHP unset() xóa các biến trong bộ nhớ, trong khi session_destroy() sẽ xóa phiên.

hàm checkUsernameExists()

Ai biết tiếng Anh sẽ dễ dàng hiểu được chức năng. Nó chỉ đơn giản hỏi cơ sở dữ liệu xem thông tin đăng nhập tương tự đã được sử dụng hay chưa.

hàm get()

Hàm này lấy id duy nhất của người dùng và thực hiện truy vấn tới cơ sở dữ liệu bằng cách sử dụng lớp DB, cụ thể là hàm select(). Nó sẽ lấy một mảng kết hợp với một số thông tin người dùng và tạo một đối tượng Người dùng mới, chuyển mảng đó cho hàm tạo.

Tôi có thể sử dụng cái này ở đâu? Ví dụ: nếu bạn tạo một trang cần hiển thị hồ sơ người dùng cụ thể, bạn sẽ cần tìm nạp động thông tin này. Đây là cách bạn có thể thực hiện: (giả sử URL là http://www.website.com/profile.php?userID=3)

// lưu ý: trước tiên bạn sẽ phải mở kết nối cơ sở dữ liệu. //xem Phần 1 để biết thêm thông tin về cách thực hiện. //Bạn cũng phải đảm bảo rằng bạn đã bao gồm các tệp lớp.
$tools = Công cụ người dùng mới(); $user = $tools->get($_REQUEST["userID"]); echo "Tên người dùng: ".$user->tên người dùng.""; echo "Đã tham gia: ".$user->joinDate."";

Một cách dễ dàng! Có đúng không?

Bước cuối cùng ở phía máy chủ: Global.inc.php

Global.inc.php là bắt buộc đối với mọi trang trên trang web. Tại sao? Bằng cách này, chúng tôi sẽ đặt tất cả các hoạt động thông thường mà chúng tôi cần trên trang. Ví dụ: chúng ta sẽ bắt đầu session_start(). Kết nối cơ sở dữ liệu cũng sẽ mở.

require_once "classes/UserTools.class.php";
require_once "classes/DB.class.php";
//kết nối với cơ sở dữ liệu $db = new DB(); $db->kết nối();
//khởi tạo đối tượng UserTools $userTools = new UserTools(); //bắt đầu phiên
session_start();
// làm mới các biến phiên nếu đã đăng nhập if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($user->id) ) ?>

Anh ta đang làm gì vậy?

Có một số điều đang diễn ra ở đây. Trước hết chúng ta mở kết nối tới cơ sở dữ liệu.

Sau khi kết nối, chúng ta khởi động hàm session_start(). Hàm tạo một phiên hoặc tiếp tục phiên hiện tại nếu người dùng đã đăng nhập. Vì ứng dụng của chúng tôi được thiết kế để người dùng đăng nhập/đăng xuất nên tính năng này là bắt buộc trên mọi trang.

Tiếp theo, chúng tôi kiểm tra xem người dùng đã đăng nhập chưa. Nếu vậy, chúng tôi sẽ cập nhật $_SESSION["user"] để phản ánh thông tin người dùng mới nhất. Ví dụ: nếu người dùng thay đổi email của mình, email cũ sẽ được lưu trữ trong phiên. Nhưng với bản cập nhật tự động, điều này sẽ không xảy ra.

Điều này kết thúc phần thứ hai! Hãy chú ý đến bài học cuối cùng về chủ đề này vào ngày mai.

Mọi điều tốt đẹp nhất!