Goetz Lohmann schrieb:
> Shams schrieb:
>
>>Hi,
>>
>>i've written a secure PHP login script which will allow users to login to a
>>directory such as this:
>>
>>smezone.com/members/index.php
>>
>>however, how do I restrict people from accessing HTML files in that
>>directory (which they can easily do so by typing the URL into their
>>browser), such as:
>>
>>smezone.com/members/document1.html
>>
>>?
>>
>>Since its a regular HTML files (and we have lots), I can't check whether the
>>user has a valid session as I would do in a PHP file.
>>
>
>
> if you are using linux & apache ... just use a .htaccess file like the one below
>
> AuthUserFile /usr/home/.htpasswd
> AuthName "Secret Area"
> AuthType Basic
> <FilesMatch "\.(gif|jpe?g|png|htm|html)$">
> require valid-user
> </FilesMatch>
>
> with this you restrict access only to users listet in the /usr/home/.htpasswd
> files which look like
>
> user1:668c1d6Hc6yCg
> test:85FRBo8cHrAZc
>
> the code after ":" is a MD5 key
> the FilesMatch mean that all files ending with .gif,.html,.. is restricted and
> .php is not.
>
> in a php file you now can read the authentications from a user and compare it
> with the /usr/home/.htpasswd entrys.
>
> <?php
> ...
> if (!isset($PHP_AUTH_USER)) {
> // $PHP_AUTH_USER is empty ... no login
> header('WWW-Authenticate: Basic realm="My Private Stuff"');
> header('HTTP/1.0 401 Unauthorized');
> echo 'Authorization Required.';
> exit;
> }
> // If not empty, check authentication ...
> else {
> if ($PHP_AUTH_USER==$username && $PHP_AUTH_PW==$mypasswd) {
> echo "<P>Your Login is OK";
> ?>
> ...
> <?php
> } else {
> echo "<P>wrong login !";
> }
> }
> ?>
>
> note that the the /usr/home/.htpasswd file must include all usernames and
> passwords as MD5. You can create a line of this file with:
>
> <?php
> echo "$username:".md5($mypasswd);
> ?>
>
> maybe you also can use "mod_auth_db" ... but this is apache specific so
> take a look at http://httpd.apache.org/docs/mod/core.html
ups ... dont use the default md5() function cause it is not equal to that of
linux in .htpasswd files, use instead:
<?php
$password=crypt($PHP_AUTH_PW,substr($PHP_AUTH_PW,0,2));
?>
to generate a MD5 password
--
@ Goetz Lohmann, Germany | Web-Developer & Sys-Admin
\/ ------------------------------------------------------
() He's the fellow that people wonder what he does and
|| why the company needs him, until he goes on vacation.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php