Inurl chuyển hướng php http dub. Làm cách nào để đặt chuyển hướng đến một URL khác trong PHP trước khi tải trang? Xóa ký tự thừa trong url

Cách đây vài tuần, do một số nhu cầu nên cần phải thêm diễn đàn vào một trang web mới viết. Trang web đang trong giai đoạn hoàn thiện, chỉ có một hoặc hai người dùng. Trang web được viết bằng Codeigniter. PhpBB được chọn làm diễn đàn, là một trong những diễn đàn miễn phí phổ biến nhất, phiên bản 3.1.1. Sau một số thao tác đơn giản, diễn đàn đã được cài đặt mà không gặp vấn đề gì. Mọi thứ trở nên thú vị hơn khi đến với người dùng.

Trước hết, tôi quyết định tìm kiếm các giải pháp làm sẵn để không lãng phí thời gian của tôi cũng như thời gian của khách hàng. Đã tìm thấy một liên kết không còn hoạt động đến thư viện phpBB3_library, các plugin cho WP và các công cụ khác đã được tìm thấy, nhưng tôi muốn làm cho việc tích hợp trở nên dễ dàng hơn cho bản thân tôi cũng như đứa con tinh thần (trang web) và diễn đàn của tôi.

Sau khi tìm kiếm trên Google, tôi đã tìm thấy cái này, từ đó tôi bắt đầu đi sâu vào chức năng người dùng phpBB.

Xây dựng vấn đề
  • Làm cho việc tích hợp không đau đớn. Phải có một lớp thực hiện. Không có thay đổi nào đối với công cụ diễn đàn, do đó sẽ không có vấn đề gì xảy ra khi cập nhật diễn đàn.
  • Tận dụng tối đa các tính năng của diễn đàn trong lớp học của chúng tôi. Tôi không muốn chặn xe đạp của mình.
  • Thực hiện đăng ký chung, thay đổi mật khẩu, ủy quyền, kết thúc phiên, chặn và bỏ chặn người dùng dựa trên chức năng đã có của diễn đàn.
  • Phân tích Sau khi đọc tài liệu, chúng ta thấy rõ rằng các chức năng quản lý người dùng được đặt trong /includes/functions_user.php và ủy quyền trong /phpbb/auth/provider. Thư mục này chứa các chức năng cho một số tùy chọn ủy quyền. Loại ủy quyền được đặt trong bảng quản trị diễn đàn, phần “Chung -> Xác thực”. Tôi đặt giá trị mặc định - Db.

    Về nguyên tắc, tôi tìm thấy chức năng cần thiết trong hai tệp này, ngoại trừ việc cập nhật dữ liệu người dùng. Tiếp theo chúng ta tiến hành thực hiện.

    Dữ liệu ban đầu
  • Trang web được triển khai bằng codeigniter.
  • Diễn đàn phpBB.
  • Bảng với người dùng trang web - USERS.
  • Bảng với người dùng diễn đàn - phpbb_USERS.
  • Đăng ký/ủy quyền người dùng trên trang web - thư viện Codeigniter Auth được sửa đổi để phù hợp với nhu cầu của bạn.
  • Giải pháp Nhiệm vụ đã được đặt ra, nó phải được thực hiện.

    Trước khi chúng ta bắt đầu, có một vài sắc thái.

  • Cần phải vô hiệu hóa đăng ký người dùng trên trang web. Việc này được thực hiện trong bảng quản trị (Chung -> đăng ký người dùng -> Cho phép thay đổi tên người dùng -> Không). Chúng tôi cho phép người dùng chỉ đăng ký trên trang web.
  • Chúng tôi cấm thay đổi tên người dùng (Chung -> Đăng ký người dùng -> Kích hoạt tài khoản -> Đã tắt).
  • Chúng tôi cấm ủy quyền từ diễn đàn. Chúng tôi chỉ đăng nhập và đăng xuất từ ​​trang web. Tôi đã thực hiện nó một cách trực tiếp - trong tệp /ucp.php tôi đã thực hiện chuyển hướng đến các trang tương ứng trên trang web. (xem các dòng "case "login": "case "login_link": "case "logout": Redirect "header("Location: /auth/login");" và "header("Location: / xác thực/đăng xuất");").
  • Trên trang web (nếu có hàm redirect()), hãy thay thế hàm redirect(), ví dụ: bằng ciredirect(), để tránh xung đột tên - trong phpBB có một hàm có cùng tên.
  • Đối với codeigniter, tôi tạo thư viện my_phplib.php (thư viện trong codeigniter là một loại lớp plug-in phụ trợ, nằm trong thư mục ứng dụng/thư viện. Không có gì bất thường trong đó, vì vậy người dùng các công cụ/framework khác - hãy làm không được nản lòng).

    Vì vậy, nội dung của thư viện:

    Thư viện my_phplib.php

    Thông số

    Chuỗi tiêu đề.

    Có hai lệnh gọi tiêu đề trong trường hợp đặc biệt. Đầu tiên là tiêu đề bắt đầu bằng chuỗi " HTTP/" (chữ hoa không đáng kể), sẽ được sử dụng để tìm ra mã trạng thái HTTP cần gửi. Ví dụ: nếu bạn đã định cấu hình Apache để sử dụng tập lệnh PHP để xử lý các yêu cầu đối với các tệp bị thiếu (sử dụng Tài Liệu Lỗi chỉ thị), bạn có thể muốn đảm bảo rằng tập lệnh của mình tạo mã trạng thái phù hợp.

    Trường hợp đặc biệt thứ hai là tiêu đề "Vị trí:". Nó không chỉ gửi tiêu đề này trở lại trình duyệt mà còn trả về một CHUYỂN HƯỚNG(302) mã trạng thái vào trình duyệt trừ khi 201 hoặc một 3xx mã trạng thái đã được thiết lập.

    Thay thế

    Tham số thay thế tùy chọn cho biết liệu tiêu đề sẽ thay thế tiêu đề tương tự trước đó hay thêm tiêu đề thứ hai cùng loại. Theo mặc định, nó sẽ thay thế, nhưng nếu bạn chuyển FALSE làm đối số thứ hai, bạn có thể buộc nhiều tiêu đề cùng loại. Ví dụ:

    Http_response_code

    Buộc mã phản hồi HTTP đến giá trị được chỉ định. Lưu ý rằng tham số này chỉ có hiệu lực nếu tiêu đề không trống.

    Giá trị trả về

    Không có giá trị được trả lại.

    Nhật ký thay đổi Phiên bản Mô tả
    5.1.2 Chức năng này hiện ngăn chặn việc gửi nhiều tiêu đề cùng một lúc để bảo vệ chống lại các cuộc tấn công tiêm tiêu đề.
    Ví dụ

    Ví dụ #1 Hộp thoại tải xuống

    Nếu bạn muốn người dùng được nhắc lưu dữ liệu bạn đang gửi, chẳng hạn như tệp PDF được tạo, bạn có thể sử dụng tiêu đề » Bố trí nội dung để cung cấp tên tệp được đề xuất và buộc trình duyệt hiển thị hộp thoại lưu.



    Tiêu đề của bạn bây giờ trông như thế này:

    HTTP/1.1 200 Được
    Máy chủ: Apache/2.2.11 (Unix)
    X-Powered-By: PHP/5.2.8
    Ngày: Thứ Sáu, ngày 16 tháng 10 năm 2009 23:05:07 GMT
    Kết nối: đóng

    16 năm trước

    Nếu bạn chưa sử dụng, Phản hồi HTTP 204 có thể rất thuận tiện. 204 yêu cầu máy chủ chấm dứt ngay yêu cầu này. Điều này hữu ích nếu bạn muốn chức năng phía máy khách javascript (hoặc tương tự) thực thi chức năng phía máy chủ mà không cần làm mới hoặc thay đổi trang web hiện tại. Tuyệt vời để cập nhật cơ sở dữ liệu, thiết lập các biến toàn cục, v.v.

    Tiêu đề ("trạng thái: 204"); (hoặc cuộc gọi khác)
    header("HTTP/1.0 204 Không có phản hồi");

    10 năm trước

    Đây là tập lệnh php tôi đã viết để truyền phát một tệp và mã hóa nó bằng thao tác xor trên byte và bằng một khóa:

    Mã hóa hoạt động rất tốt nhưng tốc độ giảm đi 2, hiện tại là 520KiB/s. Người dùng hiện được yêu cầu nhập mật khẩu md5 (thay vì giữ mật khẩu trực tiếp trong mã). Có một số phần bằng tiếng Pháp vì đó là ngôn ngữ mẹ đẻ của tôi nên hãy sửa đổi theo ý muốn.