cvs: phpdoc-it /features http-auth.xml

From: Date: Mon, 02 Aug 2004 12:02:22 +0000
Subject: cvs: phpdoc-it /features http-auth.xml
Groups: php.doc.it 
Request: Send a blank email to doc-it+get-625@lists.php.net to get a copy of this message
darvina Mon Aug 2 08:02:22 2004 EDT Modified files: /phpdoc-it/features http-auth.xml Log: Update to En 1.40 http://cvs.php.net/diff.php/phpdoc-it/features/http-auth.xml?r1=1.13&r2=1.14&ty=u Index: phpdoc-it/features/http-auth.xml diff -u phpdoc-it/features/http-auth.xml:1.13 phpdoc-it/features/http-auth.xml:1.14 --- phpdoc-it/features/http-auth.xml:1.13 Tue Sep 24 17:56:58 2002 +++ phpdoc-it/features/http-auth.xml Mon Aug 2 08:02:22 2004 @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- EN-Revision: 1.28 Maintainer: cortesi Status: ready --> +<!-- EN-Revision: 1.40 Maintainer: cortesi Status: ready --> +<!-- CREDITS: matteobug --> <chapter id="features.http-auth"> <title>Autenticazione HTTP usando PHP</title> <simpara> - I meccanismi di Autenticazione HTTP sono disponibili in PHP solo quando questo + I meccanismi di Autenticazione <acronym>HTTP</acronym> sono disponibili in PHP solo quando questo viene usato come un modulo di Apache ed esso non è quindi disponibile nella versione CGI. In uno script PHP modulo di Apache, &egrave; possibile usare la funzione <function>header</function> per inviare un messaggio di "Authentication Required" @@ -13,7 +14,7 @@ l'URL contenente lo script PHP verrà richiamato nuovamente usando le <link linkend="reserved.variables">variabili predefinite</link>, <varname>PHP_AUTH_USER</varname>, <varname>PHP_AUTH_PW</varname> e - <varname>PHP_AUTH_TYPE</varname> impostate con, rispettivamente: + <varname>AUTH_TYPE</varname> impostate con, rispettivamente: nome, password e tipo di autenticazione. Queste variabili predefinite possono essere trovate negli array <link linkend="reserved.variables.server">$_SERVER</link> e <varname>$HTTP_SERVER_VARS</varname>. Solamente il tipo di autenticazione "Basic" @@ -26,7 +27,7 @@ <para> Le <link linkend="language.variables.superglobals">variabili autoglobali</link>, come <link linkend="reserved.variables.server">$_SERVER</link>, esistono - in PHP dalla versione <ulink url="&url.php.release4.1.0;">4.1.0</ulink>. + a partire da PHP <ulink url="&url.php.release4.1.0;">4.1.0</ulink>. <varname>$HTTP_SERVER_VARS</varname> è disponibile a partire da PHP 3. </para> </note> @@ -84,12 +85,12 @@ </para> <simpara> - Al fine di prevenire che qualcuno scriva uno script che rivela + A partire da PHP 4.3.0, al fine di prevenire che qualcuno scriva uno script che rivela la password di una pagina che era stata autenticata tramite un tradizionale meccanismo esterno, le variabili PHP_AUTH non verranno impostate se è abilitata l'autenticazione esterna per quella determinata - pagina. In questo caso, la variabile <varname>REMOTE_USER</varname> può essere - usata per identificare un utente autenticato esternamente. Così, + pagina e &safemode; &egrave; abilitato. Ci&ograve; nonostante, la variabile <varname>REMOTE_USER</varname> può essere + usata per identificare un utente autenticato esternamente. Quindi, potete usare <varname>$_SERVER['REMOTE_USER']</varname>. </simpara> @@ -98,9 +99,6 @@ <para> PHP usa la presenza di una direttiva <literal>AuthType</literal> per determinare se viene utilizzata l'autenticazione esterna. - Evitare questa direttiva nel contesto dove si intende - usare l'autenticazione con PHP (altrimenti ogni tentativo di autenticazione - fallirà). </para> </note> @@ -118,8 +116,8 @@ </simpara> <para> <example> - <title>Esempio di Autenticazione HTTP che impone l'inserimento di nuovo username/password</title> - <programlisting role="php"> + <title>Esempio di Autenticazione HTTP che impone l'inserimento di nuovo username/password</title> + <programlisting role="php"> <![CDATA[ <?php function authenticate() { @@ -128,8 +126,9 @@ echo "Per poter accedere a questa risorsa occorre inserire una coppia login e password valide\n"; exit; } - - if (!isset($_SERVER['PHP_AUTH_USER']) || ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) { + + if (!isset($_SERVER['PHP_AUTH_USER']) || + ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) { authenticate(); } else { @@ -158,8 +157,29 @@ <simpara> Si noti anche che questo non funziona con il server IIS di Microsoft e con la versione CGI di PHP a causa di una limitazione di IIS. + Si noti anche che, prima di PHP 4.3.3, l'Autenticazione HTTP non funzionava + usando il server IIS di Microsoft e con la versione CGI di PHP a causa di una + limitazione di IIS. Al fine di farla funzionare in PHP 4.3.3+, + si deve modificare la vostra configurazione di IIS "Directory Security". Cliccare + su "Edit" e selezionare solo "Anonymous Access", tutti gli altri campi + dovrebbero essere lasciati deselezionati. </simpara> + <simpara> + Un'altra limitazione &egrave; che se si usa il modulo IIS (ISAPI) non si possono + usare le variabili <literal>PHP_AUTH_*</literal> ma, al contrario, la variabile + <literal>HTTP_AUTHORIZATION</literal> &egrave; disponibile. Per esempio, si consideri + il seguente codice: <literal>list($user, $pw) = explode(':', + base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));</literal> + </simpara> + <note> + <title>Nota su IIS:</title> + <simpara> + Al fine di fare funzionare la Autenticazione HTTP con IIS, la direttiva PHP + <link linkend="ini.cgi.rfc2616-headers">cgi.rfc2616_headers</link> deve + essere impostata al valore <literal>0</literal> (il valore predefinito). + </simpara> + </note> <note> <para> Se è abilitato <link linkend="ini.safe-mode">safe mode</link> viene

« previous php.doc.it (#625) next »