Hướng dẫn what is $_ server [ php_auth_user ]? - $ _ server [php_auth_user] là gì?

Trước khi tôi bắt đầu, tôi muốn chỉ ra rằng tôi đã duyệt Stack Overflow và tìm thấy các câu hỏi tương tự khác - PHP_AUTH_USER không được đặt? và http auth thông qua php - php_auth_user không được đặt? - Và những điều này đã chỉ ra rằng các biến xác thực $ _Server sẽ không được đặt nếu '' API máy chủ '' được đặt thành '' CGI/FCGI '', nhưng tôi đã kiểm tra '' '' '' '' '' '' 'API máy chủ' 'được đặt thành' 'Apache 2.0 Handler' '.

Ok vì vậy tôi có một tập lệnh đơn giản như sau:

<?php
    echo "Username: " . $_SERVER["PHP_AUTH_USER"] . ", Password: " . $_SERVER["PHP_AUTH_PW"];
?>

... mà tôi đang gọi từ xa qua những điều sau:

wget -v --http-user=johnsmith --http-password=mypassword http://www.example.com/myscript.php

... nhưng chỉ xuất hiện:

Username: , Password:

Tôi cũng đã thử gọi tập lệnh bằng cách sử dụng PHP Curl và đặt các tham số xác thực một cách thích hợp như sau:

 curl_setopt($ch, CURLOPT_USERPWD, "johnsmith:mypassword");

... Nhưng tôi nhận được đầu ra giống như trên.

Có biết tôi đang làm gì sai không? Có lẽ có một cái gì đó khác tôi cần để kích hoạt / cấu hình?

Hướng dẫn what is $_ server [ php_auth_user ]? - $ _ server [php_auth_user] là gì?

Đã hỏi ngày 6 tháng 2 năm 2013 lúc 7:57Feb 6, 2013 at 7:57

Kosta Kontoskosta KontosKosta Kontos

3.9627 Huy hiệu vàng24 Huy hiệu bạc28 Huy hiệu đồng7 gold badges24 silver badges28 bronze badges

2

Đối với PHP-CGI:

trong .htaccess Thêm điều này:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

Và khi bắt đầu tập lệnh của bạn, hãy thêm điều này:

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

Đã trả lời ngày 21 tháng 3 năm 2014 lúc 8:52Mar 21, 2014 at 8:52

Hướng dẫn what is $_ server [ php_auth_user ]? - $ _ server [php_auth_user] là gì?

Cuối cùng tôi đã phát hiện ra câu trả lời nhờ sự giúp đỡ của Naktibalda trong ## PHP trên irc.freenode.net

Trang sau tóm tắt vấn đề: http://php.net/manual/en/features.http-auth.php

Để trích dẫn các bit có liên quan:

Kể từ Php 4.3.0, để ngăn ai đó viết tập lệnh tiết lộ mật khẩu cho một trang được xác thực thông qua cơ chế bên ngoài truyền thống, các biến PHP_AUTH sẽ không được đặt nếu xác thực bên ngoài được bật cho trang cụ thể đó và an toàn Chế độ được bật. Bất kể, remote_user có thể được sử dụng để xác định người dùng được xác nhận bên ngoài. Vì vậy, bạn có thể sử dụng $ _Server ['remote_user'].

...

PHP sử dụng sự hiện diện của một chỉ thị AuthType để xác định xem xác thực bên ngoài có hiệu lực hay không.

Đã trả lời ngày 11 tháng 2 năm 2013 lúc 10:06Feb 11, 2013 at 10:06

Kosta Kontoskosta KontosKosta Kontos

3.9627 Huy hiệu vàng24 Huy hiệu bạc28 Huy hiệu đồng7 gold badges24 silver badges28 bronze badges

Đối với PHP-CGI:

CGIPassAuth On 

trong .htaccess Thêm điều này:

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0

Và khi bắt đầu tập lệnh của bạn, hãy thêm điều này:

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 6)));

Đã trả lời ngày 21 tháng 3 năm 2014 lúc 8:52

Cuối cùng tôi đã phát hiện ra câu trả lời nhờ sự giúp đỡ của Naktibalda trong ## PHP trên irc.freenode.netNov 7, 2018 at 19:50

Trang sau tóm tắt vấn đề: http://php.net/manual/en/features.http-auth.phpMatt

Để trích dẫn các bit có liên quan:8 bronze badges

Kể từ Php 4.3.0, để ngăn ai đó viết tập lệnh tiết lộ mật khẩu cho một trang được xác thực thông qua cơ chế bên ngoài truyền thống, các biến PHP_AUTH sẽ không được đặt nếu xác thực bên ngoài được bật cho trang cụ thể đó và an toàn Chế độ được bật. Bất kể, remote_user có thể được sử dụng để xác định người dùng được xác nhận bên ngoài. Vì vậy, bạn có thể sử dụng $ _Server ['remote_user'].

...

PHP sử dụng sự hiện diện của một chỉ thị AuthType để xác định xem xác thực bên ngoài có hiệu lực hay không.

Đã trả lời ngày 11 tháng 2 năm 2013 lúc 10:06

RewriteRule ^my_script/my_action$ /redirect_url/?auth=%{HTTP:Authorization} [R=301,QSA,L]

Đã thử các đề xuất trước đó, không hoạt động, cũng được phát hiện

wget -v --http-user=johnsmith --http-password=mypassword http://www.example.com/myscript.php
0

là phiên bản cập nhật hơn của bổ sung HTAccess được đề xuất, nhưng điều đó vẫn không hoạt động với tôi, thay vào đó tôi đã sử dụng

(phải nằm trong tệp htaccess gốc của bạn) sau đó trong tệp PHP

Nếu bất cứ ai vẫn gặp khó khăn, tôi khuyên họ nên kiểm tra vars máy chủ, vì dữ liệu có thể nằm trong một var khác, bạn đang tìm kiếm thứ gì đó bắt đầu với cơ bảnAug 4 at 8:10

Đã trả lời ngày 7 tháng 11 năm 2018 lúc 19:50Swissdude

Mattmatt3 gold badges34 silver badges67 bronze badges

3

Phù hiệu bằng đồng 1158

wget -v --http-user=johnsmith --http-password=mypassword http://www.example.com/myscript.php
1

Tôi biết điều này là cũ, nhưng trong trường hợp ai đó vấp ngã điều này và không thể có bất kỳ giải pháp nào để làm việc

Tôi đã phải chuyển thông tin tiêu đề cho một tập lệnh được chuyển hướng. Không có điều nào ở trên đã làm việc.9 gold badges49 silver badges68 bronze badges

Vì vậy, tôi đã làm như sau:Mar 26, 2014 at 10:49

1

Máy chủ $ _ là gì ['PHP_AUTH_USER'] là gì?

Khi người dùng đã điền tên người dùng và mật khẩu, URL chứa tập lệnh PHP sẽ được gọi lại với các biến được xác định trước PHP_AUTH_USER, PHP_AUTH_PW và AUTH_TYPE được đặt thành tên người dùng, mật khẩu và loại xác thực.Các biến được xác định trước này được tìm thấy trong mảng $ _Server.predefined variables are found in the $_SERVER array.

Xác thực và ủy quyền trong PHP là gì?

Điều này thường liên quan đến việc kiểm tra tên người dùng và mật khẩu đơn giản.Do đó, một người dùng được đăng nhập là một người dùng được xác thực.Ủy quyền, thường được gọi là Kiểm soát truy cập, là cách bạn bảo vệ quyền truy cập vào các tài nguyên được bảo vệ và xác định xem người dùng có được phép truy cập một tài nguyên cụ thể hay không.

Làm thế nào để xác thực PHP hoạt động?

Sau khi nhận được chi tiết xác thực người dùng trong PHP, nó so sánh dữ liệu biểu mẫu với cơ sở dữ liệu người dùng bằng cách thực thi truy vấn bằng cách sử dụng đối tượng kết nối.Truy vấn liên kết tên người dùng được nhập bởi người dùng thông qua biểu mẫu HTML.Sau đó, nó xác minh mật khẩu băm bằng mật khẩu đã nhập để trả về kết quả xác thực.