Cách hạn chế người dùng truy cập trang cụ thể bằng URL trực tiếp trong PHP

Khách hàng muốn có thể quảng cáo các vị trí có sẵn trực tiếp trên trang web của họ. Họ cũng muốn mọi người có thể nộp đơn trực tiếp cho các công việc trên trang web của họ mà không cần phải truy cập trang web khác, như Thật hoặc LinkedIn

Họ không cho tôi nhiều hơn thế. Nhưng đối với tôi, điều đó có nghĩa là mỗi vị trí nên có một nút được liên kết với mẫu đơn đăng ký đơn giản. Biểu mẫu này sẽ nhận vị trí mà ứng viên đang ứng tuyển và đặt vị trí đó vào một trường ẩn trên biểu mẫu. Khi ứng viên gửi biểu mẫu đã điền đầy đủ, nhân viên nhân sự sẽ nhận được tất cả các thông tin liên quan để liên hệ với ứng viên

Vì vậy, tôi đã tạo một plugin bổ sung loại bài đăng tùy chỉnh – Nghề nghiệp – đã tạo mẫu cho bài đăng và biểu mẫu liên hệ. Dễ dàng, cho đến khi tôi nhận ra rằng biểu mẫu có thể được truy cập trực tiếp bằng URL

Điều này dường như không có nhiều vấn đề. Các ứng dụng được gửi qua biểu mẫu này mà không có Vị trí đính kèm sẽ yêu cầu người chịu trách nhiệm liên hệ với ứng viên đặt thêm câu hỏi. Nhưng, mục tiêu của tôi là làm cho giải pháp trở nên hiệu quả và tự động nhất có thể, để tiết kiệm thời gian cho những người bận rộn đó. Vì vậy, nó có thể không phải là một vấn đề lớn, nhưng nó không phải là một giải pháp hoàn chỉnh

Giải pháp

CẬP NHẬT. Tôi đã hợp lý hóa thêm chức năng này. Tôi vẫn kiểm tra xem người giới thiệu có tồn tại hay không; . Tôi kiểm tra xem nó có “vị trí” trong người giới thiệu hay không, sau đó tôi xác thực rằng “vị trí” đó thực sự là từ trang web của chúng tôi để ngăn chặn việc giả mạo người giới thiệu. Kiểm tra ý chính để có được chức năng đầy đủ. Tùy chỉnh nó cho nhu cầu của bạn

Tìm kiếm "ngăn chặn truy cập trực tiếp vào URL cụ thể WordPress" đã gửi cho tôi trên Google, Sổ tay dành cho nhà phát triển WordPress và Stack Exchange. Tôi đã tìm thấy một số thông tin chi tiết tốt, ở đây hoặc ở đó, mà tôi đã từng tập hợp lại để có một giải pháp hoàn chỉnh

Tôi phải ghép nó lại với nhau vì câu trả lời liên quan đến

    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
4 mà bạn sẽ sử dụng để lấy biến tham chiếu HTTP từ yêu cầu máy chủ. Hầu hết các câu trả lời tôi thấy đều dành cho các trường hợp URL giới thiệu giống nhau mỗi lần. Tôi không thể sử dụng những câu trả lời đó vì URL giới thiệu sẽ luôn phụ thuộc vào vị trí mà ứng viên đến từ đâu. Vì vậy, cuối cùng tôi đã sử dụng một số hàm PHP thuần túy, cụ thể là
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
5 và
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
6, để trợ giúp. Có lẽ bạn đang ở trong cùng một vị trí. Tôi hi vọng cái này giúp được

Chúng tôi bắt đầu với chức năng - bạn có thể đặt chức năng này trong chức năng của mình. tập tin php. Tôi đã tiếp tục và xác định URL chuyển hướng trước. Nếu khách truy cập trực tiếp vào URL mà không biết ý định của họ, tôi cảm thấy tốt nhất là chuyển hướng họ đến trang Nghề nghiệp nơi họ có thể chọn một vị trí để ứng tuyển… bước hợp lý đầu tiên

function dtl_no_applicant_direct_access[] {
    // Define Careers Page URL for redirect.
    $careers = get_permalink[ get_page_by_title[ 'Careers' ] ];

Tiếp theo, chúng tôi tìm hiểu xem chúng tôi có ở đúng trang không. Chúng tôi chỉ muốn áp dụng chuyển hướng này cho trang Đăng ký ngay, vì vậy chúng tôi sẽ xác định hành động đó tại đây

    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }

Bây giờ, hãy lấy người giới thiệu của chúng ta từ yêu cầu máy chủ, sử dụng chức năng

    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
4. Các vị trí của chúng tôi có một đường dẫn đến chúng như – https. //www. ví dụ. com/position/job-title – vì vậy chúng tôi cần tách thông tin bổ sung khỏi URL. Vì vậy, chúng tôi phân tích nó bằng hàm PHP
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
0

Không quá nhanh. Khi tôi đăng bài này lần đầu tiên, tôi đã rất lo lắng về việc truy cập URL trực tiếp bên ngoài. Tuy nhiên, còn quyền truy cập từ bảng điều khiển quản trị thì sao?

// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
    //Get the referrer from the server request and parse the URL.
    $referer = wp_get_referer[];
    $refer_URL = parse_URL[ $referer ];

Bây giờ chúng tôi đã phân tích cú pháp URL của mình, hãy kiểm tra xem nó có đường dẫn mà chúng tôi mong đợi trong người giới thiệu không. Chúng ta khai báo một biến để giữ kết quả của hàm

    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
1, hàm này đang kiểm tra đống cỏ khô –
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
2 – tìm cây kim –
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
3

________số 8

Tôi đã đặt người giới thiệu và trình phân tích cú pháp vào hai biến riêng biệt vì một lý do cụ thể. Trong khi thực hiện một số bài kiểm tra đơn vị, tôi nhận thấy rằng hàm

    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
1 sẽ không trả về bất kỳ thứ gì nếu
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
5 không tồn tại – không có gì để phân tích cú pháp. Chỉ cần kiểm tra đường dẫn –
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
6 hoặc
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
7 – vẫn có thể truy cập trang vì điều kiện trả về sẽ không bao giờ là
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
7 hoặc
    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
6

Để khắc phục điều này, tôi kiểm tra hai điều kiện. Nếu người giới thiệu hợp lệ – yêu cầu có thể có một người giới thiệu khác nếu URL được đăng trực tuyến ở đâu đó. Nếu yêu cầu hoàn toàn có người giới thiệu – nó sẽ không có người giới thiệu nếu URL được nhập vào thanh địa chỉ. Tôi muốn chuyển hướng trong cả hai trường hợp

    // If this is not the Apply Now page, do nothing.
    if[ ! is_page[ 'Apply Now' ] ] {
        return;
    }
5

Có điều gì đó cần lưu ý trong những bit cuối cùng. Phản hồi chuyển hướng HTTP được lưu vào bộ đệm. Theo hướng dẫn của một nhận xét về chức năng

// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
0, tôi đã thêm
// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
1 trước chuyển hướng để ngăn phản hồi cho các yêu cầu đối với trang này được lưu trữ

Tôi đã sử dụng

// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
0 thay vì
// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
3 vì nó xác thực yêu cầu chuyển hướng trước khi tiếp tục. Đây là một thực hành bảo mật tốt để ngăn chặn chuyển hướng tác nhân người dùng. Cuối cùng, luôn gọi
// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
4 sau
// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
0 hoặc
// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
3 và đừng quên gọi hàm của bạn bằng
// Allow direct access to logged in users who can edit pages.
	if[ is_user_logged_in[] && current_user_can[ 'edit_posts' ] ] {
		return;
	}
7

Là hữu ích không?

Làm cách nào để ngăn người dùng truy cập trực tiếp vào trang HTML của tôi bằng cách viết URL bằng PHP?

Làm cách nào để ngăn người dùng truy cập trực tiếp vào trang HTML bằng cách viết URL? .
Đăng biểu mẫu của bạn lên tập lệnh php [chẳng hạn như đăng nhập. php]
Tập lệnh kiểm tra chi tiết đăng nhập và đặt cookie
trang 2. thay vào đó, html phải là php và kiểm tra cookie trước khi hiển thị HTML

Làm cách nào để dừng truy cập trực tiếp vào một trang mà không cần đăng nhập bằng PHP?

Bản sao có thể có của Cách tạo chuyển hướng trong PHP? . Tháng Một 25, 2016 lúc 10. 13
Đặt biến phiên sau khi đăng nhập và hủy chúng sau khi đăng xuất. tạo một tệp php riêng để kiểm tra xem $_SESSION có được đặt không. Nếu nó được đặt thì không làm gì khác chuyển hướng đến đăng nhập. php. – tơ nhân tạo. Tháng Một 25, 2016 lúc 10. 15

Làm cách nào để ngăn truy cập trực tiếp vào thư mục trong PHP?

Cách tốt nhất để ngăn truy cập trực tiếp vào tệp là đặt chúng bên ngoài thư mục gốc của tài liệu máy chủ web [thường là một cấp trên . Bạn vẫn có thể bao gồm chúng, nhưng không có khả năng ai đó truy cập chúng thông qua yêu cầu http.

Làm cách nào để hạn chế quyền truy cập vào tệp PHP?

Hạn chế quyền truy cập vào php. .
Đăng nhập vào cPanel của bạn
Chuyển đến Trình quản lý tệp. Chọn gốc web public_html của bạn và nhấp vào Đi
tìm của bạn. htaccess và chỉnh sửa nó bằng trình chỉnh sửa mã. Đặt đoạn mã sau vào của bạn. htaccess. Sao chép

Chủ Đề