Không hành động Thêm đánh giá PHP. Hướng dẫn về các loại hồ sơ người dùng: Tạo, bài tiết và các trường bổ sung

Khi bạn quyết định tạo trang web hoặc blog của mình và cho hệ thống quản lý, bạn đã chọn WordPress ... Thời gian trôi qua trang web của bạn ngày càng dễ đọc và ở đây, bạn nhận ra rằng để phổ biến hơn nữa, cần phải thêm một chút chức năng đến trang web hoặc chỉ đơn giản là tự động hóa hành động đó.

Bạn đến "kho" của plugin cho WordPress và khám phá rằng không có trình cắm cần thiết cho bạn. Làm gì? Làm sao để? Nếu bạn ít nhất một chút quen thuộc với lập trình AZA trên PHP, bố trí, thì bạn sẽ không khó Tự viết plugin cho wordpress.

Bây giờ đi đến "bếp" để chuẩn bị plugin của chúng tôi.

P.S. Nếu không có kiến \u200b\u200bthức về PHP và bố cục ... đừng nản lòng, hãy yêu cầu ai đó viết cho bạn chức năng mong muốn 🙂

Trước khi bắt đầu viết plugin, bạn phải liên hệ với tài liệu WordPress nơi các nguyên tắc cơ bản của các plugin viết và một số ví dụ mã được mô tả.

Tôi sẽ không sao chép thông tin này và ngay lập tức tiến hành viết mã.

Chúng tôi sẽ viết một plugin đơn giản sẽ cho phép bạn lưu và hiển thị đánh giá về trang web của bạn. Tất nhiên, các plugin như vậy đã ở đó, nhưng ví dụ, nó sẽ xuất hiện.

Điều đầu tiên chúng ta sẽ làm là đưa ra tên duy nhất cho plugin của chúng tôi - " Advuserreview.«.

Tiếp theo, chúng tôi sẽ tạo trong thư mục của trang web của bạn "/ wp-content / plugin /" một thư mục mới "AdvUseReviews". Và chúng tôi sẽ tạo tệp "AdvUserReviews.php". Nó sẽ là tập tin chính sẽ chịu trách nhiệm khởi tạo công khai. (Tốt nhất là sử dụng mã hóa cho các tệp UTF-8).

Ở đầu tập tin, bạn phải chỉ định thông tin cơ bản về plugin

Bây giờ, nếu bạn đến bảng điều khiển, bạn có thể thấy rằng hệ thống đã tìm thấy một plugin mới và cung cấp để kích hoạt nó. Nhưng cho đến nay để làm điều đó sớm.

Plugin mới của chúng tôi, chúng tôi sẽ viết theo kiểu OOP và tất cả việc xử lý dữ liệu sẽ nằm trong cùng một tệp. Tạo một khung tệp cơ bản.

// dừng cuộc gọi trực tiếp nếu (preg_match (# "basename (__ file__)." # ", $ _Server [" php_elf "])) (chết (" bạn không được phép gọi trang này trực tiếp. ");) If (! Class_exists ("advusreviews") (Lớp AdvUsewiews (// Lưu trữ dữ liệu nội bộ Công khai $ Data \u003d mảng (); // Trình thiết kế đối tượng // Khởi tạo các biến cơ bản Chức năng AdvUSERREVIVE () () $ Rpice \u003d advuserreview () mới;

Bây giờ Trình thiết kế đối tượng được cung cấp với mã sau:

Chức năng AdvUSERREVIEW () (Global $ WPDB; // khai báo hằng số khởi tạo của plugin xác định của chúng tôi ("advuserreview", true); // tên của tệp máy bay của chúng tôi $ this-\u003e plugin_name \u003d plugin_basename (__ // Địa chỉ URL cho Plugin $ của chúng tôi-\u003e plugin_url \u003d TrailingsLashit (WP_PLUGIN_URL. "/" Dirname (plugin_basename (__ file__))); // bảng để lưu trữ đánh giá của chúng tôi // Hãy chắc chắn được khai báo toàn cầu $ WPDB $ này -\u003e tbl_ stad_review \u003d $ wpdb-\u003e tiền tố. "Adv_review"; // một hàm được thực thi khi trình cắm đăng ký_activation_hook ($ this-\u003e plugin_name, mảng (& $ này, "kích hoạt")); // a Chức năng được thực thi khi hủy kích hoạt trình đăng ký_deactivation_hook ($ this-\u003e plugin_name, mảng (& $ này, "hủy kích hoạt"))); // Chức năng được thực thi bằng cách xóa trình cắm đăng ký_uninstall_hook ($ này-\u003e plugin_name, mảng (& $ cái này, "Gỡ cài đặt"));)

Trong nhà thiết kế đối tượng, chúng ta sử dụng 3 "hook" hoặc "hook" (nó là gì?): Đăng ký_activation_hook., Đăng ký_deactivation_hook.đăng ký_uninstall_hook. - Đây là các chức năng được thực hiện khi kích hoạt, hủy kích hoạt plugin và loại bỏ nó, tương ứng.

Bây giờ trực tiếp thực hiện các chức năng này.

/ ** * Kích hoạt plugin kích hoạt * / hàm (Global $ WPDB; yêu cầu_Once (abspath. "WP-admin / nâng cấp-hàm.php"); $ BẢNG \u003d $ this-\u003e tbl_adv_review; // Định nghĩa của MySQL nếu Phiên bản (phiên bản_compare (mysql_get_server_info (), "4.1.0", "\u003e \u003d")) (if (! trống ($ wpdb-\u003e Bộ ký tự)) $ ký tự_collate \u003d "Bộ ký tự mặc định $ WPDB-\u003e Charset"; if (! trống ($ wpdb-\u003e đối chiếu)) $ charset_collate. \u003d "Collate $ wpdb-\u003e Collate";) // Cấu trúc của bảng của chúng tôi để đánh giá $ sql_table_adv_reviews \u003d "tạo bảng`. $ wpdb-\u003e tiền tố." adv_reviews` ( `id` int (10) usblign null auto_increment,` review_title` varchar (255) không null mặc định "0", `review_text` văn bản không ,` risk_date` dấu thời gian không null mặc định hiện tại_timestamp, `review_user_name` varchar (200) , `Review_user_email` varchar (200) , khóa chính (` id`)). "$ Charset_collate.";; // kiểm tra sự tồn tại của bảng if ($ wpdb-\u003e get_var ("hiển thị các bảng như". "$ Bảng. "" ")! \u003d $ BẢNG) (DBDELTA ($ sql_table_adv_Reviews);)) / ** * deact Ốp * / chức năng hủy kích hoạt (trả về TRUE; ) / ** * Xóa plugin * / hàm gỡ cài đặt () WPDB; $ wpdb; $ wpdb-\u003e truy vấn (bảng thả nếu tồn tại ($ wpdb-\u003e prefix) adv_reviews ");)

Biến đổi $ WPDB. Chịu trách nhiệm cho các yêu cầu cơ sở dữ liệu. Chức năng dbdelta.phân tích cấu trúc hiện tại của bảng, so sánh EE với cấu trúc bảng mong muốn và thêm hoặc thay đổi bảng khi cần.

Theo đó, khi kích hoạt trình cắm tạo tạo cấu trúc bảng để lưu trữ các đánh giá. Với sự hủy kích hoạt của plugin, không có hành động xảy ra, nhưng khi bạn xóa, chúng tôi xóa bảng của chúng tôi. Chi tiết hơn, các hành động có thể được hiểu thông qua mã nguồn.

Cấu trúc chính của plugin mới đã sẵn sàng. Bây giờ nó là cần thiết để bắt đầu viết phần chức năng. Để làm điều này, trong nhà thiết kế lớp, chúng ta cần thêm các dòng mã sau vào:

// Nếu chúng ta đang ở Đô đốc. Nếu giao diện (is_admin ()) (// thêm các tập lệnh và add_act_scripts ("wp_print_scripts", mảng (& $ này, "admin_load_scripts")); add_action ("wp_print_styles", mảng (& $ này, "admin_load_styles")); // Thêm một menu cho plugin add_acction ("admin_mothy", mảng (& $, "admin_gen_gen_mothy"));) other (// Thêm kiểu và tập lệnh add_action ("wp_print_scripts", mảng (& $ này, "site_load_scripts") ); Add_ction ("wp_print_styles", mảng (& $ này, "site_load_styles")); add_shortcode ("show_review", mảng (& $ này, "site_show_reviews"));));)

Chúng tôi sẽ phân tích nhiều hơn mã mã này. Hãy bắt đầu với bảng quản trị.
Chức năng " is_admin."Kiểm tra chế độ nào bây giờ chúng ta làm việc trên trang web hoặc trong bảng điều khiển.
Sau đó sử dụng lưỡi hơi, cho các hàm:

  • wp_print_scripts. - Thêm các tệp JavaScript cần thiết
  • wp_print_styles. - Thêm các kiểu cần thiết
  • admin_menu. - Thêm một menu mới trong bảng điều khiển

Mỗi hook tương ứng với phương thức được triển khai trong lớp của chúng tôi. Trong đó các hoạt động cần thiết được thực hiện.
Xem xét mã để kết nối các kiểu và kịch bản

/ ** * Tải xuống các tập lệnh cần thiết cho trang điều khiển * trong Bảng điều khiển * / Chức năng Admin_load_scripts () (// Chúng tôi đăng ký tập lệnh wp_register_script ("advreviewsadminjs", $ này-\u003e plugin_url. "JS / admin-script.js" ); wp_register_script ("jQuery", $ này-\u003e plugin_url. "JS / jQuery-1.4.2.min.js"); // thêm tập lệnh vào trang wp_enque_script; wp_enqueue_script ("jQuery");) / ** * Tải xuống các kiểu yêu cầu cho trang điều khiển * Trong bảng quản trị * / chức năng admin_load_styles () (// đăng ký các kiểu WP_REGISTER_STYLE ("advreviewsadmincss", $ này-\u003e plugin_url. "Css / admin-style.css"); // Thêm kiểu WP_ENQUE_STYLE ("advreviewsadmincss");)

Các chức năng sau đây được sử dụng ở đây.

Mỗi hành động phụ thuộc vào tham số "Hành động" được truyền tương ứng, "Chỉnh sửa" - việc thu hồi, "Gửi" - lưu lại sự hủy bỏ đã chỉnh sửa và "xóa" - xóa hủy bỏ việc hủy bỏ.

Trao đổi dữ liệu với các trang hiển thị xảy ra thông qua thuộc tính của đối tượng "Dữ liệu". Mã nguồn của các trang này sẽ được đặt trong kho lưu trữ với mô-đun này ở cuối bài viết. Ở đây tôi sẽ không chèn chúng, vì chủ đề đã khá lớn.

Về điều này, bảng quản trị kết thúc và tiến hành hiển thị và thêm đánh giá từ người dùng.

Để chỉ định WordPress, khi cần gọi plugin của chúng tôi, bạn cần đăng ký "Shortcode", được thực hiện trong nhà thiết kế lớp của chúng tôi. Nhiều hơn về điều này.

Add_shortcode ("show_review", mảng (& $ này, "site_show_reviews")));

Bây giờ trên bất kỳ trang nào của trang web, bạn có thể đặt mã này và điều này sẽ buộc chức năng được chỉ định bởi chúng tôi (được truyền bởi tham số thứ hai). Dưới đây là mã nguồn của chức năng này.

/ ** * Danh sách các đánh giá trên trang web * / chức năng công khai_Show_review ($ atts, $ powent \u003d null) (Global $ WPDB; if (ipset ($ _ POST ["Action]) && $ _Post [" Action "] \u003d \u003d "Thêm đánh giá") ($ this-\u003e add_user_review ();) // chọn tất cả các đánh giá từ $ is-\u003e Cơ sở dữ liệu dữ liệu ["đánh giá"] \u003d $ wpdb-\u003e get_results ("chọn *". $ Này-\u003e tbl_adv_review. "` ", Array_a); ## bao gồm bộ đệm ob_start (); ences_once (" site_reviews.php "); ## Chúng tôi nhận được dữ liệu $ đầu ra \u003d ob_get_conts (); ## Tắt bộ đệm ob_end_clean ( ); Trả lại $ đầu ra;) add_user_usiew () (toàn cầu $ WPDB; $ inputdata \u003d mảng ("đánh giá_title" \u003d\u003e swip_tags ($ _ post ["đánh giá_title"]) "," đánh giá_text "\u003d\u003e sword_tags ($ _ post ["Đánh giá"]) "," đánh giá_user_name "\u003d\u003e swip_tags ($ _ bài [" đánh giá_user_name "]", "đánh giá_user_email" \u003d\u003e swip_tags ($ _ post ["đánh giá_user_email"]; // Thêm đánh giá mới vào $ wpdb-\u003e chèn trang web ($ this-\u003e tbl_adv_review, $ inputdata);)

Về nguyên tắc, không có gì phức tạp ở đây - Truy vấn SQL được thực hiện để chọn dữ liệu, nếu tham số "Hành động" được truyền, thì một đánh giá mới được thêm vào. Nhưng nó đáng để chú ý đến việc đệm của đầu ra. Nó là cần thiết để có được dữ liệu của trang được chèn.

Không sao đâu. Bây giờ bạn có thể thấy những gì chúng ta đã làm. NHƯNG tải xuống plugin và mã nguồn Bạn có thể ở đây.

Tất nhiên, đây chỉ là một ví dụ về việc tạo một trình cắm thêm, nhưng cũng sẽ xuất hiện như một vị khách đơn giản, nếu đó là một chút sửa đổi, ví dụ, thêm bảo vệ chống lại các bot và vỉa hè. Mã hóa tốt :)

Mẫu trên trang web:

Bảng điều khiển plugin:

Chỉnh sửa đánh giá:

Có lẽ bạn cũng sẽ quan tâm:


Một khung ngăn xếp đầy đủ nhanh hơn hầu hết nếu không phải tất cả các khung vi mô. Khung này không dành cho người mới bắt đầu. Nó từ bỏ nhà phát triển để thực hiện chúng. Nếu bạn có một sự hiểu biết thực sự về PHP và hiệu suất là mối quan tâm, thì không tìm đâu xa. Tài liệu này là kỹ lưỡng, nhưng không phải người mới bắt đầu và cộng đồng có phần thưa thớt, nhưng tôi có thể "t Hiệu suất căng thẳng đủ. Khung này đặt các ứng dụng PHP của tôi vào mức hiệu suất với các ứng dụng Java.

Phlacon là từ quan điểm của tôi không chỉ là khung nhanh nhất trên thị trường, mà nó cung cấp các tính năng khác nhau và các thành phần đẹp. Cũng rất tốt để sử dụng như microframework cho api residfull "S hoặc Full MVC Framework. Đi kèm với C ORM và công cụ mẫu Croig. Ngoài ra những gì tôi thực sự đánh giá cao là cách khung động, bạn chỉ sử dụng những gì bạn muốn, bạn chỉ cần thay thế Các lớp và thư viện cho các tùy chỉnh hoặc ảnh hưởng đến dòng chảy với các sự kiện.

Rất tốt công việc, chỉ có một vấn đề là cộng đồng nhưng tôi tin rằng nó sẽ phát triển rất nhanh :)

Phalcon chắc chắn là một trong những khuôn khổ nhanh nhất ra mắt. Mặt khác, tài liệu có một chút vô tổ chức, các công cụ web (bộ tạo mã) có các vấn đề lớn trong Windows và nó vẫn còn thiếu một chút cộng đồng để giúp đỡ mới Nhà phát triển. Nhưng một lần nữa, hiệu suất, wow.

Câu trả lời

Dựa trên https://toster.ru/q/276441 Vật chất bị ảnh hưởng, nhiều phụ thuộc vào dự án, vì vậy bài đăng này đáng để thích ứng dưới trường hợp của bạn.

* Sự an toàn:
- Mỗi đối số của một phương thức loại đơn giản nên được kiểm tra trên loại trong trường hợp proxing và trên các giá trị biên trong trường hợp xử lý. Một chút sai - một ngoại lệ là nổi bật. Nếu một phương thức có nhiều đối số thêm 80% bao gồm hiệu chuẩn từ các đối số - nó khá bình thường))
- Không có kích hoạt_error, chỉ có ngoại lệ.
- Ngoại lệ phải là con người và dễ hiểu, tất cả các loại "một cái gì đó đã sai" có thể được trao cho người dùng, nhưng ngoại lệ nên được truy cập bằng một nét vẽ và một mô tả dễ hiểu, đã sai ở đó.
- Mỗi đối số (đối tượng) của phương thức phải có với Tapchinting đến lớp này hoặc giao diện.
- Đối với eval thường bị khiển trách chặt chẽ
- @ Chỉ được phép trong các tình huống vô vọng, chẳng hạn như kiểm tra json_last_error.
- Trước khi làm việc với cơ sở dữ liệu - Xác minh dữ liệu bắt buộc.
- Không \u003d\u003d và! \u003d. Swtich là ngoại lệ duy nhất, về tình hình.
- Nếu phương thức không chỉ trả về BOOL và một thứ khác là kiểm tra cứng nhắc với \u003d\u003d\u003d, hoặc! \u003d\u003d bắt buộc.
- Không có điều kiện thích hợp bên trong. Trong khi ($ row \u003d ...) - cũng không thể chấp nhận được.
- Getters Magical / Setters chỉ được phép trong các tình huống vô vọng, nếu không bị cấm.
- Ghép nối trong SQL - chỉ trong các tình huống vô vọng.
- Các tham số trong SQL - chỉ thông qua Playcold.
- Không có biến toàn cục.
- Ngày ở dạng chuỗi chỉ được phép trong các mẫu và trong cơ sở dữ liệu, trong mã PCP được chuyển đổi ngay lập tức thành \\ datetimeimơ (trong các tình huống vô vọng \\ datetime)
- Tất nhiên, nó phụ thuộc vào dự án, nhưng thường chỉ có hai điểm nhập phải là: index.php cho web và bảng điều khiển (hoặc bằng cách nào đó tên khác nhau) - cho bảng điều khiển.

* Codener PSR-2 + PSR-5 ít nhất, + vẫn là một loạt các yêu cầu nghiêm ngặt hơn (đối với người mới bắt đầu mọi thứ trong PSR được đánh dấu là phải - trở thành phải)
- Trong Phpstorm, No Line Nên được tô sáng (Ngoại lệ là lỗi lỗi đánh máy, chẳng hạn như Sloga không biết bất kỳ tên viết tắt nào được áp dụng trong dự án của bạn). Nó được phép sử dụng / ** @noinspection *** * / cho các tình huống vô vọng.
- Nếu ai đó nói rằng ông viết trong một biên tập viên khác và anh ta không làm nổi bật, nó vẫn đang tiến hành.

* Tổ chức mã:
- Không có chức năng toàn cầu.
- Các lớp học không có nemeSpeit chỉ được phép trong các tình huống đặc biệt vô vọng.

* Khả năng kiểm tra (theo nghĩa đơn giản của thử nghiệm) mã phải cao.
- Bảo hiểm mã là bắt buộc đối với tất cả các trường hợp có thể sử dụng từng phương thức công cộng với chủ yếu phụ thuộc.

* Nguyên tắc MVC:
- Không xử lý đầu vào của người dùng trong các mô hình, từ từ nào.
- Không có yêu cầu cho cơ sở dữ liệu từ các mẫu.
- Không có layout / js / css / sql-in trong bộ điều khiển.
- Trong các mô hình không có phép thuật, chỉ có các thuộc tính riêng lẻ + getters với người định cư.
- Trong các mô hình được phép sử dụng phương thức lưu (nếu có một điều như vậy) chỉ trong các tình huống đặc biệt. Trong tất cả các khác - hoặc chèn hoặc cập nhật.

* Nguyên tắc rắn:
- Không có đối tượng phổ quát biết tất cả mọi thứ.
- Nếu phương pháp sử dụng nội bộ là riêng tư, không công khai.
- Các phương thức tĩnh chỉ được phép trong trường hợp vô vọng.

* Nguyên tắc khô được phép vi phạm trong trường hợp:
- Tách trách nhiệm rõ ràng
- Trong các thử nghiệm (mỗi bài kiểm tra phải độc lập, bao nhiêu là có thể)

* Làm việc với cơ sở dữ liệu:
- Yêu cầu trong chu trình nên thực sự hợp lý.
- Đối với đơn hàng của rand () khiển trách cứng
- Tìm kiếm không nằm trên các phím (tất nhiên nếu bảng không phải là 5 dòng) bị cấm.
- Tìm kiếm mà không giới hạn (một lần nữa nếu bảng không phải là 5 dòng) bị cấm.
- Chọn * - bị cấm.
- Dưa chỉ cơ sở dữ liệu phải được biện minh.
- MyISAM không được sử dụng (SO)))
- Nhiều hoạt động là bắt buộc trong giao dịch, với một rollback nếu có sự cố xảy ra.
- Cơ sở dữ liệu không nên chứa logic kinh doanh, chỉ có dữ liệu trong một hình thức toàn diện.
- Không nên có cơ sở dữ liệu giả không phù hợp nơi mà không có nó bạn có thể làm.

* Bộ đệm nên được làm sạch trong hai điều kiện (không phải là một trong số một, cụ thể là hai):
- thời gian.
- Gần logic kinh doanh.
Nó chỉ được phép trong thời gian trong các tình huống vô vọng, nhưng sau đó thời gian là một khoảng thời gian ngắn.
- Khi tính toán các khóa của bộ đệm, nên sử dụng một biến từ cấu hình ứng dụng (trong trường hợp các bản cập nhật bộ đệm được đặt lại bằng mã, chứ không phải bộ nhớ cache-server). Trong trường hợp sử dụng nhiều máy chủ, đây là một công cụ rất tiện lợi và linh hoạt với bằng tốt nghiệp.

* Về con người:
- "Tôi đã từng viết như vậy và sẽ tiếp tục" - không phải là một câu hỏi, chúng tôi sẽ chỉ vượt qua root khi bạn thay đổi ý kiến \u200b\u200bcủa mình.
- "Tôi viết thư cho Vim-E \u200b\u200bvà tôi cảm thấy rất thoải mái" - Thật tuyệt vời, tôi đang viết một mã bảng điều khiển trong đó)) Nhưng có những yêu cầu cho mã, nếu bạn không thể - bạn không thể vượt qua nguồn gốc.
- "Tôi đã sao chép phương pháp khủng khiếp này và thay đổi 2 dòng" - điều này chắc chắn là tuyệt vời, nhưng đổ lỗi cho tác giả của toàn bộ phương pháp bạn, vì vậy hãy đến mà không có gì vô nghĩa, OK?
- "Nó hoạt động!" "Cụm từ này dịch một cái gì đó như thế này:" Vâng, tôi hiểu rằng tôi đang viết một điều vô nghĩa hoàn toàn, nhưng tôi không thể viết bình thường vì tôi không thể ", tôi hiểu bạn chính xác?))
- "Làm tất cả mọi việc!" - Tôi rất vui vì bạn, và cách bán nó?
- "Mọi thứ đều đơn giản ở đó" - không sử dụng từ "Chỉ", từ từ "TẤT CẢ." Đây là một đoạn mã (điều đầu tiên đi kèm với một logic kinh doanh phức tạp), ở đâu có sai lầm (không quan trọng là nó hay không)? Bạn nhìn nó trong 2 phút, vấn đề là gì, có tất cả mọi thứ "chỉ"))

* Bất kì:
ActiveRecord (đây là tôi như trong quá khứ Yii Fan nói) - hoàn toàn hút, lấy bản gốc. Trên thực tế, bạn có một mô hình không thể kiểm soát cho dự án kết nối với cơ sở dữ liệu. Gần đây đã vấp phải thực tế là trong cùng một mẫu, lưu hoặc cập nhật cuộc gọi (cho việc này là cần thiết để ghi).

Chủ yếu:
1. Sự hiện diện của các lỗi quan trọng và các chức năng lỗi thời.
2. Sử dụng các mẫu, giải pháp thanh lịch.
3. Khả năng đọc mã, nhận xét, sự hiện diện của bến cảng.
4. Tuân thủ mô hình và thỏa thuận (ví dụ, vi phạm MVC).

Thứ hai \\ không mạnh:
1. Tốc độ mã (ngoại trừ Hylohad)
2. Tiêu thụ bộ nhớ (ngoại trừ BigData)
3. Hiệu quả của các truy vấn SQL (ngoại trừ hoàn toàn vô lý)
4. Tránh trong khoảnh khắc dữ liệu của không quan trọng, nhưng có khả năng tắc nghẽn (ví dụ, làm chậm hệ thống tệp bằng một số lượng lớn hình ảnh trong thư mục Appalad)
5. Mới lạ của các công nghệ ứng dụng.
6. Chống lại \\ không bị lỗi \\ đi xe đạp quá mức.

  1. Mã không chứa các lỗi rõ ràng và tiềm năng.
  2. Mã hoạt động như được mô tả trong tài liệu, thông số kỹ thuật hoặc bình luận kèm theo.
  3. Kiểu mã hóa đáp ứng các quy tắc mã hóa được thông qua
  4. Mã có các bình luận kèm theo theo phpdoc
  5. Chặn lồng không vượt quá cấp 4.
  6. Mã không tạo ra thông báo cấp độ nghiêm ngặt, cảnh báo, thông báo, không dùng nữa. Nếu điều này không thể tránh được, thì ngay trước chuỗi tạo phải bị buộc phải vô hiệu hóa error_reporting và ngay sau khi dòng bật error_reporting với giá trị ban đầu của nó (đã xảy ra trước đó). Mã như vậy phải được ghi lại theo một cách đặc biệt.
  7. Miếng mã cam kết phải được gỡ bỏ.
  8. Trong mã PHP (ngoại trừ Phptemplate), HTML, các phần chèn JavaScript đều bị cấm. Tất cả các chèn sẽ được thực hiện thông qua các mẫu đặc biệt.
  9. Các lớp, chức năng, biến và hằng số phải được gọi một cách logic là phản hồi của người bằng tiếng Anh theo tiêu chuẩn mã hóa. Đặt tên không được phép trong tiếng Nga, hoặc bằng các ngôn ngữ khác
  10. Phạm vi của các biến và các phương thức lớp học phải luôn được xác định (riêng tư, được bảo vệ, công cộng).
  11. Kích thước của một phương thức không được vượt quá 40-50 dòng.
  12. Biến được sử dụng trong chu trình hoặc trong khối có điều kiện sẽ được khởi tạo trước.
  13. Các biến bất cứ lúc nào chỉ nên chứa một loại. Một biến trống phải chứa null. (Không được phép $ var \u003d false; $ var \u003d "thử nghiệm" ;. $ var \u003d null; $ var \u003d "kiểm tra";).
  14. Khi truyền các lớp đối tượng vào các phương thức, nên sử dụng các loại.

Đầu tiên, từ quan điểm của tổ chức mã, tốt hơn hết là nên đặt tất cả logic đánh giá vào một hoặc nhiều tệp có thể bao gồm và sau đó đưa nó vào các trang sản phẩm:

Bao gồm ("bao gồm / đánh giá.php");

Bằng cách này, các trang sản phẩm có thể vẫn không bị biến đổi và cùng một mã đánh giá có thể dễ dàng được sử dụng hoặc sửa đổi, nếu cần. Kịch bản đánh giá.php sẽ làm một số thứ:

  • Hiển thị mẫu đánh giá
  • Xử lý mẫu đánh giá
  • Liệt kê các đánh giá hiện có
  • Xử lý các hành động thứ cấp, chẳng hạn như đánh giá đánh dấu hoặc nhận xét là không phù hợp, cho biết các đánh giá rất hữu ích, thêm nhận xét vào đánh giá, cho biết những nhận xét có hữu ích, v.v.

Hy vọng rằng bạn đã thực hiện rất nhiều phát triển web, vì vậy bạn biết rằng một biểu mẫu để thêm các đánh giá sẽ giống như vậy:

Đánh giá sản phẩm này

5 4 3 2 1

Rõ ràng bạn muốn sử dụng một số CSS để làm cho nó đẹp, nhưng đó là ý tưởng cơ bản. Lược chính là ID sản phẩm và loại sản phẩm (hoặc cơ sở dữ liệu nào để liên kết đánh giá với một mục) phải được lưu trữ trong các đầu vào ẩn. Bạn sẽ có tập lệnh PHP hiển thị sản phẩm Viết các giá trị này vào đầu vào.

Nếu cần đăng nhập, bạn có thể thêm mã (PHP) chỉ hiển thị biểu mẫu cho người dùng đăng nhập hoặc in một nhận xét nói rằng người dùng phải đăng nhập để xem lại sản phẩm. Tương tự, nếu bạn có một hệ thống tại chỗ để đảm bảo một người chỉ bao giờ đánh giá một sản phẩm một lần, bạn sẽ kiểm tra PHP cho kịch bản đó trước khi hiển thị biểu mẫu này.

Hồ sơ mẫu có thể. Chuyển đến một trang mới, nhưng cần nhấp vào nút Quay lại để quay lại trang sản phẩm, không lý tưởng. Tôi sẽ instad gửi biểu mẫu trở lại trang sản phẩm. Ví dụ: trên bất kỳ trang web động nào, cùng một tập lệnh PHP được sử dụng để hiển thị tất cả nội dung của một loại cụ thể. Trong tôi. Thương mại điện tử dễ dàng với PHP và MySQL Sách, trang web ví dụ đầu tiên sử dụng tập lệnh page.php để hiển thị bất kỳ trang nội dung nào. Thuộc tính hành động của biểu mẫu sẽ trỏ đến cùng một trang. Bạn có thể thực hiện điều này bằng cách chỉ cần để trống thuộc tính hoặc bằng cách sử dụng PHP để tự động đặt giá trị.

Nếu trang PHP hơn so với liệt kê các sản phẩm yêu cầu một giá trị xác định sản phẩm được truyền trong URL, thì biểu mẫu sẽ cần lưu trữ giá trị đó trong một đầu vào ẩn là Wellell. (Điều đó có thể là trường hợp, với đầu vào Product_ID, tùy thuộc vào cách thiết lập trang web.) Thứ hai, tập lệnh sản phẩm cũng cần phải được cập nhật để cho phép giá trị sản phẩm được nhận qua POST.

Đối với tập lệnh đánh giá.php để biết khi nào nên xử lý việc gửi biểu mẫu, CEN CEN kiểm tra cách kịch bản được truy cập:

Nếu ($ _Server ["Request_method"] \u003d\u003d "POST") (// xử lý biểu mẫu.

Khi mẫu đánh giá được gửi, dữ liệu biểu mẫu phải được xác thực. Bạn cũng nên áp dụng dải_tags () vào dữ liệu để ngăn chặn các cuộc tấn công Scripting (XSS) hoặc hành vi xấu khác. Và các giá trị phi số sẽ được chạy qua một hàm thoát ra, chẳng hạn như mysqli_real_escape_string (). Hoặc chỉ có thể sử dụng các tuyên bố đã chuẩn bị hoặc các thủ tục lưu trữ để bảo mật và hiệu suất tốt hơn.

Nếu bạn thêm một neo vào thuộc tính hành động của biểu mẫu- Hành động \u003d "page.php # đánh giá", người dùng sẽ được đưa đến bài nộp, đó là một liên lạc tốt đẹp.

Nếu tập lệnh đánh giá.php cũng đang xử lý một số hành động khác, các đánh giá hoặc bình luận không phù hợp, các chỉ số hữu ích, v.v. - kịch bản sẽ cần phải xem các bài nộp, Tooo. Tôi sẽ sử dụng các đầu vào ẩn có tên "nhiệm vụ" để cho biết hành động nào đang được thực hiện.

Trong một bài viết riêng, tôi trình bày cách sử dụng Ajax cho một hệ thống xếp hạng đơn giản. Mã Ajax tương tự cũng có thể được sử dụng cho hệ thống đánh giá, quá.

Nhận một phản hồi có giá trị từ khách hàng của bạn bằng cách cung cấp cho họ sự tự do để chia sẻ ấn tượng một cách tự do. Hãy để họ đánh giá các sản phẩm và / hoặc dịch vụ của bạn thẳng trên trang web của bạn. Xem bên dưới các tính năng chính đạt tiêu chuẩn giá trị hệ thống đánh giá trực tuyến của chúng tôi.

    Đánh giá & xếp hạng

    Nhúng tập lệnh đánh giá PHP vào trang web của bạn và để khách hàng chia sẻ kinh nghiệm của họ với các sản phẩm và dịch vụ bạn cung cấp. Chúng có thể đánh giá theo tiêu chí và đưa ra cả phản hồi tích cực và tiêu cực.

    Đa ngôn ngữ.

    Hệ thống đánh giá PHP có thể nói không chỉ tiếng Anh, mà là bất kỳ ngôn ngữ nào bạn có thể cần. Bạn có thể dịch tất cả các tiêu đề và tin nhắn hệ thống từ trang quản trị bằng ID duy nhất cho từng đoạn văn bản.

    Tiêu chí đánh giá có thể chỉnh sửa.

    Tùy thuộc vào loại hình kinh doanh, xem xét quản trị viên hệ thống có thể
    Đặt tiêu chí xếp hạng khác nhau được hiển thị ở dạng mặt trước.
    Mỗi tiêu chí này được đánh giá với 1 đến 5 sao.

    Thông báo email & SMS

    Thiết lập hệ thống đánh giá trực tuyến để gửi email và thông báo SMS khi một đánh giá mới đã được đăng. Bạn có thể dễ dàng chỉ định người dùng nào để nhận các tin nhắn này từ menu người dùng.

    Nhiều loại người dùng.

    Tạo các loại khách hàng không giới hạn tùy thuộc vào ngành và dịch vụ được sử dụng. Xếp hạng khách sạn có thể đi kèm với các loại người dùng sau: Gia đình có trẻ em, cặp vợ chồng, chuyến công tác vv Chúng xuất hiện dưới dạng nhãn trong các tôn kính.

    Đáp ứng và hấp dẫn.

    Tập lệnh Đánh giá và Đánh giá chạy trên tất cả các thiết bị, thích ứng liền mạch với các kích cỡ màn hình khác nhau. Theo thỏa thuận với thương hiệu trang web của bạn, bạn có thể chọn chủ đề Front-end phù hợp nhất trong số 10 tùy chọn màu.

    Một hộp Mẹo nhanh bên cạnh biểu mẫu đánh giá cho phép bạn thêm một số từ dí dỏm và thu hút khách hàng. Các đánh giá bộ lọc hệ thống xem xét theo loại người dùng. Khách hàng cũng có thể đánh giá xếp hạng khách hàng khác.

    Với giấy phép dành cho nhà phát triển, bạn có được mã nguồn và có thể thực hiện bất kỳ thay đổi tùy chỉnh nào đối với tập lệnh đánh giá PHP. Chúng tôi cũng có thể sửa đổi hệ thống đánh giá của khách hàng theo yêu cầu.