2011-08-13 16 views
7

मैं http के माध्यम से एक छोटा सा प्रमाणीकरण को लागू करने की कोशिश की और जांच करने के लिए कि क्या यह ठीक से काम करेंगे नेट से कोड के इस बिट की नकल की:HTTP एथ - PHP_AUTH_USER सेट नहीं है?

<?php 
    if(!isset($_SERVER['PHP_AUTH_USER'])) { 
     header('WWW-Authenticate: Basic realm="My Realm"'); 
     header('HTTP/1.0 401 Unauthorized'); 
     echo 'Text to send if user hits Cancel button'; 
     exit; 
    } else { 
     echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; 
     echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; 
    } 
?> 

हालांकि, अपने ब्राउज़र हमेशा एक उपयोगकर्ता नाम और पासवर्ड के लिए पूछना, लेकिन कुछ भी आउटपुट कभी नहीं जब तक मैं रद्द नहीं करता। इसलिए मुझे लगता है कि $_SERVER['PHP_AUTH_USER'] कभी सेट नहीं है! क्या समस्या हो सकती है? मैं Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.7d DAV/2 Server के साथ उबंटू 10.04 एलटीएस सर्वर चला रहा हूं।

+0

किस ब्राउज़र का उपयोग करते हैं:

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

और अपनी स्क्रिप्ट की शुरुआत में इस जोड़ें:

.htaccess में इस जोड़ सकता हूँ? – Jonathon

+0

@ जोनी केओघ: सफारी 5 और फ़ायरफ़ॉक्स 5, हालांकि, एंड्रिया ने सीजीआई/एफसीजीआई की जांच करके समस्या को हल कर लिया है। –

उत्तर

15

phpinfo() चलाएं। यदि "सर्वर एपीआई" सीजीआई/एफसीजीआई है, तो आप इसे बहुत भूल सकते हैं क्योंकि PHP से HTTP ऑथ का उपयोग करने का कोई समझदार तरीका नहीं है।

+1

यही समस्या है! धन्यवाद - मेरी मदद की। –

15

पीएचपी-सीजीआई के लिए:

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

अपने उत्तर के लिए भगवान की स्तुति करो। जब मैंने अंततः मेरी समस्याओं का हल किया तो मैं अपनी कलाई को चाकू मार रहा था। – Reasurria

+0

ऐसा लगता है कि आपको इस लाइन की आवश्यकता नहीं है: 'सूची ($ _ सर्वर [' PHP_AUTH_USER '], $ _SERVER [' PHP_AUTH_PW ']) = विस्फोट (': ', base64_decode (substr ($ _ सर्वर [' HTTP_AUTHORIZATION '], 6))); ' – Shawn

+0

@ शॉन सूची ($ ... अनुरोध करने वाले ग्राहक के लिए है। – Azmeer

संबंधित मुद्दे