अपाचे लॉग कॉन्फ़िगरेशन में यह निर्दिष्ट करना संभव है कि HTTP लेखक उपयोगकर्ता नाम लॉग होना चाहिए। अधिकांश PHP स्क्रिप्ट्स का अपना स्वयं का, कुकी-आधारित प्रमाणीकरण होता है। PHP में यह संभव है कि अपाचे को लॉगिंग उद्देश्यों के लिए HTTP औथ उपयोगकर्ता नाम के साथ प्रदान किया जाए, भले ही प्रमाणीकरण कुकी-आधारित है? यदि हां, तो कोड कैसा दिखता है? यदि नहीं, तो विकल्प क्या हैं?PHP के साथ apache access_log में उपयोगकर्ता नाम रखें और बिना HTTP auth
उत्तर
अपाचे नोट्स में मॉड्यूल के बीच डेटा पास करता है। यदि आप एक अपाचे मॉड्यूल के रूप में PHP चलाते हैं, तो आप नोट्स प्राप्त करने और सेट करने के लिए apache_note()
का उपयोग कर सकते हैं। इसके बाद आप एक्सेस लॉग में लिखने के लिए the %{note_name}n
log format string शामिल कर सकते हैं। यह ग्राहक को किसी भी डेटा को वापस "रिसाव" नहीं करेगा।
PHP में:
apache_note('username', $username);
अपने सर्वर विन्यास में:
LogFormat "%h %l %{username}n %t \"%r\" %>s %b" common_with_php_username
CustomLog logs/access_log common_with_php_username
एक संभावना कहीं और उपयोगकर्ता नाम & अतीत session_ids की दुकान है, और आप फिर वापस ट्रेस कर सकते हैं जो लॉग यह (आमतौर पर %{PHPSESSID}C
) में कुकी मानों बारे में जाने, के लिए है।
एक अन्य विकल्प एक हैडर उपयोगकर्ता नाम के साथ अधिमानतः सही अपने session_start
के बाद, ग्राहक के लिए वापस भेजने के लिए होगा:
पीएचपी:
header('X-Php-Sess-User: '.$username);
Customlog:
%{X-Php-Sess-User}o
की कमी आंतरिक लेख * डेटा संरचनाओं को स्पर्श करने के लिए अपाचे हैंडलर का उपयोग करके, आपका सर्वोत्तम शर्त पर्यावरण चर का सहारा लेना है। आप अपने PHP कोड
apache_setenv('USERID','jrodriguez',true);
में apache_setenv का उपयोग कर एक उच्च-स्तरीय वातावरण चर सेट और फिर का उपयोग कर "% {USERID} ई" के बदले "अपने अपाचे config में एक LogFormat प्रवेश के साथ लॉग फ़ाइल के लिए मूल्य लिखते थे % u "
LogFormat "%v:%p %h %l %{USERID}e %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" envuid_combined
CustomLog /path/to/access.log envuid_combined
बेशक
, असली साख जब वास्तविक HTTP प्रमाणन प्रदर्शन हमेशा के लिए खो जाएगा, तो यू कहीं और% की बचत पर विचार - या तो एक नए क्षेत्र में या एक समानांतर लॉग फ़ाइल में।
एक पर्यावरण परिवर्तनीय वैश्विक नहीं होगा और इस तरह अविश्वसनीय –
@Esben सुनिश्चित नहीं है कि आपका क्या मतलब है, लेकिन सामान्य रूप से, नहीं - एक envorioment चर वैश्विक नहीं है। उपरोक्त समाधान मेरे लिए पूरी तरह से काम करता है। – rjmunro
अपाचे 2.4.7 के बाद से अपाचे आप एक नोट के लिए एक प्रतिक्रिया हेडर कॉपी करने के लिए अनुमति देता है। इसलिए यदि आप एक अपाचे मॉड्यूल के रूप में PHP नहीं चलाते हैं (लेकिन उदाहरण के लिए PHP-FPM का उपयोग करें), और आप यह भी नहीं चाहते कि क्लाइंट को लॉग-मान भेजा जाए (जो आमतौर पर होता है यदि आप इसे सेट करते हैं
php:
header('X-Username: '.$username);
httpd.conf:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{username}n\"" logfmtname
vhost.conf:
CustomLog logs/vhost-access_log logfmtname
# copy response-header value to note
Header note X-Username username
# unset response-header so client won't get it
Header unset X-Username
- 1. Node.js http मूल auth
- 2. nginx समूह http auth
- 3. HTTP मूल एथ उपयोगकर्ता नाम
- 4. ब्राउज़र के बिना प्रोग्रामिक रूप से HTTP सत्र जीवित रखें
- 5. ओएस उपयोगकर्ता नाम/पासवर्ड के साथ PHP में प्रमाणीकरण?
- 6. Django auth उपयोगकर्ता ईमेल क्षेत्र
- 7. Django auth: अधिकतम उपयोगकर्ता नाम की लंबाई बढ़ाना
- 8. HTTP रखें जीवित रखें और टीसीपी जीवित रखें
- 9. PHP/MySQL/Apache
- 10. आईपी देश php या apache
- 11. प्रमाण पत्र के बिना डब्ल्यूसीएफ उपयोगकर्ता नाम
- 12. एक XElement के साथ और नाम के बिना नामस्थान जोड़े
- 13. PHP/apache के साथ कच्चे HTTP अनुरोध डेटा को मैं कैसे एक्सेस कर सकता हूं?
- 14. nginx/apache/php बनाम nginx/php
- 15. django auth
- 16. उपयोगकर्ता नाम
- 17. Apache error_log और access_log को स्टोर करने के लिए क्या NoSQL समाधान सबसे अच्छा है? कैसंद्रा या मोंगो डीबी?
- 18. किसी उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड के साथ PHP का उपयोग करके बाहरी रूप से फेसबुक स्थिति अपडेट करें
- 19. http auth UI ब्राउज़र में इतना खराब क्यों है?
- 20. Windows Auth और Forms Auth उपयोगकर्ताओं के बीच अंतर करें जब दावा आधारित प्रमाणीकरण
- 21. "PHP के साथ HTTP प्रमाणीकरण" के लाभ
- 22. सिगविन के साथ गिट - उपयोगकर्ता नाम
- 23. सिमलिंक रिज़ॉल्यूशन के बिना पूर्ण पथ/उपयोगकर्ता को होम निर्देशिका में रखें
- 24. PHP: मुझे याद रखें और सुरक्षा?
- 25. php
- 26. PHP में HTTP और HTTPS में कुकी
- 27. स्वचालित साउंडक्लाउड PHP एपीआई प्रमाणीकरण उपयोगकर्ता इंटरैक्शन के बिना
- 28. setugid() apache और django
- 29. डब्ल्यूसीएफ में कस्टम बाइंडिंग का उपयोग कैसे करें और उपयोगकर्ता नाम क्लाइंट क्रेडेंशियल्स के साथ संदेश सुरक्षा मोड रखें?
- 30. preg_match() और उपयोगकर्ता नाम
मैं प्रतिक्रिया हेडर), यहाँ यह करने के लिए एक रास्ता है ऐसा मत सोचो कि यह अच्छा विचार है। एक अलग लॉगफाइल का उपयोग क्यों नहीं करें? –
क्योंकि मैं AWStats जैसे टूल के साथ सरल आंकड़े करना चाहता हूं। – chiborg