Xin chào Tôi đang viết kịch bản trang tiểu sử, trong tập lệnh này tôi kiểm tra giá trị của biến $ _GET và xác thực rằng đó là số nguyên, sau đó tôi xác thực giá trị này với giá trị $ _SESSION xác nhận rằng họ chỉ có thể truy cập vào tài khoản của riêng họ. Mã này trông như thế này:
// validate $_GET field
if(isset($_GET['identity']) && filter_var($_GET['identity'], FILTER_VALIDATE_INT, array('min_range' => 1))) {
if(isset($_SESSION['user_identity']) && ((int)$_SESSION['user_identity'] === (int)$_GET['identity'])) { // if session exists and is === $_GET['identity']
// Proceed with code
này hoạt động tốt ví dụ nếu tôi cố gắng để vượt qua '0', '2-2', 'abc' hoặc không có giá trị như giá trị $ _GET truy vấn thất bại và chuyển hướng một cách chính xác chúng vào trang chủ.
Những gì tôi đã cố gắng làm là thay đổi tệp .htaccess của tôi để ánh xạ các URL thành 'tiểu sử/1' chỉ để dọn dẹp nó.
RewriteRule ^profile$ profile.php
RewriteRule ^profile/([0-9]+)$ profile.php?identity=$1 [NC,L]
Điều tôi thấy bây giờ là trang không chuyển hướng nữa bằng cách sử dụng thông số $ _GET không hợp lệ ở trên. Nó chỉ cố gắng tìm 'hồ sơ/abc.
Có ai biết tại sao không?
Cảm ơn, tôi sẽ thử các quy tắc của bạn. Tôi không có ý tưởng, nó phải là một cái gì đó để làm với các quy tắc .htacces của tôi bởi vì các báo cáo php rõ ràng loại trừ bất cứ điều gì mà không phải là === một số nguyên và đi qua $ _GET trong các url unmasked ném tất cả mọi thứ khác. – Jonnny
ok cho tôi biết nếu bạn cần thêm trợ giúp –
Tôi vừa thử, tôi vẫn nhận được kết quả tương tự. Thật lạ lùng, có lẽ đó là một số điều gian lận trong hệ thống của tôi. Đánh giá cao sự giúp đỡ của bạn mặc dù – Jonnny